Mercurial > sypikslang
view scripts/sypikslang.nsi @ 247:594c45f0f685
Don't reward science or schematics when we know everything
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sun, 13 May 2012 00:50:18 +0200 |
parents | a82cab951ce2 |
children |
line wrap: on
line source
; Compile with ./scripts/makensis ./scripts/sypikslang.nsi . ; You'll need to have previously run wine-py2exe !include "MUI.nsh" ; Application Details !define SY_VERSION "0.0.0" ; set by makensis scripts !define SY_UNPACK "sypikslang-${SY_VERSION}" !define DIST_FOLDER "../dist" Name "Sypikslang" OutFile "${DIST_FOLDER}\sypikslang-${SY_VERSION}.exe" InstallDir "$PROGRAMFILES\Sypikslang-${SY_VERSION}" ; Interface Settings !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\arrow-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\arrow-uninstall.ico" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\orange.bmp" !define MUI_HEADERIMAGE_UNBITMAP "${NSISDIR}\Contrib\Graphics\Header\orange-uninstall.bmp" ; Dependencies !define COMBINED_LICENSE "../LICENSE.txt" !define SY_ICON "../data/icons/icon.ico" !define SY_WINDOWS_ICON "data\icons\icon.ico" !define SY_PY2EXE_ZIP "sypikslang-${SY_VERSION}.zip" !define VCREDIST "vcredist_x86.exe" !define VCREDIST_KEY "{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}" !define UNINSTALLER "Uninstaller.exe" ; Pages !insertmacro MUI_PAGE_LICENSE "${COMBINED_LICENSE}" !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ; Languages !insertmacro MUI_LANGUAGE "English" ; Other Stuff Icon "${SY_ICON}" SetCompress off ; all the big stuff is already compressed ; Installer Sections Section "vcredist" SetOutPath "$INSTDIR" File "${DIST_FOLDER}\${VCREDIST}" ; Check if it's already installed by checking for the uninstall key ; Idea and key value to check taken post and comments at: ; http://blogs.msdn.com/b/astebner/archive/2009/01/29/9384143.aspx ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${VCREDIST_KEY}" UninstallString ; NSIS docs say if the key doesn't exist, we get an error and an empty string IfErrors install done install: ; Runs install with progress bar and no cancel button ; Details taken from ; http://blogs.msdn.com/b/astebner/archive/2010/10/18/9513328.aspx DetailPrint "Installing required MS runtime libraries" ExecWait "$INSTDIR/${VCREDIST} /qb!" done: DetailPrint "MS runtime libraries already installed, skipping" SectionEnd Section "Sypikslang" SetOutPath "$INSTDIR" WriteUninstaller "$INSTDIR\${UNINSTALLER}" File "${DIST_FOLDER}\${SY_PY2EXE_ZIP}" File "${SY_ICON}" ZipDLL::extractall "$INSTDIR\${SY_PY2EXE_ZIP}" "$INSTDIR" Delete "$INSTDIR\${SY_PY2EXE_ZIP}" CreateDirectory "$SMPROGRAMS\Sypikslang" # link.lnk target.exe # parameters icon.file icon_index_number start_options # keyboard_shortcut description CreateShortCut "$SMPROGRAMS\Sypikslang\Sypikslang ${SY_VERSION}.lnk" "$INSTDIR\${SY_UNPACK}\sypikslang.exe" \ "" "$INSTDIR\${SY_UNPACK}\${SY_WINDOWS_ICON}" "" SW_SHOWNORMAL \ "" "Sypikslang" CreateShortCut "$SMPROGRAMS\Sypikslang\Uninstall Sypikslang ${SY_VERSION}.lnk" "$INSTDIR\${UNINSTALLER}" \ "" "" "" SW_SHOWNORMAL \ "" "Uninstall Sypikslang" SectionEnd UninstallText "This will uninstall Sypikslang ${SY_VERSION}." UninstallIcon "${SY_ICON}" Section "Uninstall" ; Delete files not deleted during install Delete "$INSTDIR\${SY_ICON}" ; Remove py2exe folder RMDir /r /REBOOTOK "$INSTDIR\${SY_UNPACK}" ; Remove shortcut links Delete "$SMPROGRAMS\Sypikslang\Sypikslang ${SY_VERSION}.lnk" Delete "$SMPROGRAMS\Sypikslang\Uninstall Sypikslang ${SY_VERSION}.lnk" ; Remove shortcut folder if no links left IfFileExists "$SMPROGRAMS\Sypikslang\*.lnk" shortcuts_exist 0 RMDir /REBOOTOK "$SMPROGRAMS\Sypikslang" shortcuts_exist: ; Final Clean up (no point doing this while the uninstall is incomplete) RMDir /r /REBOOTOK $INSTDIR ; Offer to reboot if needed IfRebootFlag 0 noreboot MessageBox MB_YESNO "A reboot is required to finish the uninstallation. Do you wish to reboot now?" IDNO noreboot Reboot noreboot: ; TODO: We don't touch the vcredist stuff, since we can't tell a) if we were ; the ones who installed it and b) if anything else needs it. This may cause ; cruft on the users system, so should we tell the user? SectionEnd