Change some of the win32 build/installer scripts to support bundling GTK

in with the installer
This commit is contained in:
Andrew Resch 2012-03-04 16:41:13 -08:00
parent 911d583ff0
commit 954c0e2d4d
3 changed files with 7 additions and 54 deletions

View File

@ -18,25 +18,11 @@ The GTK+ runtime libraries are installed separately (anywhere, in the Windows PA
C:\Python26\Lib\site-packages\bbfreeze-0.96.5-py2.6-win32.egg\bbfreeze\recipes.py
Right after the 'prefixes' part of the Python function 'recipe_gtk_and_friends':
# Exclude DLL files in the GTK+ runtime bin dir.
# The GTK+ runtime must be in the PATH or copied to the application dir,
# so there is no point in including these DLLs with the bbfreeze output.
#
prefixes2 = ["iconv", "intl", "zlib1", "libpng12", "libatk", "libcairo", "libfont", "libfree", "libtiff", "libgio"]
for p in prefixes2:
if x.identifier.startswith(p):
print "SKIPPING:", x
x.__class__ = ExcludedModule
retval = True
break
The purpose is to avoid that bbfreeze copies DLLs from the GTK+ runtime bin directory.
Bbfreeze only copies a subset of the necessary DLLs (for some reason?). The cleanest
solution is to have the GTK+ runtime in a separate dir.
Right at the top of the Python function 'recipe_gtk_and_friends':
return True
We want to include all the gtk libraries in the installer so that users don't
require a separate GTK+ installation.
3) Edit the 'build_version' variable in the Python script:

View File

@ -38,7 +38,7 @@ icon.CopyIcons(dst+"deluge-gtk.exe", icon_path)
icon.CopyIcons(dst+"deluge-console.exe", icon_path)
# exclude files which are already included in GTK or Windows
excludeFiles = ("MSIMG32.dll", "MSVCR90.dll", "MSVCP90.dll", "POWRPROF.dll", "freetype*.dll", "iconv.dll", "intl.dll", "libatk*.dll", "libcairo*.dll", "libexpat*.dll", "libfontconfig*.dll", "libfreetype*.dll", "libgio*.dll", "libpng*.dll", "libtiff*.dll", "zlib1.dll")
excludeFiles = ("MSIMG32.dll", "MSVCR90.dll", "MSVCP90.dll", "POWRPROF.dll")
for file in excludeFiles:
for filename in glob.glob(dst + file):
print "removing file:", filename

View File

@ -33,7 +33,7 @@ SetCompressor lzma
###
# Script version; displayed when running the installer
!define DELUGE_INSTALLER_VERSION "0.4"
!define DELUGE_INSTALLER_VERSION "0.5"
# Deluge program information
!define PROGRAM_NAME "Deluge"
@ -43,10 +43,6 @@ SetCompressor lzma
# Python files generated with bbfreeze (without DLLs from GTK+ runtime)
!define DELUGE_PYTHON_BBFREEZE_OUTPUT_DIR "..\build-win32\deluge-bbfreeze-${PROGRAM_VERSION}"
# Installer for GTK+ 2.12 runtime; will be downloaded from deluge-torrent.org
!define DELUGE_GTK_DEPENDENCY "gtk2-runtime-2.16.6-2010-05-12-ash.exe"
# --- Interface settings ---
# Modern User Interface 2
@ -182,44 +178,15 @@ Section "Create magnet uri link association for Deluge" Section3
WriteRegStr HKCR "magnet\shell\open\command" "" '"$INSTDIR\deluge.exe" "%1"'
SectionEnd
# Install GTK+ 2.16
Section "GTK+ 2.16 runtime" Section4
GTK_install_start:
MessageBox MB_OK "You will now download and run the installer for the GTK+ 2.16 runtime. \
You must be connected to the internet before you press the OK button. \
The GTK+ runtime can be installed in any location, \
because the GTK+ installer adds the location to the global PATH variable. \
Please note that the GTK+ 2.16 runtime is not removed by the Deluge uninstaller. \
You must use the GTK+ 2.16 uninstaller if you want to remove it together with Deluge."
# Download GTK+ installer to TEMP dir
NSISdl::download http://download.deluge-torrent.org/windows/deps/${DELUGE_GTK_DEPENDENCY} "$TEMP\${DELUGE_GTK_DEPENDENCY}"
# Get return value (success, cancel, or string describing the network error)
Pop $2
StrCmp $2 "success" 0 GTK_download_error
ExecWait '"$TEMP\${DELUGE_GTK_DEPENDENCY}" /compatdlls=yes'
Goto GTK_install_exit
GTK_download_error:
MessageBox MB_ICONEXCLAMATION|MB_OK "Download of GTK+ 2.16 installer failed (return code: $2). \
You must install the GTK+ 2.16 runtime manually, or Deluge will fail to run on your system."
GTK_install_exit:
SectionEnd
LangString DESC_Section1 ${LANG_ENGLISH} "Install Deluge Bittorrent client."
LangString DESC_Section2 ${LANG_ENGLISH} "Select this option unless you have another torrent client which you want to use for opening .torrent files."
LangString DESC_Section3 ${LANG_ENGLISH} "Select this option to have Deluge handle magnet links."
LangString DESC_Section4 ${LANG_ENGLISH} "Download and install the GTK+ 2.16 runtime. \
This is skipped automatically if GTK+ is already installed."
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1)
!insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
!insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(DESC_Section3)
!insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(DESC_Section4)
!insertmacro MUI_FUNCTION_DESCRIPTION_END