root / tmp / org.txm.setups / nsis / Examples / bigtest.nsi @ 1520
Historique | Voir | Annoter | Télécharger (7,78 ko)
1 |
; bigtest.nsi |
---|---|
2 |
; |
3 |
; This script attempts to test most of the functionality of the NSIS exehead. |
4 |
|
5 |
;-------------------------------- |
6 |
|
7 |
!ifdef HAVE_UPX |
8 |
!packhdr tmp.dat "upx\upx -9 tmp.dat" |
9 |
!endif |
10 |
|
11 |
!ifdef NOCOMPRESS |
12 |
SetCompress off |
13 |
!endif |
14 |
|
15 |
;-------------------------------- |
16 |
|
17 |
Name "BigNSISTest" |
18 |
Caption "NSIS Big Test" |
19 |
Icon "${NSISDIR}\Contrib\Graphics\Icons\nsis1-install.ico" |
20 |
OutFile "bigtest.exe" |
21 |
|
22 |
SetDateSave on |
23 |
SetDatablockOptimize on |
24 |
CRCCheck on |
25 |
SilentInstall normal |
26 |
BGGradient 000000 800000 FFFFFF |
27 |
InstallColors FF8080 000030 |
28 |
XPStyle on |
29 |
|
30 |
InstallDir "$PROGRAMFILES\NSISTest\BigNSISTest" |
31 |
InstallDirRegKey HKLM "Software\NSISTest\BigNSISTest" "Install_Dir" |
32 |
|
33 |
CheckBitmap "${NSISDIR}\Contrib\Graphics\Checks\classic-cross.bmp" |
34 |
|
35 |
LicenseText "A test text, make sure it's all there" |
36 |
LicenseData "bigtest.nsi" |
37 |
|
38 |
RequestExecutionLevel admin |
39 |
|
40 |
;-------------------------------- |
41 |
|
42 |
Page license |
43 |
Page components |
44 |
Page directory |
45 |
Page instfiles |
46 |
|
47 |
UninstPage uninstConfirm |
48 |
UninstPage instfiles |
49 |
|
50 |
;-------------------------------- |
51 |
|
52 |
!ifndef NOINSTTYPES ; only if not defined |
53 |
InstType "Most" |
54 |
InstType "Full" |
55 |
InstType "More" |
56 |
InstType "Base" |
57 |
;InstType /NOCUSTOM |
58 |
;InstType /COMPONENTSONLYONCUSTOM |
59 |
!endif |
60 |
|
61 |
AutoCloseWindow false |
62 |
ShowInstDetails show |
63 |
|
64 |
;-------------------------------- |
65 |
|
66 |
Section "" ; empty string makes it hidden, so would starting with - |
67 |
|
68 |
; write reg info |
69 |
StrCpy $1 "POOOOOOOOOOOP" |
70 |
DetailPrint "I like to be able to see what is going on (debug) $1" |
71 |
WriteRegStr HKLM SOFTWARE\NSISTest\BigNSISTest "Install_Dir" "$INSTDIR" |
72 |
|
73 |
; write uninstall strings |
74 |
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BigNSISTest" "DisplayName" "BigNSISTest (remove only)" |
75 |
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BigNSISTest" "UninstallString" '"$INSTDIR\bt-uninst.exe"' |
76 |
|
77 |
SetOutPath $INSTDIR |
78 |
File /a "silent.nsi" |
79 |
CreateDirectory "$INSTDIR\MyProjectFamily\MyProject" ; 2 recursively create a directory for fun. |
80 |
WriteUninstaller "bt-uninst.exe" |
81 |
|
82 |
Nop ; for fun |
83 |
|
84 |
SectionEnd |
85 |
|
86 |
Section "TempTest" |
87 |
|
88 |
SectionIn 1 2 3 |
89 |
Start: MessageBox MB_OK "Start:" |
90 |
|
91 |
MessageBox MB_YESNO "Goto MyLabel" IDYES MyLabel |
92 |
|
93 |
MessageBox MB_OK "Right before MyLabel:" |
94 |
|
95 |
MyLabel: MessageBox MB_OK "MyLabel:" |
96 |
|
97 |
MessageBox MB_OK "Right after MyLabel:" |
98 |
|
99 |
MessageBox MB_YESNO "Goto Start:?" IDYES Start |
100 |
|
101 |
SectionEnd |
102 |
|
103 |
SectionGroup /e SectionGroup1 |
104 |
|
105 |
Section "Test Registry/INI functions" |
106 |
|
107 |
SectionIn 1 4 3 |
108 |
|
109 |
WriteRegStr HKLM SOFTWARE\NSISTest\BigNSISTest "StrTest_INSTDIR" "$INSTDIR" |
110 |
WriteRegDword HKLM SOFTWARE\NSISTest\BigNSISTest "DwordTest_0xDEADBEEF" 0xdeadbeef |
111 |
WriteRegDword HKLM SOFTWARE\NSISTest\BigNSISTest "DwordTest_123456" 123456 |
112 |
WriteRegDword HKLM SOFTWARE\NSISTest\BigNSISTest "DwordTest_0123" 0123 |
113 |
WriteRegBin HKLM SOFTWARE\NSISTest\BigNSISTest "BinTest_deadbeef01f00dbeef" "DEADBEEF01F00DBEEF" |
114 |
StrCpy $8 "$SYSDIR\IniTest" |
115 |
WriteINIStr "$INSTDIR\test.ini" "MySection" "Value1" $8 |
116 |
WriteINIStr "$INSTDIR\test.ini" "MySectionIni" "Value1" $8 |
117 |
WriteINIStr "$INSTDIR\test.ini" "MySectionIni" "Value2" $8 |
118 |
WriteINIStr "$INSTDIR\test.ini" "IniOn" "Value1" $8 |
119 |
|
120 |
Call MyFunctionTest |
121 |
|
122 |
DeleteINIStr "$INSTDIR\test.ini" "IniOn" "Value1" |
123 |
DeleteINISec "$INSTDIR\test.ini" "MySectionIni" |
124 |
|
125 |
ReadINIStr $1 "$INSTDIR\test.ini" "MySectionIni" "Value1" |
126 |
StrCmp $1 "" INIDelSuccess |
127 |
MessageBox MB_OK "DeleteINISec failed" |
128 |
INIDelSuccess: |
129 |
|
130 |
ClearErrors |
131 |
ReadRegStr $1 HKCR "software\microsoft" xyz_cc_does_not_exist |
132 |
IfErrors 0 NoError |
133 |
MessageBox MB_OK "could not read from HKCR\software\microsoft\xyz_cc_does_not_exist" |
134 |
Goto ErrorYay |
135 |
NoError: |
136 |
MessageBox MB_OK "read '$1' from HKCR\software\microsoft\xyz_cc_does_not_exist" |
137 |
ErrorYay: |
138 |
|
139 |
SectionEnd |
140 |
|
141 |
Section "Test CreateShortCut" |
142 |
|
143 |
SectionIn 1 2 3 |
144 |
|
145 |
Call CSCTest |
146 |
|
147 |
SectionEnd |
148 |
|
149 |
SectionGroup Group2 |
150 |
|
151 |
Section "Test Branching" |
152 |
|
153 |
BeginTestSection: |
154 |
SectionIn 1 2 3 |
155 |
|
156 |
SetOutPath $INSTDIR |
157 |
|
158 |
IfFileExists "$INSTDIR\LogicLib.nsi" 0 BranchTest69 |
159 |
|
160 |
MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to overwrite $INSTDIR\LogicLib.nsi?" IDNO NoOverwrite ; skipped if file doesn't exist |
161 |
|
162 |
BranchTest69: |
163 |
|
164 |
SetOverwrite ifnewer ; NOT AN INSTRUCTION, NOT COUNTED IN SKIPPINGS |
165 |
|
166 |
NoOverwrite: |
167 |
|
168 |
File "LogicLib.nsi" ; skipped if answered no |
169 |
SetOverwrite try ; NOT AN INSTRUCTION, NOT COUNTED IN SKIPPINGS |
170 |
|
171 |
MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to skip the rest of this section?" IDYES EndTestBranch |
172 |
MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to go back to the beginning of this section?" IDYES BeginTestSection |
173 |
MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to hide the installer and wait five seconds?" IDNO NoHide |
174 |
|
175 |
HideWindow |
176 |
Sleep 5000 |
177 |
BringToFront |
178 |
|
179 |
NoHide: |
180 |
|
181 |
MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to call the function 5 times?" IDNO NoRecurse |
182 |
|
183 |
StrCpy $1 "x" |
184 |
|
185 |
LoopTest: |
186 |
|
187 |
Call myfunc |
188 |
StrCpy $1 "x$1" |
189 |
StrCmp $1 "xxxxxx" 0 LoopTest |
190 |
|
191 |
NoRecurse: |
192 |
|
193 |
EndTestBranch: |
194 |
|
195 |
SectionEnd |
196 |
|
197 |
SectionGroupEnd |
198 |
|
199 |
Section "Test CopyFiles" |
200 |
|
201 |
SectionIn 1 2 3 |
202 |
|
203 |
SetOutPath $INSTDIR\cpdest |
204 |
CopyFiles "$WINDIR\*.ini" "$INSTDIR\cpdest" 0 |
205 |
|
206 |
SectionEnd |
207 |
|
208 |
SectionGroupEnd |
209 |
|
210 |
Section "Test Exec functions" TESTIDX |
211 |
|
212 |
SectionIn 1 2 3 |
213 |
|
214 |
SearchPath $1 notepad.exe |
215 |
|
216 |
MessageBox MB_OK "notepad.exe=$1" |
217 |
Exec '"$1"' |
218 |
ExecShell "open" '"$INSTDIR"' |
219 |
Sleep 500 |
220 |
BringToFront |
221 |
|
222 |
SectionEnd |
223 |
|
224 |
Section "Test ActiveX control registration" |
225 |
|
226 |
SectionIn 2 |
227 |
|
228 |
UnRegDLL "$SYSDIR\spin32.ocx" |
229 |
Sleep 1000 |
230 |
RegDLL "$SYSDIR\spin32.ocx" |
231 |
Sleep 1000 |
232 |
|
233 |
SectionEnd |
234 |
|
235 |
;-------------------------------- |
236 |
|
237 |
Function "CSCTest" |
238 |
|
239 |
CreateDirectory "$SMPROGRAMS\Big NSIS Test" |
240 |
SetOutPath $INSTDIR ; for working directory |
241 |
CreateShortCut "$SMPROGRAMS\Big NSIS Test\Uninstall BIG NSIS Test.lnk" "$INSTDIR\bt-uninst.exe" ; use defaults for parameters, icon, etc. |
242 |
; this one will use notepad's icon, start it minimized, and give it a hotkey (of Ctrl+Shift+Q) |
243 |
CreateShortCut "$SMPROGRAMS\Big NSIS Test\silent.nsi.lnk" "$INSTDIR\silent.nsi" "" "$WINDIR\notepad.exe" 0 SW_SHOWMINIMIZED CONTROL|SHIFT|Q |
244 |
CreateShortCut "$SMPROGRAMS\Big NSIS Test\TheDir.lnk" "$INSTDIR\" "" "" 0 SW_SHOWMAXIMIZED CONTROL|SHIFT|Z |
245 |
|
246 |
FunctionEnd |
247 |
|
248 |
Function myfunc |
249 |
|
250 |
StrCpy $2 "MyTestVar=$1" |
251 |
MessageBox MB_OK "myfunc: $2" |
252 |
|
253 |
FunctionEnd |
254 |
|
255 |
Function MyFunctionTest |
256 |
|
257 |
ReadINIStr $1 "$INSTDIR\test.ini" "MySectionIni" "Value1" |
258 |
StrCmp $1 $8 NoFailedMsg |
259 |
MessageBox MB_OK "WriteINIStr failed" |
260 |
|
261 |
NoFailedMsg: |
262 |
|
263 |
FunctionEnd |
264 |
|
265 |
Function .onSelChange |
266 |
|
267 |
SectionGetText ${TESTIDX} $0 |
268 |
StrCmp $0 "" e |
269 |
SectionSetText ${TESTIDX} "" |
270 |
Goto e2 |
271 |
e: |
272 |
SectionSetText ${TESTIDX} "TextInSection" |
273 |
e2: |
274 |
|
275 |
FunctionEnd |
276 |
|
277 |
;-------------------------------- |
278 |
|
279 |
; Uninstaller |
280 |
|
281 |
UninstallText "This will uninstall example2. Hit next to continue." |
282 |
UninstallIcon "${NSISDIR}\Contrib\Graphics\Icons\nsis1-uninstall.ico" |
283 |
|
284 |
Section "Uninstall" |
285 |
|
286 |
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\BigNSISTest" |
287 |
DeleteRegKey HKLM "SOFTWARE\NSISTest\BigNSISTest" |
288 |
Delete "$INSTDIR\silent.nsi" |
289 |
Delete "$INSTDIR\LogicLib.nsi" |
290 |
Delete "$INSTDIR\bt-uninst.exe" |
291 |
Delete "$INSTDIR\test.ini" |
292 |
Delete "$SMPROGRAMS\Big NSIS Test\*.*" |
293 |
RMDir "$SMPROGRAMS\BiG NSIS Test" |
294 |
|
295 |
MessageBox MB_YESNO|MB_ICONQUESTION "Would you like to remove the directory $INSTDIR\cpdest?" IDNO NoDelete |
296 |
Delete "$INSTDIR\cpdest\*.*" |
297 |
RMDir "$INSTDIR\cpdest" ; skipped if no |
298 |
NoDelete: |
299 |
|
300 |
RMDir "$INSTDIR\MyProjectFamily\MyProject" |
301 |
RMDir "$INSTDIR\MyProjectFamily" |
302 |
RMDir "$INSTDIR" |
303 |
|
304 |
IfFileExists "$INSTDIR" 0 NoErrorMsg |
305 |
MessageBox MB_OK "Note: $INSTDIR could not be removed!" IDOK 0 ; skipped if file doesn't exist |
306 |
NoErrorMsg: |
307 |
|
308 |
SectionEnd |