diff options
author | Ivan Habunek <ivan.habunek@gmail.com> | 2012-09-13 12:33:37 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2012-09-13 09:24:50 -0700 |
commit | 5cf89b4d28f281729549ed182ce48aaba6101928 (patch) | |
tree | 586e82ece11af3b35e6da8707b6159bade26d06b /packaging | |
parent | 41d3a11ee3d793e7a20a85baf66c18b3dca431a4 (diff) | |
download | subsurface-5cf89b4d28f281729549ed182ce48aaba6101928.tar.gz |
Created a modern windows installer script
The existing windows installer looks very archaic and offers very few
configuration options. This script offers the following benefits:
* A modern appearence using NSIS Modern UI 2.0
* Shows the GPL license before install
* User can choose the target install folder
* Stores chosen installation folder in registry
* When installing a newer version on top of existing one, the existing
installation folder is offered by default
* It is possible to opt out of creating start menu shortcuts
Additional bug fixes:
* Added iconv.dll which was missing from the installer
* Replaced all path separators with backwars slashes, so that the script
works on both linux and windows
Signed-Off-By: Ivan Habunek <ivan.habunek@gmail.com>
Cleaned up whitespace
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'packaging')
-rw-r--r-- | packaging/windows/subsurface.nsi | 246 |
1 files changed, 148 insertions, 98 deletions
diff --git a/packaging/windows/subsurface.nsi b/packaging/windows/subsurface.nsi index 280991f69..93bece426 100644 --- a/packaging/windows/subsurface.nsi +++ b/packaging/windows/subsurface.nsi @@ -1,105 +1,155 @@ -# this installer creator needs to be run with +# +# Subsurface NSIS installer script +# +# This installer creator needs to be run with: # makensis subsurface.nsi # -# it assumes that packaging/windows/dll is a symlink to +# It assumes that packaging/windows/dll is a symlink to # the directory in which the required Windows DLLs are installed # (in my case that's /usr/i686-w64-mingw32/sys-root/mingw/bin) # -# define the name of the installer -outfile "subsurface-installer.exe" -Name subsurface - -# some data for the package to identify itself -VIProductVersion "1.1.9.0" -VIAddVersionKey ProductName subsurface -VIAddVersionKey FileDescription "subsurface diving log program" -VIAddVersionKey LegalCopyright "GPL v.2" -VIAddVersionKey ProductVersion "1.1" -VIAddVersionKey FileVersion "1.1" - -# icon to use for the installer -Icon .\subsurface.ico - -# the installer needs to be run with admin privileges -RequestExecutionLevel admin - -# pop up a little dialog that tells the user that we're about to -# install subsurface -Function .onInit - MessageBox MB_YESNO "This will install subsurface. Do you wish to continue?" IDYES gogogo - Abort - gogogo: -FunctionEnd - -# define the directory to install to, the desktop in this case as specified -# by the predefined $DESKTOP variable -installDir "$PROGRAMFILES\subsurface" - -# default section + +#-------------------------------- +# Include Modern UI + + !include "MUI2.nsh" + +#-------------------------------- +# General + + !define VERSION "1.1" + + # Installer name and filename + Name "Subsurface" + Caption "Subsurface ${VERSION} Setup" + OutFile "subsurface-${VERSION}.exe" + + # Icon to use for the installer + !define MUI_ICON "subsurface.ico" + + # Default installation folder + InstallDir "$PROGRAMFILES\Subsurface" + + # Get installation folder from registry if available + InstallDirRegKey HKCU "Software\Subsurface" "" + + # Request application privileges + RequestExecutionLevel user + +#-------------------------------- +# Settings + + # Show a warn on aborting installation + !define MUI_ABORTWARNING + + # Defines the target start menu folder + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Subsurface" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + +#-------------------------------- +# Variables + + Var StartMenuFolder + +#-------------------------------- +# Pages + + # Installer pages + !insertmacro MUI_PAGE_LICENSE "..\..\gpl-2.0.txt" + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder + !insertmacro MUI_PAGE_INSTFILES + + # Uninstaller pages + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +#-------------------------------- +# Languages + + !insertmacro MUI_LANGUAGE "English" + +#-------------------------------- +# Default installer section + Section -# define the output path for this file -setOutPath $INSTDIR - -SetShellVarContext all - -# create directory in the Start menu -CreateDirectory "$SMPROGRAMS\subsurface" - -# create Start menu shortcut -createShortCut "$SMPROGRAMS\subsurface\subsurface.lnk" "$INSTDIR\subsurface.exe" - -#create uninstaller and corresponding shortcut in Start menu -writeUninstaller "$INSTDIR\subsurface-uninstall.exe" -createShortCut "$SMPROGRAMS\subsurface\uninstall-subsurface.lnk" "$INSTDIR\subsurface-uninstall.exe" - -# define what to install and place it in the output path -file /oname=subsurface.exe ../../subsurface.exe -file /oname=subsurface.ico subsurface.ico -file /oname=subsurface.svg ../../subsurface.svg -file /oname=libatk-1.0-0.dll dll/libatk-1.0-0.dll -file /oname=libcairo-2.dll dll/libcairo-2.dll -file /oname=libdivecomputer-0.dll dll\libdivecomputer-0.dll -file /oname=libffi-5.dll dll\libffi-5.dll -file /oname=libfontconfig-1.dll dll\libfontconfig-1.dll -file /oname=libfreetype-6.dll dll\libfreetype-6.dll -file /oname=libgdk_pixbuf-2.0-0.dll dll\libgdk_pixbuf-2.0-0.dll -file /oname=libgdk-win32-2.0-0.dll dll\libgdk-win32-2.0-0.dll -file /oname=libgio-2.0-0.dll dll\libgio-2.0-0.dll -file /oname=libglib-2.0-0.dll dll\libglib-2.0-0.dll -file /oname=libgmodule-2.0-0.dll dll\libgmodule-2.0-0.dll -file /oname=libgobject-2.0-0.dll dll\libgobject-2.0-0.dll -file /oname=libgthread-2.0-0.dll dll\libgthread-2.0-0.dll -file /oname=libgtk-win32-2.0-0.dll dll\libgtk-win32-2.0-0.dll -file /oname=libintl-8.dll dll\libintl-8.dll -file /oname=libjasper-1.dll dll\libjasper-1.dll -file /oname=libjpeg-8.dll dll\libjpeg-8.dll -file /oname=libpango-1.0-0.dll dll\libpango-1.0-0.dll -file /oname=libpangocairo-1.0-0.dll dll\libpangocairo-1.0-0.dll -file /oname=libpangoft2-1.0-0.dll dll\libpangoft2-1.0-0.dll -file /oname=libpangowin32-1.0-0.dll dll\libpangowin32-1.0-0.dll -file /oname=libpixman-1-0.dll dll\libpixman-1-0.dll -file /oname=libpng15-15.dll dll\libpng15-15.dll -file /oname=libtiff-5.dll dll\libtiff-5.dll -file /oname=libxml2-2.dll dll\libxml2-2.dll -file /oname=libxslt-1.dll dll\libxslt-1.dll -file /oname=pthreadGC2.dll dll\pthreadGC2.dll -file /oname=zlib1.dll dll\zlib1.dll -file /oname=libusb-1.0.dll dll\libusb-1.0.dll -file /oname=SuuntoSDM.xslt ../../xslt/SuuntoSDM.xslt -file /oname=jdivelog2subsurface.xslt ../../xslt/jdivelog2subsurface.xslt -sectionEnd - -section "uninstall" - SetShellVarContext all - delete "$INSTDIR\subsurface-uninstall.exe" - delete "$INSTDIR\*.*" - RMDir "$INSTDIR" - delete "$SMPROGRAMS\subsurface\uninstall-subsurface.lnk" - delete "$SMPROGRAMS\subsurface\subsurface.lnk" - RMDir "$SMPROGRAMS\subsurface" - - MessageBox MB_YESNO "Do you wish to keep subsurface's registry settings?" IDYES end - DeleteRegKey HKCU "SOFTWARE\subsurface" - end: -sectionEnd + # Installation path + SetOutPath "$INSTDIR" + + # Files to include in installer + file /oname=subsurface.exe ..\..\subsurface.exe + file /oname=subsurface.ico subsurface.ico + file /oname=subsurface.svg ..\..\subsurface.svg + file /oname=libatk-1.0-0.dll dll\libatk-1.0-0.dll + file /oname=libcairo-2.dll dll\libcairo-2.dll + file /oname=libdivecomputer-0.dll dll\libdivecomputer-0.dll + file /oname=libffi-6.dll dll\libffi-6.dll + file /oname=libfontconfig-1.dll dll\libfontconfig-1.dll + file /oname=libfreetype-6.dll dll\libfreetype-6.dll + file /oname=libgdk_pixbuf-2.0-0.dll dll\libgdk_pixbuf-2.0-0.dll + file /oname=libgdk-win32-2.0-0.dll dll\libgdk-win32-2.0-0.dll + file /oname=libgio-2.0-0.dll dll\libgio-2.0-0.dll + file /oname=libglib-2.0-0.dll dll\libglib-2.0-0.dll + file /oname=libgmodule-2.0-0.dll dll\libgmodule-2.0-0.dll + file /oname=libgobject-2.0-0.dll dll\libgobject-2.0-0.dll + file /oname=libgthread-2.0-0.dll dll\libgthread-2.0-0.dll + file /oname=libgtk-win32-2.0-0.dll dll\libgtk-win32-2.0-0.dll + file /oname=libintl-8.dll dll\libintl-8.dll + file /oname=libjasper-1.dll dll\libjasper-1.dll + file /oname=libjpeg-62.dll dll\libjpeg-62.dll + file /oname=libpango-1.0-0.dll dll\libpango-1.0-0.dll + file /oname=libpangocairo-1.0-0.dll dll\libpangocairo-1.0-0.dll + file /oname=libpangoft2-1.0-0.dll dll\libpangoft2-1.0-0.dll + file /oname=libpangowin32-1.0-0.dll dll\libpangowin32-1.0-0.dll + file /oname=libpixman-1-0.dll dll\libpixman-1-0.dll + file /oname=libpng15-15.dll dll\libpng15-15.dll + file /oname=libtiff-3.dll dll\libtiff-3.dll + file /oname=libxml2-2.dll dll\libxml2-2.dll + file /oname=libxslt-1.dll dll\libxslt-1.dll + file /oname=pthreadGC2.dll dll\pthreadGC2.dll + file /oname=zlib1.dll dll\zlib1.dll + file /oname=libusb-1.0.dll dll\libusb-1.0.dll + file /oname=SuuntoSDM.xslt ..\..\xslt\SuuntoSDM.xslt + file /oname=jdivelog2subsurface.xslt ..\..\xslt\jdivelog2subsurface.xslt + file /oname=iconv.dll dll\iconv.dll + + # Store installation folder in registry + WriteRegStr HKCU "Software\Subsurface" "" $INSTDIR + + # Create shortcuts + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Subsurface.lnk" "$INSTDIR\subsurface.exe" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Subsurface.lnk" "$INSTDIR\Uninstall.exe" + !insertmacro MUI_STARTMENU_WRITE_END + + # Create the uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + +SectionEnd + +#-------------------------------- +# Uninstaller section + +Section "Uninstall" + + # Delete installed files + Delete "$INSTDIR\*.dll" + Delete "$INSTDIR\*.xslt" + Delete "$INSTDIR\subsurface.exe" + Delete "$INSTDIR\subsurface.ico" + Delete "$INSTDIR\subsurface.svg" + RMDir "$INSTDIR" + + # Remove shortcuts + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder + Delete "$SMPROGRAMS\$StartMenuFolder\Subsurface.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Subsurface.lnk" + RMDir "$SMPROGRAMS\$StartMenuFolder" + + # Remove registry entries + DeleteRegKey /ifempty HKCU "Software\Subsurface" + +SectionEnd |