summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
Diffstat (limited to 'win32')
-rwxr-xr-xwin32/Makefile.am4
-rwxr-xr-xwin32/README17
-rwxr-xr-xwin32/build-installer.sh260
-rwxr-xr-xwin32/gedit.iss.in60
-rwxr-xr-xwin32/querymodules.bat3
5 files changed, 344 insertions, 0 deletions
diff --git a/win32/Makefile.am b/win32/Makefile.am
new file mode 100755
index 00000000..7006780a
--- /dev/null
+++ b/win32/Makefile.am
@@ -0,0 +1,4 @@
+# Stuff to build the Windows installer:
+EXTRA_DIST = gedit.iss.in build-installer.sh querymodules.bat
+
+-include $(top_srcdir)/git.mk
diff --git a/win32/README b/win32/README
new file mode 100755
index 00000000..67d008cb
--- /dev/null
+++ b/win32/README
@@ -0,0 +1,17 @@
+To create the Windows installer for gedit, ideally all you have to do is to run
+the build-installer script, after having installed all dependencies to the
+correct places (that means precompiled ones to /, and self-built
+ones to /local/). Also, you will need to have Python at C:\Python25.
+The Inno Setup compiler (iscc) needs to be in your PATH.
+
+There are many paths hardcoded to fit my own build environment. Feel free to
+generalize the script, to make it more adaptive to other environments.
+
+The script takes an argument which is the revision number of the installer. If
+it is not given, then it uses 1 as revision number. The revision number should
+be increased every time the installer for the same gedit version is updated,
+and be reset to 1 for a new gedit version.
+
+Ignacio Casal Quinteiro <[email protected]>
+
+This script was based in Armin Burgmeier script for glom.
diff --git a/win32/build-installer.sh b/win32/build-installer.sh
new file mode 100755
index 00000000..8851500b
--- /dev/null
+++ b/win32/build-installer.sh
@@ -0,0 +1,260 @@
+#!/bin/sh
+echo "You need to execute this on a Windows machine within msys (http://www.mingw.org)"
+echo "You also need InnoSetup (http://www.innosetup.org) with iscc in your PATH"
+echo "You need to have python, pygobject, pycairo and pygtk installed into C:\\Python26"
+echo "Make sure gedit and all its dependencies have been installed correctly to /local"
+echo "You can specify the paths by yourself:"
+echo "./build-installer.sh VERSION GTK_PREFIX GEDIT_PREFIX GTKSOURCEVIEW_PREFIX PYTHON_PREFIX MISC_PREFIX ASPELL_PREFIX WINDOWS_PREFIX"
+
+# we assume glib, gtk etc were installed in the root while gedit and gtksourceview
+# in /local
+#FIXME we need to figure out a way for autodetecting this
+if test "$#" = 7; then
+ _gtk_prefix="$2"
+ _gtksourceview_prefix="$3"
+ _gedit_prefix="$4"
+ _python_prefix="$5"
+ _misc_prefix="$6"
+ _aspell_prefix="$7"
+ _windows_prefix="$8"
+else
+ _gtk_prefix="/c/gtk"
+ _gtksourceview_prefix="/usr/local"
+ _gedit_prefix="/usr/local"
+ _python_prefix="/c/Python26"
+ _misc_prefix="/usr"
+ _aspell_prefix="/c/Aspell"
+ _windows_prefix="/c/WINDOWS/system32"
+fi
+
+if test "$1" = '--help'; then
+ echo "VERSION: The version of the installer"
+ echo "GTK_PREFIX: The path for gtk, by default /c/gtk"
+ echo "GEDIT_PREFIX: The path for gedit, by default /usr/local"
+ echo "GTKSOURCEVIEW_PREFIX: The path for gtksourceview, by default /usr/local"
+ echo "PYTHON_PREFIX: The path for python, by default /c/Python25"
+ echo "MISC_PREFIX: The path for the rest of dependencies: i.e: enchant: by default /usr"
+ echo "ASPELL_PREFIX: The path for Aspell: by default /c/Aspell"
+ exit
+fi
+
+revision=$1
+if test "$revision" = ''; then
+ echo "Installer revision not provided, assuming 1"
+ revision=1
+fi
+
+echo "Cleanup..."
+if test -e installer; then
+ rm installer -Rf || exit;
+fi
+
+mkdir -p installer || exit
+
+echo "Copying the docs..."
+mkdir -p installer/gedit/share/doc || exit
+cp ../COPYING installer/gedit/share/doc || exit
+cp ../AUTHORS installer/gedit/share/doc || exit
+cp ../README installer/gedit/share/doc || exit
+
+echo "Copying gtk DLL files..."
+
+#----------------------------- gtk ------------------------------------
+mkdir -p installer/gtk/bin
+
+cp "${_gtk_prefix}/bin/libglib-2.0-0.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libgio-2.0-0.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libgmodule-2.0-0.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libgobject-2.0-0.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libgthread-2.0-0.dll" installer/gtk/bin || exit
+
+# TODO: We can probably omit these, as we do not use g_spawn on Windows anymore
+cp "${_gtk_prefix}/bin/gspawn-win32-helper.exe" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/gspawn-win32-helper-console.exe" installer/gtk/bin || exit
+
+cp "${_gtk_prefix}/bin/libatk-1.0-0.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libcairo-2.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libpng12-0.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libjpeg-7.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libtiff-3.dll" installer/gtk/bin || exit
+
+cp "${_gtk_prefix}/bin/libpango-1.0-0.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libpangocairo-1.0-0.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libpangowin32-1.0-0.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libpangoft2-1.0-0.dll" installer/gtk/bin || exit
+
+cp "${_gtk_prefix}/bin/libgdk-win32-2.0-0.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libgdk_pixbuf-2.0-0.dll" installer/gtk/bin || exit
+
+cp "${_gtk_prefix}/bin/libgtk-win32-2.0-0.dll" installer/gtk/bin || exit
+
+cp "${_gtk_prefix}/bin/libgailutil-18.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libfontconfig-1.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/libexpat-1.dll" installer/gtk/bin || exit
+cp "${_gtk_prefix}/bin/freetype6.dll" installer/gtk/bin || exit
+
+echo "Stripping DLL files..."
+strip installer/gtk/bin/*.dll || exit
+strip installer/gtk/bin/*.exe || exit
+
+#Copy zlib1 after stripping, as we strip this library it makes crash gedit
+cp "${_gtk_prefix}/bin/zlib1.dll" installer/gtk/bin || exit
+
+#-------------------------------- gedit ------------------------------------
+echo "Copying misc DLL files..."
+mkdir -p installer/gedit/bin
+
+cp "${_misc_prefix}/bin/libgettextpo-0.dll" installer/gedit/bin || exit
+
+cp "${_misc_prefix}/bin/libMateCORBA-2-0.dll" installer/gedit/bin || exit
+cp "${_misc_prefix}/bin/libMateCORBACosNaming-2-0.dll" installer/gedit/bin || exit
+cp "${_misc_prefix}/bin/libMateCORBA-imodule-2-0.dll" installer/gedit/bin || exit
+
+cp "${_misc_prefix}/bin/libmateconf-2-4.dll" installer/gedit/bin || exit
+
+cp "${_misc_prefix}/bin/libenchant.dll" installer/gedit/bin || exit
+cp "${_misc_prefix}/bin/libsoup-2.4-1.dll" installer/gedit/bin || exit
+
+cp "${_gtksourceview_prefix}/bin/libgtksourceview-2.0-0.dll" installer/gedit/bin || exit
+
+echo "Stripping DLL files..."
+strip installer/gedit/bin/*.dll || exit
+
+
+# stripping libxml2.dll renders it unusable (although not changing it in size).
+# We therefore copy it after having stripped the rest. Same with the other DLLs
+# here. Perhaps those were built with MSVC.
+cp "${_misc_prefix}/bin/libxml2-2.dll" installer/gedit/bin || exit
+cp "${_misc_prefix}/bin/intl.dll" installer/gedit/bin || exit
+cp "${_misc_prefix}/bin/iconv.dll" installer/gedit/bin || exit
+
+
+echo "Copying Python..."
+
+# TODO: Find out Windows directory somehow, we should use WINDIR substuting c:\?
+cp ${_windows_prefix}/python26.dll installer/gedit/bin || exit
+
+# We through all python modules into python/. gedit sets PYTHONPATH accordingly.
+mkdir -p installer/python || exit
+
+# Copy the dlls needed to run python
+cp -R ${_python_prefix}/DLLs installer/python || exit
+
+# TODO: Perhaps some scripts need more python modules.
+mkdir -p installer/python/Lib || exit
+cp ${_python_prefix}/Lib/*.py installer/python/Lib || exit
+
+mkdir -p installer/python/Lib/encodings || exit
+cp ${_python_prefix}/Lib/encodings/*.py installer/python/Lib/encodings || exit
+
+cp -R ${_python_prefix}/Lib/site-packages installer/python/Lib || exit
+
+cp -R ${_python_prefix}/Lib/xml installer/python/Lib || exit
+
+mkdir -p installer/python/Lib/sqlite3 || exit
+cp ${_python_prefix}/Lib/sqlite3/*.py installer/python/Lib/sqlite3 || exit
+
+echo "Copying modules..."
+
+cp "${_gtk_prefix}/bin/gtk-query-immodules-2.0.exe" installer/gtk/bin || exit
+
+mkdir -p installer/gtk/lib/gtk-2.0/2.10.0/engines || exit
+cp "${_gtk_prefix}/lib/gtk-2.0/2.10.0/engines/libwimp.dll" installer/gtk/lib/gtk-2.0/2.10.0/engines || exit
+strip installer/gtk/lib/gtk-2.0/2.10.0/engines/libwimp.dll || exit
+
+mkdir -p installer/gtk/lib/gtk-2.0/2.10.0/loaders || exit
+cp "${_gtk_prefix}/lib/gtk-2.0/2.10.0/loaders/"*.dll installer/gtk/lib/gtk-2.0/2.10.0/loaders || exit
+strip installer/gtk/lib/gtk-2.0/2.10.0/loaders/*.dll || exit
+cp "${_gtk_prefix}/bin/gdk-pixbuf-query-loaders.exe" installer/gtk/bin || exit
+
+# Gail
+mkdir -p installer/gtk/lib/gtk-2.0/modules || exit
+cp "${_gtk_prefix}/lib/gtk-2.0/modules/libgail.dll" installer/gtk/lib/gtk-2.0/modules || exit
+strip installer/gtk/lib/gtk-2.0/modules/libgail.dll
+
+# TODO: Can we omit this?
+mkdir -p installer/gtk/etc/gtk-2.0
+#cp "${_gtk_prefix}/etc/gtk-2.0/gtk.immodules" installer/etc/gtk-2.0 || exit -1
+cp "${_gtk_prefix}/etc/gtk-2.0/gdk-pixbuf.loaders" installer/gtk/etc/gtk-2.0 || exit -1
+
+mkdir -p installer/gtk/share/themes || exit
+cp -R "${_gtk_prefix}/share/themes/MS-Windows" installer/gtk/share/themes || exit
+mkdir -p installer/gtk/etc/gtk-2.0 || exit
+echo "gtk-theme-name = \"MS-Windows\"" > installer/gtk/etc/gtk-2.0/gtkrc || exit
+
+# Enchant
+mkdir -p installer/gedit/lib/enchant || exit
+cp "${_misc_prefix}/lib/enchant/"* installer/gedit/lib/enchant || exit
+strip installer/gedit/lib/enchant/*.dll || exit
+mkdir -p installer/gedit/share/enchant || exit
+cp "${_misc_prefix}/share/enchant/"* installer/gedit/share/enchant || exit
+
+# Iso codes
+mkdir -p installer/gedit/share/iso-codes || exit
+cp "${_misc_prefix}/share/iso-codes/"* installer/gedit/share/iso-codes || exit
+mkdir -p installer/gedit/share/xml/iso-codes || exit
+cp "${_misc_prefix}/share/xml/iso-codes/"* installer/gedit/share/xml/iso-codes || exit
+
+echo "Copying locales..."
+
+# We need to keep the locale files from share/locale in share/locale and those
+# from lib/locale in lib/locale:
+mkdir -p installer/locale/share/ || exit
+cp "${_gtk_prefix}/share/locale" installer/locale/share/ -R || exit
+cp "${_gedit_prefix}/share/locale" installer/locale/share/ -R || exit
+cp "${_misc_prefix}/share/locale" installer/locale/share/ -R || exit
+
+find installer/locale/share/locale/ -type f | grep -v atk10.mo | grep -v gtk20.mo | grep -v MateConf2.mo | grep -v glib20.mo | grep -v gedit.mo | grep -v gtk20.mo | grep -v gtk20-properties.mo | grep -v gtksourceview-2.0.mo | grep -v iso_*.mo | xargs rm
+find installer/locale/share/locale -type d | xargs rmdir -p --ignore-fail-on-non-empty
+
+echo "Copying executable..."
+cp "${_gedit_prefix}/bin/gedit.exe" installer/gedit/bin || exit
+strip installer/gedit/bin/gedit.exe || exit
+
+
+echo "Copying shared data (ui files, icons, etc.)..."
+
+mkdir -p installer/gedit/share/gtksourceview-2.0 || exit
+cp -R "${_gtksourceview_prefix}/share/gtksourceview-2.0/language-specs" installer/gedit/share/gtksourceview-2.0 || exit
+cp -R "${_gtksourceview_prefix}/share/gtksourceview-2.0/styles" installer/gedit/share/gtksourceview-2.0 || exit
+
+#GtkBuilder files and xml files
+mkdir -p installer/gedit/share/gedit-2/ui || exit
+cp "${_gedit_prefix}/share/gedit-2/ui/"* installer/gedit/share/gedit-2/ui || exit
+
+#Icons & logo
+mkdir -p installer/gedit/share/gedit-2/icons || exit
+cp "${_gedit_prefix}/share/gedit-2/icons/gedit-plugin.png" installer/gedit/share/gedit-2/icons || exit
+mkdir -p installer/gedit/share/gedit-2/logo || exit
+cp "${_gedit_prefix}/share/gedit-2/logo/gedit-logo.png" installer/gedit/share/gedit-2/logo || exit
+
+#Plugins
+mkdir -p installer/gedit/share/gedit-2/plugins || exit
+cp -R "${_gedit_prefix}/share/gedit-2/plugins/"* installer/gedit/share/gedit-2/plugins || exit
+mkdir -p installer/gedit/lib/gedit-2/plugins || exit
+cp -R "${_gedit_prefix}/lib/gedit-2/plugins/"* installer/gedit/lib/gedit-2/plugins || exit
+mkdir -p installer/gedit/lib/gedit-2/plugin-loaders || exit
+cp -R "${_gedit_prefix}/lib/gedit-2/plugin-loaders/"* installer/gedit/lib/gedit-2/plugin-loaders || exit
+
+#MateConf
+mkdir -p installer/gedit/etc/mateconf/schemas || exit
+cp "${_gedit_prefix}/etc/mateconf/schemas/"* installer/gedit/etc/mateconf/schemas || exit
+cp -R "${_misc_prefix}/etc/mateconf/"* installer/gedit/etc/mateconf/ || exit
+mkdir -p installer/gedit/lib/MateConf/2
+cp "${_misc_prefix}/lib/MateConf/2/"* installer/gedit/lib/MateConf/2 || exit
+strip installer/gedit/lib/MateConf/2/*.dll || exit
+mkdir -p installer/gedit/libexec || exit
+cp "${_misc_prefix}/libexec/mateconfd-2.exe" installer/gedit/libexec || exit
+
+#Aspell
+mkdir -p installer/gedit/data || exit
+cp "${_aspell_prefix}/data/"* installer/gedit/data || exit
+cp "${_aspell_prefix}/bin/aspell-15.dll" installer/gedit/bin/libaspell-15.dll || exit
+
+echo "Creating installer..."
+
+perl -pe "s/INSTALLERREVISION/$revision/" gedit.iss > installer/gedit.iss || exit
+#cp installer || exit
+iscc installer/gedit.iss || exit
+
+echo "Done"
diff --git a/win32/gedit.iss.in b/win32/gedit.iss.in
new file mode 100755
index 00000000..8b026efa
--- /dev/null
+++ b/win32/gedit.iss.in
@@ -0,0 +1,60 @@
+[Setup]
+AppName=gedit
+AppVerName=gedit @VERSION@
+DefaultDirName={pf}\gedit
+DefaultGroupName=gedit
+UninstallDisplayIcon={app}\gedit.exe
+Uninstallable=yes
+AppPublisher=MATE
+AppPublisherURL=http:\\www.gedit.org\
+AppVersion=@VERSION@
+OutputBaseFilename=gedit-setup-@VERSION@-INSTALLERREVISION
+LicenseFile=gedit\share\doc\COPYING
+
+[Components]
+Name: "gtk"; Description: "GTK+ runtime environment"; Types: full compact custom; Flags: fixed
+Name: "main"; Description: "Gedit"; Types: full compact custom; Flags: fixed
+
+; TODO: Enable languages separately
+Name: "python"; Description: "Python runtime and modules"; Types: full compact custom; Flags: fixed
+Name: "locale"; Description: "Translations"; Types: full compact custom; Flags: fixed
+
+[Tasks]
+Name: common; Description: "For all users"; Components: main; Flags: exclusive
+Name: user; Description: "For the current user only"; Components: main; Flags: exclusive unchecked
+Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
+Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
+
+[Icons]
+; Common task icons
+Name: "{commonprograms}\{groupname}\gedit"; Filename: "{app}\bin\gedit.exe"; Tasks: common
+Name: "{commonprograms}\{groupname}\Uninstall gedit"; Filename: "{uninstallexe}"; Tasks: common
+Name: "{commondesktop}\gedit"; Filename: "{app}\bin\gedit.exe"; Tasks: desktopicon
+Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\gedit"; Filename: "{app}\bin\gedit.exe"; Tasks: quicklaunchicon
+
+; User task icons
+Name: "{userprograms}\{groupname}\gedit"; Filename: "{app}\bin\gedit.exe"; Tasks: user
+Name: "{userprograms}\{groupname}\Uninstall gedit"; Filename: "{uninstallexe}"; Tasks: user
+
+[Files]
+
+; All files
+Source: "gtk\*"; DestDir: "{app}\"; Components: gtk; Flags: recursesubdirs
+Source: "gedit\*"; DestDir: "{app}\"; Components: main; Flags: recursesubdirs
+Source: "python\*"; DestDir: "{app}\bin"; Components: python; Flags: recursesubdirs
+Source: "locale\*"; DestDir: "{app}\"; Components: locale; Flags: recursesubdirs
+
+[Run]
+Filename: "{app}\bin\querymodules.bat"; StatusMsg: "Querying modules..."; Flags: runhidden
+
+[Code]
+{ Remove generated files not generated by the installer }
+
+// Skip Components selection, all components are required anyway
+function ShouldSkipPage(CurPageID: Integer): Boolean;
+begin
+ if CurPageID = wpSelectComponents then
+ Result := True
+ else
+ Result := False;
+end;
diff --git a/win32/querymodules.bat b/win32/querymodules.bat
new file mode 100755
index 00000000..0cea96f6
--- /dev/null
+++ b/win32/querymodules.bat
@@ -0,0 +1,3 @@
+rem pango-querymodules.exe > ../etc/pango/pango.modules
+gdk-pixbuf-query-loaders.exe > ../etc/gtk-2.0/gdk-pixbuf.loaders
+gtk-query-immodules-2.0.exe > ../etc/gtk-2.0/gtk.immodules