aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/installers/windows/installer_template_multilang.nsi
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/newview/installers/windows/installer_template_multilang.nsi')
-rw-r--r--linden/indra/newview/installers/windows/installer_template_multilang.nsi938
1 files changed, 0 insertions, 938 deletions
diff --git a/linden/indra/newview/installers/windows/installer_template_multilang.nsi b/linden/indra/newview/installers/windows/installer_template_multilang.nsi
deleted file mode 100644
index b722a0f..0000000
--- a/linden/indra/newview/installers/windows/installer_template_multilang.nsi
+++ /dev/null
@@ -1,938 +0,0 @@
1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2;; secondlife setup.nsi
3;; Copyright 2004-2007, Linden Research, Inc.
4;; For info, see http://www.nullsoft.com/free/nsis/
5;;
6;; NSIS 2.22 or higher required
7;; Author: James Cook, Don Kjer, Callum Prentice
8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9
10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
11;;; Detect NSIS compiler version
12!define "NSIS${NSIS_VERSION}"
13!ifdef "NSISv2.02" | "NSISv2.03" | "NSISv2.04" | "NSISv2.05" | "NSISv2.06"
14 ;; before 2.07 defaulted lzma to solid (whole file)
15 SetCompressor lzma
16!else
17 ;; after 2.07 required /solid for whole file compression
18 SetCompressor /solid lzma
19!endif
20
21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
22;; Compiler flags
23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
24SetOverwrite on ; overwrite files
25SetCompress auto ; compress iff saves space
26SetDatablockOptimize off ; only saves us 0.1%, not worth it
27XPStyle on ; add an XP manifest to the installer
28
29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
30;;; Project flags
31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
32
33%%VERSION%%
34
35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
36;; - language files - one for each language (or flavor thereof)
37;; (these files are in the same place as the nsi template but the python script generates a new nsi file in the
38;; application directory so we have to add a path to these include files)
39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
40!include "installers\windows\lang_de.nsi"
41!include "installers\windows\lang_en-us.nsi"
42!include "installers\windows\lang_ja.nsi"
43!include "installers\windows\lang_ko.nsi"
44
45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
46;; Tweak for different servers/builds (this placeholder is replaced by viewer_manifest.py)
47%%GRID_VARS%%
48
49Name ${INSTNAME}
50
51SubCaption 0 $(LicenseSubTitleSetup) ; override "license agreement" text
52
53BrandingText " " ; bottom of window text
54Icon res\install_icon.ico ; our custom icon
55UninstallIcon res\uninstall_icon.ico ; our custom icon
56WindowIcon on ; show our icon in left corner
57BGGradient off ; no big background window
58CRCCheck on ; make sure CRC is OK
59InstProgressFlags smooth colored ; new colored smooth look
60ShowInstDetails nevershow ; no details, no "show" button
61SetOverwrite on ; stomp files by default
62AutoCloseWindow true ; after all files install, close window
63
64!ifdef UPDATE
65LicenseText $(LicenseDescUpdate) $(LicenseDescNext)
66!else
67LicenseText $(LicenseDescSetup) $(LicenseDescNext)
68!endif
69
70LicenseData "releasenotes.txt"
71
72InstallDir "$PROGRAMFILES\${INSTNAME}"
73InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" ""
74!ifdef UPDATE
75DirText $(DirectoryChooseTitle) $(DirectoryChooseUpdate)
76!else
77DirText $(DirectoryChooseTitle) $(DirectoryChooseSetup)
78!endif
79
80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
81;;; Variables
82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
83Var INSTPROG
84Var INSTEXE
85Var INSTFLAGS
86Var LANGFLAGS
87Var INSTSHORTCUT
88
89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
90;;; Sections
91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
92Section "" ; (default section)
93
94SetShellVarContext all ; install for all users (if you change this, change it in the uninstall as well)
95
96; Start with some default values.
97StrCpy $INSTFLAGS "${INSTFLAGS}"
98StrCpy $INSTFLAGS "$INSTFLAGS $LANGFLAGS"
99StrCpy $INSTPROG "${INSTNAME}"
100StrCpy $INSTEXE "${INSTEXE}"
101StrCpy $INSTSHORTCUT "${SHORTCUT}"
102
103IfSilent +2
104Goto NOT_SILENT
105 Call CheckStartupParams ; Figure out where, what and how to install.
106NOT_SILENT:
107Call CheckWindowsVersion ; warn if on Windows 98/ME
108Call CheckIfAdministrator ; Make sure the user can install/uninstall
109Call CheckIfAlreadyCurrent ; Make sure that we haven't already installed this version
110Call CloseSecondLife ; Make sure we're not running
111Call RemoveNSIS ; Check for old NSIS install to remove
112
113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
114;;; Don't remove cache files during a regular install, removing the inventory cache on upgrades results in lots of damage to the servers.
115;Call RemoveCacheFiles ; Installing over removes potentially corrupted
116 ; VFS and cache files.
117
118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
119;;; Files
120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
121;; This placeholder is replaced by the complete list of all the files in the installer, by viewer_manifest.py
122%%INSTALL_FILES%%
123
124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
125; If this is a silent update, we don't need to re-create these shortcuts or registry entries.
126IfSilent POST_INSTALL
127
128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
129; Shortcuts in start menu
130CreateDirectory "$SMPROGRAMS\$INSTSHORTCUT"
131SetOutPath "$INSTDIR"
132CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT.lnk" \
133 "$INSTDIR\$INSTEXE" "$INSTFLAGS"
134
135!ifdef MUSEUM
136CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT Museum.lnk" \
137
138 "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple"
139CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT Museum Spanish.lnk" \
140
141 "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple -spanish"
142!endif
143
144WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Create Trial Account.url" \
145 "InternetShortcut" "URL" \
146 "http://www.secondlife.com/registration/"
147WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Your Account.url" \
148 "InternetShortcut" "URL" \
149 "http://www.secondlife.com/account/"
150CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\SL Release Notes.lnk" \
151 "$INSTDIR\releasenotes.txt"
152CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\SL Scripting Language Help.lnk" \
153 "$INSTDIR\lsl_guide.html"
154CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\Uninstall $INSTSHORTCUT.lnk" \
155 '"$INSTDIR\uninst.exe"' '/P="$INSTPROG"'
156
157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
158; Other shortcuts
159SetOutPath "$INSTDIR"
160CreateShortCut "$DESKTOP\$INSTSHORTCUT.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS"
161CreateShortCut "$INSTDIR\$INSTSHORTCUT.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS"
162CreateShortCut "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" \
163 '"$INSTDIR\uninst.exe"' '/P="$INSTPROG"'
164
165!ifdef MUSEUM
166CreateShortCut "$DESKTOP\$INSTSHORTCUT Museum.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple"
167
168CreateShortCut "$DESKTOP\$INSTSHORTCUT Museum Spanish.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple -spanish"
169
170CreateShortCut "$INSTDIR\$INSTSHORTCUT Museum.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple"
171
172CreateShortCut "$INSTDIR\$INSTSHORTCUT Museum Spanish.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple -spanish"
173
174!endif
175
176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
177; Write registry
178WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "" "$INSTDIR"
179WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Version" "${VERSION_LONG}"
180WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Flags" "$INSTFLAGS"
181WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Shortcut" "$INSTSHORTCUT"
182WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Exe" "$INSTEXE"
183WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "DisplayName" "$INSTPROG (remove only)"
184WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "UninstallString" '"$INSTDIR\uninst.exe" /P="$INSTPROG"'
185
186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
187; Write URL registry info
188WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}" "(default)" "URL:Second Life"
189WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}" "URL Protocol" ""
190WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}\DefaultIcon" "" '"$INSTDIR\$INSTEXE"'
191WriteRegExpandStr HKEY_CLASSES_ROOT "${URLNAME}\shell\open\command" "" '"$INSTDIR\$INSTEXE" $INSTFLAGS -url "%1"'
192
193Goto WRITE_UNINST
194
195POST_INSTALL:
196; Run a post-executable script if necessary.
197Call PostInstallExe
198
199WRITE_UNINST:
200; write out uninstaller
201WriteUninstaller "$INSTDIR\uninst.exe"
202
203; end of default section
204SectionEnd
205
206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
207; PostInstallExe
208; This just runs any post installation scripts.
209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
210Function PostInstallExe
211push $0
212 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "PostInstallExe"
213 ;MessageBox MB_OK '$0'
214 ExecWait '$0'
215pop $0
216FunctionEnd
217
218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
219; CheckStartupParameters
220; Sets INSTFLAGS, INSTPROG, and INSTEXE.
221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
222Function CheckStartupParams
223push $0
224push $R0
225
226 ; Look for a registry entry with info about where to update.
227 Call GetProgramName
228 pop $R0
229 StrCpy $INSTPROG "$R0"
230 StrCpy $INSTEXE "$R0.exe"
231
232 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" ""
233 ; If key doesn't exist, skip install
234 IfErrors ABORT
235 StrCpy $INSTDIR "$0"
236
237 ; We now have a directory to install to. Get the startup parameters and shortcut as well.
238 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Flags"
239 IfErrors +2
240 StrCpy $INSTFLAGS "$0"
241 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Shortcut"
242 IfErrors +2
243 StrCpy $INSTSHORTCUT "$0"
244 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Exe"
245 IfErrors +2
246 StrCpy $INSTEXE "$0"
247 Goto FINISHED
248
249ABORT:
250 MessageBox MB_OK $(CheckStartupParamsMB)
251 Quit
252
253FINISHED:
254 ;MessageBox MB_OK "INSTPROG: $INSTPROG, INSTEXE: $INSTEXE, INSTFLAGS: $INSTFLAGS"
255pop $R0
256pop $0
257FunctionEnd
258
259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
260;;
261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
262Function un.CheckStartupParams
263push $0
264push $R0
265
266 ; Look for a registry entry with info about where to update.
267 Call un.GetProgramName
268 pop $R0
269 StrCpy $INSTPROG "$R0"
270 StrCpy $INSTEXE "$R0.exe"
271
272 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" ""
273 ; If key doesn't exist, skip install
274 IfErrors ABORT
275 StrCpy $INSTDIR "$0"
276
277 ; We now have a directory to install to. Get the startup parameters and shortcut as well.
278 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Flags"
279 IfErrors +2
280 StrCpy $INSTFLAGS "$0"
281 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Shortcut"
282 IfErrors +2
283 StrCpy $INSTSHORTCUT "$0"
284 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Exe"
285 IfErrors +2
286 StrCpy $INSTEXE "$0"
287 Goto FINISHED
288
289ABORT:
290 MessageBox MB_OK $(CheckStartupParamsMB)
291 Quit
292
293FINISHED:
294 ;MessageBox MB_OK "INSTPROG: $INSTPROG, INSTEXE: $INSTEXE, INSTFLAGS: $INSTFLAGS"
295pop $R0
296pop $0
297FunctionEnd
298
299;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
300;;; After install completes, offer readme file
301;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
302Function .onInstSuccess
303 MessageBox MB_YESNO \
304 $(InstSuccesssQuestion) /SD IDYES IDNO NoReadme
305 ; Assumes SetOutPath $INSTDIR
306 Exec '"$INSTDIR\$INSTEXE" $INSTFLAGS'
307 NoReadme:
308FunctionEnd
309
310;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
311; Remove old NSIS version. Modifies no variables.
312; Does NOT delete the LindenWorld directory, or any
313; user files in that directory.
314;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
315Function RemoveNSIS
316 Push $0
317 ; Grab the installation directory of the old version
318 DetailPrint $(RemoveOldNSISVersion)
319 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" ""
320
321 ; If key doesn't exist, skip uninstall
322 IfErrors NO_NSIS
323
324 ; Clean up legacy beta shortcuts
325 Delete "$SMPROGRAMS\Second Life Beta.lnk"
326 Delete "$DESKTOP\Second Life Beta.lnk"
327 Delete "$SMPROGRAMS\Second Life.lnk"
328
329 ; Clean up old newview.exe file
330 Delete "$INSTDIR\newview.exe"
331
332 ; Intentionally don't delete the stuff in
333 ; Documents and Settings, so we keep the user's settings
334
335 NO_NSIS:
336 Pop $0
337FunctionEnd
338
339;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
340; Make sure we're not on Windows 98 / ME
341;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
342Function CheckWindowsVersion
343 DetailPrint "Checking Windows version..."
344 Call GetWindowsVersion
345 Pop $R0
346 ; Just get first two characters, ignore 4.0 part of "NT 4.0"
347 StrCpy $R0 $R0 2
348 ; Blacklist certain OS versions
349 StrCmp $R0 "95" win_ver_bad
350 StrCmp $R0 "98" win_ver_bad
351 StrCmp $R0 "ME" win_ver_bad
352 StrCmp $R0 "NT" win_ver_bad
353 Return
354win_ver_bad:
355 MessageBox MB_YESNO $(CheckWindowsVersionMB) IDNO win_ver_abort
356 Return
357win_ver_abort:
358 Quit
359FunctionEnd
360
361;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
362; Make sure the user can install/uninstall
363;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
364Function CheckIfAdministrator
365 DetailPrint $(CheckAdministratorInstDP)
366 UserInfo::GetAccountType
367 Pop $R0
368 StrCmp $R0 "Admin" is_admin
369 MessageBox MB_OK $(CheckAdministratorInstMB)
370 Quit
371is_admin:
372 Return
373FunctionEnd
374
375;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
376;;
377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
378Function un.CheckIfAdministrator
379 DetailPrint $(CheckAdministratorUnInstDP)
380 UserInfo::GetAccountType
381 Pop $R0
382 StrCmp $R0 "Admin" is_admin
383 MessageBox MB_OK $(CheckAdministratorUnInstMB)
384 Quit
385is_admin:
386 Return
387FunctionEnd
388
389;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
390; Checks to see if the current version has already been installed (according to the registry).
391; If it has, allow user to bail out of install process.
392;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
393Function CheckIfAlreadyCurrent
394 Push $0
395 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Version"
396 StrCmp $0 ${VERSION_LONG} 0 DONE
397 MessageBox MB_OKCANCEL $(CheckIfCurrentMB) /SD IDOK IDOK DONE
398 Quit
399
400 DONE:
401 Pop $0
402 Return
403FunctionEnd
404
405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
406; Close the program, if running. Modifies no variables.
407; Allows user to bail out of install process.
408;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
409Function CloseSecondLife
410 Push $0
411 FindWindow $0 "Second Life" ""
412 IntCmp $0 0 DONE
413 MessageBox MB_OKCANCEL $(CloseSecondLifeInstMB) IDOK CLOSE IDCANCEL CANCEL_INSTALL
414
415 CANCEL_INSTALL:
416 Quit
417
418 CLOSE:
419 DetailPrint $(CloseSecondLifeInstDP)
420 SendMessage $0 16 0 0
421
422 LOOP:
423 FindWindow $0 "Second Life" ""
424 IntCmp $0 0 DONE
425 Sleep 500
426 Goto LOOP
427
428 DONE:
429 Pop $0
430 Return
431FunctionEnd
432
433
434;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
435; Delete files in Documents and Settings\<user>\SecondLife\cache
436; Delete files in Documents and Settings\All Users\SecondLife\cache
437;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
438;Function RemoveCacheFiles
439;
440;; Delete files in Documents and Settings\<user>\SecondLife
441;Push $0
442;Push $1
443;Push $2
444; DetailPrint $(RemoveCacheFilesDP)
445;
446; StrCpy $0 0 ; Index number used to iterate via EnumRegKey
447;
448; LOOP:
449; EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
450; StrCmp $1 "" DONE ; no more users
451;
452; ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath"
453; StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing
454;
455; ; Required since ProfileImagePath is of type REG_EXPAND_SZ
456; ExpandEnvStrings $2 $2
457;
458; ; When explicitly uninstalling, everything goes away
459; RMDir /r "$2\Application Data\SecondLife\cache"
460;
461; CONTINUE:
462; IntOp $0 $0 + 1
463; Goto LOOP
464; DONE:
465;Pop $2
466;Pop $1
467;Pop $0
468;
469;; Delete files in Documents and Settings\All Users\SecondLife
470;Push $0
471; ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
472; StrCmp $0 "" +2
473; RMDir /r "$0\SecondLife\cache"
474;Pop $0
475;
476;; Delete filse in C:\Windows\Application Data\SecondLife
477;; If the user is running on a pre-NT system, Application Data lives here instead of
478;; in Documents and Settings.
479;RMDir /r "$WINDIR\Application Data\SecondLife\cache"
480;
481;FunctionEnd
482
483;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
484; Delete files in Documents and Settings\<user>\SecondLife
485; Delete files in Documents and Settings\All Users\SecondLife
486;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
487;Function un.DocumentsAndSettingsFolder
488;
489;; Delete files in Documents and Settings\<user>\SecondLife
490;Push $0
491;Push $1
492;Push $2
493;
494; DetailPrint "Deleting files in Documents and Settings folder"
495;
496; StrCpy $0 0 ; Index number used to iterate via EnumRegKey
497;
498; LOOP:
499; EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
500; StrCmp $1 "" DONE ; no more users
501;
502; ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath"
503; StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing
504;
505; ; Required since ProfileImagePath is of type REG_EXPAND_SZ
506; ExpandEnvStrings $2 $2
507;
508; ; If uninstalling a normal install remove everything
509; ; Otherwise (preview/dmz etc) just remove cache
510; StrCmp $INSTFLAGS "" RM_ALL RM_CACHE
511; RM_ALL:
512; RMDir /r "$2\Application Data\SecondLife"
513; GoTo CONTINUE
514; RM_CACHE:
515; RMDir /r "$2\Application Data\SecondLife\Cache"
516;
517; CONTINUE:
518; IntOp $0 $0 + 1
519; Goto LOOP
520; DONE:
521;
522;Pop $2
523;Pop $1
524;Pop $0
525;
526;; Delete files in Documents and Settings\All Users\SecondLife
527;Push $0
528; ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
529; StrCmp $0 "" +2
530; RMDir /r "$0\SecondLife"
531;Pop $0
532;
533;; Delete filse in C:\Windows\Application Data\SecondLife
534;; If the user is running on a pre-NT system, Application Data lives here instead of
535;; in Documents and Settings.
536;RMDir /r "$WINDIR\Application Data\SecondLife"
537;
538;FunctionEnd
539
540;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
541; Close the program, if running. Modifies no variables.
542; Allows user to bail out of uninstall process.
543;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
544Function un.CloseSecondLife
545 Push $0
546 FindWindow $0 "Second Life" ""
547 IntCmp $0 0 DONE
548 MessageBox MB_OKCANCEL $(CloseSecondLifeUnInstMB) IDOK CLOSE IDCANCEL CANCEL_UNINSTALL
549
550 CANCEL_UNINSTALL:
551 Quit
552
553 CLOSE:
554 DetailPrint $(CloseSecondLifeUnInstDP)
555 SendMessage $0 16 0 0
556
557 LOOP:
558 FindWindow $0 "Second Life" ""
559 IntCmp $0 0 DONE
560 Sleep 500
561 Goto LOOP
562
563 DONE:
564 Pop $0
565 Return
566FunctionEnd
567
568;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
569;;; Delete the installed files
570;;; This deletes the uninstall executable, but it works
571;;; because it is copied to temp directory before running
572;;;
573;;; Note: You must list all files here, because we only
574;;; want to delete our files, not things users left in the
575;;; application directories.
576;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
577Function un.ProgramFiles
578
579;; Remove mozilla file first so recursive directory deletion doesn't get hung up
580Delete "$INSTDIR\app_settings\mozilla\components"
581
582;; This placeholder is replaced by the complete list of files to uninstall by viewer_manifest.py
583%%DELETE_FILES%%
584
585;; Optional/obsolete files. Delete won't fail if they don't exist.
586Delete "$INSTDIR\dronesettings.ini"
587Delete "$INSTDIR\message_template.msg"
588Delete "$INSTDIR\newview.pdb"
589Delete "$INSTDIR\newview.map"
590Delete "$INSTDIR\SecondLife.pdb"
591Delete "$INSTDIR\SecondLife.map"
592Delete "$INSTDIR\comm.dat"
593Delete "$INSTDIR\*.glsl"
594Delete "$INSTDIR\motions\*.lla"
595Delete "$INSTDIR\trial\*.html"
596Delete "$INSTDIR\newview.exe"
597;; Remove entire help directory
598Delete "$INSTDIR\help\Advanced\*"
599RMDir "$INSTDIR\help\Advanced"
600Delete "$INSTDIR\help\basics\*"
601RMDir "$INSTDIR\help\basics"
602Delete "$INSTDIR\help\Concepts\*"
603RMDir "$INSTDIR\help\Concepts"
604Delete "$INSTDIR\help\welcome\*"
605RMDir "$INSTDIR\help\welcome"
606Delete "$INSTDIR\help\*"
607RMDir "$INSTDIR\help"
608
609Delete "$INSTDIR\uninst.exe"
610RMDir "$INSTDIR"
611
612IfFileExists "$INSTDIR" FOLDERFOUND NOFOLDER
613
614FOLDERFOUND:
615 MessageBox MB_YESNO $(DeleteProgramFilesMB) IDNO NOFOLDER
616 RMDir /r "$INSTDIR"
617
618NOFOLDER:
619
620FunctionEnd
621
622;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
623;;; Uninstall settings
624;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
625UninstallText $(UninstallTextMsg)
626ShowUninstDetails show
627
628;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
629;;; Uninstall section
630;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
631Section Uninstall
632
633; Start with some default values.
634StrCpy $INSTFLAGS ""
635StrCpy $INSTPROG "${INSTNAME}"
636StrCpy $INSTEXE "${INSTEXE}"
637StrCpy $INSTSHORTCUT "${SHORTCUT}"
638Call un.CheckStartupParams ; Figure out where, what and how to uninstall.
639Call un.CheckIfAdministrator ; Make sure the user can install/uninstall
640
641; uninstall for all users (if you change this, change it in the install as well)
642SetShellVarContext all
643
644; Make sure we're not running
645Call un.CloseSecondLife
646
647; Clean up registry keys
648DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG"
649DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG"
650
651; Clean up shortcuts
652Delete "$SMPROGRAMS\$INSTSHORTCUT\*.*"
653RMDir "$SMPROGRAMS\$INSTSHORTCUT"
654
655Delete "$DESKTOP\$INSTSHORTCUT.lnk"
656Delete "$INSTDIR\$INSTSHORTCUT.lnk"
657Delete "$INSTDIR\Uninstall $INSTSHORTCUT.lnk"
658
659; Clean up cache and log files.
660; Leave them in-place for non AGNI installs.
661
662!ifdef UNINSTALL_SETTINGS
663Call un.DocumentsAndSettingsFolder
664!endif
665
666Call un.ProgramFiles
667
668SectionEnd ; end of uninstall section
669
670;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
671; (From the NSIS wiki, DK)
672; GetParameterValue
673;
674; Usage:
675; !insertmacro GetParameterValue "/L=" "1033"
676; pop $R0
677;
678; Returns on top of stack
679;
680; Example command lines:
681; foo.exe /S /L=1033 /D=C:\Program Files\Foo
682; or:
683; foo.exe /S "/L=1033" /D="C:\Program Files\Foo"
684; gpv "/L=" "1033"
685;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
686
687 !macro GetParameterValue SWITCH DEFAULT
688 Push $0
689 Push $1
690 Push $2
691 Push $3
692 Push $4
693
694 ;$CMDLINE='"My Setup\Setup.exe" /L=1033 /S'
695 Push "$CMDLINE"
696 Push '${SWITCH}"'
697 !insertmacro StrStr
698 Pop $0
699 StrCmp "$0" "" gpv_notquoted
700 ;$0='/L="1033" /S'
701 StrLen $2 "$0"
702 Strlen $1 "${SWITCH}"
703 IntOp $1 $1 + 1
704 StrCpy $0 "$0" $2 $1
705 ;$0='1033" /S'
706 Push "$0"
707 Push '"'
708 !insertmacro StrStr
709 Pop $1
710 StrLen $2 "$0"
711 StrLen $3 "$1"
712 IntOp $4 $2 - $3
713 StrCpy $0 $0 $4 0
714 Goto gpv_done
715
716 gpv_notquoted:
717 Push "$CMDLINE"
718 Push "${SWITCH}"
719 !insertmacro StrStr
720 Pop $0
721 StrCmp "$0" "" gpv_done
722 ;$0='/L="1033" /S'
723 StrLen $2 "$0"
724 Strlen $1 "${SWITCH}"
725 StrCpy $0 "$0" $2 $1
726 ;$0=1033 /S'
727 Push "$0"
728 Push ' '
729 !insertmacro StrStr
730 Pop $1
731 StrLen $2 "$0"
732 StrLen $3 "$1"
733 IntOp $4 $2 - $3
734 StrCpy $0 $0 $4 0
735 Goto gpv_done
736
737 gpv_done:
738 StrCmp "$0" "" 0 +2
739 StrCpy $0 "${DEFAULT}"
740
741 Pop $4
742 Pop $3
743 Pop $2
744 Pop $1
745 Exch $0
746 !macroend
747
748; And I had to modify StrStr a tiny bit.
749; Possible upgrade switch the goto's to use ${__LINE__}
750
751!macro STRSTR
752 Exch $R1 ; st=haystack,old$R1, $R1=needle
753 Exch ; st=old$R1,haystack
754 Exch $R2 ; st=old$R1,old$R2, $R2=haystack
755 Push $R3
756 Push $R4
757 Push $R5
758 StrLen $R3 $R1
759 StrCpy $R4 0
760 ; $R1=needle
761 ; $R2=haystack
762 ; $R3=len(needle)
763 ; $R4=cnt
764 ; $R5=tmp
765 ; loop;
766 StrCpy $R5 $R2 $R3 $R4
767 StrCmp $R5 $R1 +4
768 StrCmp $R5 "" +3
769 IntOp $R4 $R4 + 1
770 Goto -4
771 ; done;
772 StrCpy $R1 $R2 "" $R4
773 Pop $R5
774 Pop $R4
775 Pop $R3
776 Pop $R2
777 Exch $R1
778!macroend
779
780Function GetProgramName
781 !insertmacro GetParameterValue "/P=" "SecondLife"
782FunctionEnd
783
784Function un.GetProgramName
785 !insertmacro GetParameterValue "/P=" "SecondLife"
786FunctionEnd
787
788;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
789; (From the NSIS documentation, JC)
790; GetWindowsVersion
791;
792; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
793; Updated by Joost Verburg
794;
795; Returns on top of stack
796;
797; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
798; or
799; '' (Unknown Windows Version)
800;
801; Usage:
802; Call GetWindowsVersion
803; Pop $R0
804; ; at this point $R0 is "NT 4.0" or whatnot
805;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
806Function GetWindowsVersion
807
808 Push $R0
809 Push $R1
810
811 ReadRegStr $R0 HKLM \
812 "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
813
814 IfErrors 0 lbl_winnt
815
816 ; we are not NT
817 ReadRegStr $R0 HKLM \
818 "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
819
820 StrCpy $R1 $R0 1
821 StrCmp $R1 '4' 0 lbl_error
822
823 StrCpy $R1 $R0 3
824
825 StrCmp $R1 '4.0' lbl_win32_95
826 StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
827
828 lbl_win32_95:
829 StrCpy $R0 '95'
830 Goto lbl_done
831
832 lbl_win32_98:
833 StrCpy $R0 '98'
834 Goto lbl_done
835
836 lbl_win32_ME:
837 StrCpy $R0 'ME'
838 Goto lbl_done
839
840 lbl_winnt:
841
842 StrCpy $R1 $R0 1
843
844 StrCmp $R1 '3' lbl_winnt_x
845 StrCmp $R1 '4' lbl_winnt_x
846
847 StrCpy $R1 $R0 3
848
849 StrCmp $R1 '5.0' lbl_winnt_2000
850 StrCmp $R1 '5.1' lbl_winnt_XP
851 StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
852
853 lbl_winnt_x:
854 StrCpy $R0 "NT $R0" 6
855 Goto lbl_done
856
857 lbl_winnt_2000:
858 Strcpy $R0 '2000'
859 Goto lbl_done
860
861 lbl_winnt_XP:
862 Strcpy $R0 'XP'
863 Goto lbl_done
864
865 lbl_winnt_2003:
866 Strcpy $R0 '2003'
867 Goto lbl_done
868
869 lbl_error:
870 Strcpy $R0 ''
871 lbl_done:
872
873 Pop $R1
874 Exch $R0
875
876FunctionEnd
877
878;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
879!define LANGUAGE_SELECTION_REGISTRY_ROOT "HKCU"
880!define LANGUAGE_SELECTION_REGISTRY_KEY "Software\Linden Research, Inc."
881!define LANGUAGE_SELECTION_REGISTRY_VALUENAME "Installer Language"
882
883;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
884;; Note: to add new languages, add an entry to the menu
885;; and then add an entry to the language ID selector below
886;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
887Function .onInit
888
889 ; read the language from registry (ok if not there) and set langauge menu
890 ReadRegStr $0 '${LANGUAGE_SELECTION_REGISTRY_ROOT}' '${LANGUAGE_SELECTION_REGISTRY_KEY}' '${LANGUAGE_SELECTION_REGISTRY_VALUENAME}'
891 StrCpy $LANGUAGE $0
892
893 Push ""
894 Push ${LANG_ENGLISH}
895 Push English
896 Push ${LANG_GERMAN}
897 Push German
898 Push ${LANG_JAPANESE}
899 Push Japanese
900 Push ${LANG_KOREAN}
901 Push Korean
902 Push A ; A means auto count languages for the auto count to work the first empty push (Push "") must remain
903 LangDLL::LangDialog "Installer Language" "Please select the language of the installer"
904 Pop $LANGUAGE
905 StrCmp $LANGUAGE "cancel" 0 +2
906 Abort
907
908 ; save language in registry
909 WriteRegStr '${LANGUAGE_SELECTION_REGISTRY_ROOT}' '${LANGUAGE_SELECTION_REGISTRY_KEY}' '${LANGUAGE_SELECTION_REGISTRY_VALUENAME}' $LANGUAGE
910
911 ; generate language ID that will be used as a command line arg
912 StrCmp $LANGUAGE "1042" 0 +3
913 StrCpy $LANGFLAGS " -set SystemLanguage ko"
914 Goto EndOfFunc
915 StrCmp $LANGUAGE "1041" 0 +3
916 StrCpy $LANGFLAGS " -set SystemLanguage ja"
917 Goto EndOfFunc
918 StrCmp $LANGUAGE "1031" 0 +3
919 StrCpy $LANGFLAGS " -set SystemLanguage de"
920 Goto EndOfFunc
921 StrCmp $LANGUAGE "1033" 0 +3
922 StrCpy $LANGFLAGS " -set SystemLanguage en-us"
923 Goto EndOfFunc
924
925 EndOfFunc:
926
927FunctionEnd
928
929;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
930Function un.onInit
931
932 ; read language from registry and set for ininstaller
933 ReadRegStr $0 '${LANGUAGE_SELECTION_REGISTRY_ROOT}' '${LANGUAGE_SELECTION_REGISTRY_KEY}' '${LANGUAGE_SELECTION_REGISTRY_VALUENAME}'
934 StrCpy $LANGUAGE $0
935
936FunctionEnd
937
938;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EOF ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; \ No newline at end of file