comparison packaging/nagslang.nsi @ 669:30ae339d7224

py2exe packaging
author Neil Muller <drnlmuller@gmail.com>
date Sun, 08 Sep 2013 17:47:25 +0200
parents
children 03fc9cf0f556
comparison
equal deleted inserted replaced
668:700ebab5240a 669:30ae339d7224
1 ; Compile with ./scripts/makensis ./scripts/nagslang.nsi .
2 ; You'll need to have previously run wine-py2exe
3
4 !include "MUI.nsh"
5
6 ; Application Details
7
8 !define WS_VERSION "0.0.0" ; set by makensis scripts
9 !define WS_UNPACK "nagslang-${WS_VERSION}"
10 !define DIST_FOLDER "../dist"
11
12 Name "Werewolf Sonata"
13 OutFile "${DIST_FOLDER}\nagslang-${WS_VERSION}.exe"
14 InstallDir "$PROGRAMFILES\Werewolf-Sonata-${WS_VERSION}"
15
16 ; Interface Settings
17
18 !define MUI_ABORTWARNING
19
20 !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\arrow-install.ico"
21 !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\arrow-uninstall.ico"
22
23 !define MUI_HEADERIMAGE
24 !define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\orange.bmp"
25 !define MUI_HEADERIMAGE_UNBITMAP "${NSISDIR}\Contrib\Graphics\Header\orange-uninstall.bmp"
26
27 ; Dependencies
28
29 !define COMBINED_LICENSE "../LICENSE.txt"
30 !define WS_PY2EXE_ZIP "nagslang-${WS_VERSION}.zip"
31 !define VCREDIST "vcredist_x86.exe"
32 !define VCREDIST_KEY "{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}"
33 !define UNINSTALLER "Uninstaller.exe"
34
35 ; Pages
36
37 !insertmacro MUI_PAGE_LICENSE "${COMBINED_LICENSE}"
38 !insertmacro MUI_PAGE_DIRECTORY
39 !insertmacro MUI_PAGE_INSTFILES
40
41 !insertmacro MUI_UNPAGE_CONFIRM
42 !insertmacro MUI_UNPAGE_INSTFILES
43
44 ; Languages
45
46 !insertmacro MUI_LANGUAGE "English"
47
48 ; Other Stuff
49
50 SetCompress off ; all the big stuff is already compressed
51
52 ; Installer Sections
53
54 Section "vcredist"
55
56 SetOutPath "$INSTDIR"
57 File "${DIST_FOLDER}\${VCREDIST}"
58 ; Check if it's already installed by checking for the uninstall key
59 ; Idea and key value to check taken post and comments at:
60 ; http://blogs.msdn.com/b/astebner/archive/2009/01/29/9384143.aspx
61
62 ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${VCREDIST_KEY}" UninstallString
63 ; NSIS docs say if the key doesn't exist, we get an error and an empty string
64 IfErrors install done
65
66 install:
67 ; Runs install with progress bar and no cancel button
68 ; Details taken from
69 ; http://blogs.msdn.com/b/astebner/archive/2010/10/18/9513328.aspx
70
71 DetailPrint "Installing required MS runtime libraries"
72 ExecWait "$INSTDIR/${VCREDIST} /qb!"
73
74 done:
75
76 DetailPrint "MS runtime libraries already installed, skipping"
77
78 SectionEnd
79
80 Section "Werewolf Sonata"
81 SetOutPath "$INSTDIR"
82
83 WriteUninstaller "$INSTDIR\${UNINSTALLER}"
84
85 File "${DIST_FOLDER}\${WS_PY2EXE_ZIP}"
86
87 ZipDLL::extractall "$INSTDIR\${WS_PY2EXE_ZIP}" "$INSTDIR"
88 Delete "$INSTDIR\${WS_PY2EXE_ZIP}"
89
90 CreateDirectory "$SMPROGRAMS\Werewolf Sonata"
91
92 # link.lnk target.exe
93 # parameters icon.file icon_index_number start_options
94 # keyboard_shortcut description
95
96 CreateShortCut "$SMPROGRAMS\Werewolf Sonata\Werewolf Sonata ${WS_VERSION}.lnk" "$INSTDIR\${WS_UNPACK}\nagslang.exe" \
97 "" "" "" SW_SHOWNORMAL \
98 "" "Werewolf Sonata"
99
100 CreateShortCut "$SMPROGRAMS\Werewolf Sonata\Uninstall Werewolf Sonata ${WS_VERSION}.lnk" "$INSTDIR\${UNINSTALLER}" \
101 "" "" "" SW_SHOWNORMAL \
102 "" "Uninstall Werewolf Sonata"
103
104 SectionEnd
105
106 UninstallText "This will uninstall Werewolf Sonata ${WS_VERSION}."
107
108 Section "Uninstall"
109 ; Delete files not deleted during install
110
111 ; Remove py2exe folder
112 RMDir /r /REBOOTOK "$INSTDIR\${WS_UNPACK}"
113
114 ; Remove shortcut links
115 Delete "$SMPROGRAMS\Werewolf Sonata\Werewolf Sonata ${WS_VERSION}.lnk"
116 Delete "$SMPROGRAMS\Werewolf Sonata\Uninstall Werewolf Sonata ${WS_VERSION}.lnk"
117
118 ; Remove shortcut folder if no links left
119 IfFileExists "$SMPROGRAMS\Werewolf Sonata\*.lnk" shortcuts_exist 0
120 RMDir /REBOOTOK "$SMPROGRAMS\Werewolf Sonata"
121 shortcuts_exist:
122
123 ; Final Clean up (no point doing this while the uninstall is incomplete)
124 RMDir /r /REBOOTOK $INSTDIR
125
126 ; Offer to reboot if needed
127 IfRebootFlag 0 noreboot
128 MessageBox MB_YESNO "A reboot is required to finish the uninstallation. Do you wish to reboot now?" IDNO noreboot
129 Reboot
130 noreboot:
131
132 ; TODO: We don't touch the vcredist stuff, since we can't tell a) if we were
133 ; the ones who installed it and b) if anything else needs it. This may cause
134 ; cruft on the users system, so should we tell the user?
135
136 SectionEnd