Comments formatting changes, no behavior changes
parent
4673020c63
commit
14acb2fd0f
|
|
@ -1,6 +1,6 @@
|
|||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; secondlife setup.nsi
|
||||
;; Copyright 2004-2011, Linden Research, Inc.
|
||||
;; Copyright 2004-2015, Linden Research, Inc.
|
||||
;;
|
||||
;; This library is free software; you can redistribute it and/or
|
||||
;; modify it under the terms of the GNU Lesser General Public
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
;;
|
||||
;; Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
;;
|
||||
;; NSIS Unicode 2.38.1 or higher required
|
||||
;; NSIS Unicode 2.46.5 or higher required
|
||||
;; http://www.scratchpaper.com/
|
||||
;;
|
||||
;; Author: James Cook, Don Kjer, Callum Prentice
|
||||
|
|
@ -27,15 +27,15 @@
|
|||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Compiler flags
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
SetOverwrite on ; Overwrite files
|
||||
SetCompress auto ; Compress if saves space
|
||||
SetCompressor /solid lzma ; Compress whole installer as one block
|
||||
SetDatablockOptimize off ; Only saves us 0.1%, not worth it
|
||||
XPStyle on ; Add an XP manifest to the installer
|
||||
RequestExecutionLevel admin ; For when we write to Program Files
|
||||
SetOverwrite on # Overwrite files
|
||||
SetCompress auto # Compress if saves space
|
||||
SetCompressor /solid lzma # Compress whole installer as one block
|
||||
SetDatablockOptimize off # Only saves us 0.1%, not worth it
|
||||
XPStyle on # Add an XP manifest to the installer
|
||||
RequestExecutionLevel admin # For when we write to Program Files
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Project flags
|
||||
;; Project flags
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
%%VERSION%%
|
||||
|
|
@ -72,23 +72,23 @@ LangString LanguageCode ${LANG_RUSSIAN} "ru"
|
|||
LangString LanguageCode ${LANG_TURKISH} "tr"
|
||||
LangString LanguageCode ${LANG_TRADCHINESE} "zh"
|
||||
|
||||
;; this placeholder is replaced by viewer_manifest.py
|
||||
# this placeholder is replaced by viewer_manifest.py
|
||||
%%INST_VARS%%
|
||||
|
||||
Name ${INSTNAME}
|
||||
|
||||
SubCaption 0 $(LicenseSubTitleSetup) ; override "license agreement" text
|
||||
SubCaption 0 $(LicenseSubTitleSetup) # Override "license agreement" text
|
||||
|
||||
BrandingText " " ; bottom of window text
|
||||
BrandingText " " # Bottom of window text
|
||||
Icon %%SOURCE%%\installers\windows\install_icon.ico
|
||||
UninstallIcon %%SOURCE%%\installers\windows\uninstall_icon.ico
|
||||
WindowIcon on ; show our icon in left corner
|
||||
BGGradient off ; no big background window
|
||||
CRCCheck on ; make sure CRC is OK
|
||||
InstProgressFlags smooth colored ; new colored smooth look
|
||||
ShowInstDetails nevershow ; no details, no "show" button
|
||||
SetOverwrite on ; stomp files by default
|
||||
AutoCloseWindow true ; after all files install, close window
|
||||
WindowIcon on # Show our icon in left corner
|
||||
BGGradient off # No big background window
|
||||
CRCCheck on # Make sure CRC is OK
|
||||
InstProgressFlags smooth colored # New colored smooth look
|
||||
ShowInstDetails nevershow # No details, no "show" button
|
||||
SetOverwrite on # Overwrite files by default
|
||||
AutoCloseWindow true # After all files install, close window
|
||||
|
||||
InstallDir "$PROGRAMFILES\${INSTNAME}"
|
||||
InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" ""
|
||||
|
|
@ -97,51 +97,53 @@ Page directory dirPre
|
|||
Page instfiles
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Variables
|
||||
;; Variables
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Var INSTPROG
|
||||
Var INSTEXE
|
||||
Var INSTSHORTCUT
|
||||
Var COMMANDLINE ; command line passed to this installer, set in .onInit
|
||||
Var SHORTCUT_LANG_PARAM ; "--set InstallLanguage de", passes language to viewer
|
||||
Var SKIP_DIALOGS ; set from command line in .onInit. autoinstall
|
||||
; GUI and the defaults.
|
||||
Var SKIP_AUTORUN ; skip automatic launch of viewer after install
|
||||
Var DO_UNINSTALL_V2 ; If non-null, path to a previous Viewer 2 installation that will be uninstalled.
|
||||
Var COMMANDLINE # Command line passed to this installer, set in .onInit
|
||||
Var SHORTCUT_LANG_PARAM # "--set InstallLanguage de", Passes language to viewer
|
||||
Var SKIP_DIALOGS # Set from command line in .onInit. autoinstall
|
||||
# GUI and the defaults.
|
||||
Var SKIP_AUTORUN # Skip automatic launch of viewer after install
|
||||
Var DO_UNINSTALL_V2 # If non-null, path to a previous Viewer 2 installation that will be uninstalled.
|
||||
|
||||
;;; Function definitions should go before file includes, because calls to
|
||||
;;; DLLs like LangDLL trigger an implicit file include, so if that call is at
|
||||
;;; the end of this script NSIS has to decompress the whole installer before
|
||||
;;; it can call the DLL function. JC
|
||||
# Function definitions should go before file includes, because calls to
|
||||
# DLLs like LangDLL trigger an implicit file include, so if that call is at
|
||||
# the end of this script NSIS has to decompress the whole installer before
|
||||
# it can call the DLL function. JC
|
||||
|
||||
!include "FileFunc.nsh" ; For GetParameters, GetOptions
|
||||
!include "FileFunc.nsh" # For GetParameters, GetOptions
|
||||
!insertmacro GetParameters
|
||||
!insertmacro GetOptions
|
||||
!include WinVer.nsh ; For OS and SP detection
|
||||
!include WinVer.nsh # For OS and SP detection
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; After install completes, launch app
|
||||
;; After install completes, launch app
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function .onInstSuccess
|
||||
Call CheckWindowsServPack ; Warn if not on the latest SP before asking to launch.
|
||||
Push $R0 # Option value, unused
|
||||
Call CheckWindowsServPack # Warn if not on the latest SP before asking to launch.
|
||||
Push $R0 # Option value, unused
|
||||
StrCmp $SKIP_AUTORUN "true" +2;
|
||||
# Assumes SetOutPath $INSTDIR
|
||||
# Assumes SetOutPath $INSTDIR
|
||||
Exec '"$INSTDIR\$INSTEXE" $SHORTCUT_LANG_PARAM'
|
||||
Pop $R0
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Pre-directory page callback
|
||||
;; Pre-directory page callback
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function dirPre
|
||||
StrCmp $SKIP_DIALOGS "true" 0 +2
|
||||
Abort
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Make sure this computer meets the minimum system requirements.
|
||||
; Currently: Windows 32bit XP SP3, 64bit XP SP2 and Server 2003 SP2
|
||||
;; Make sure this computer meets the minimum system requirements.
|
||||
;; Currently: Windows Vista SP2
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function CheckWindowsVersion
|
||||
${If} ${AtMostWin2003}
|
||||
|
|
@ -160,10 +162,11 @@ Function CheckWindowsVersion
|
|||
MessageBox MB_OK $(CheckWindowsVersionMB)
|
||||
Quit
|
||||
${EndIf}
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Recommend Upgrading Service Pack
|
||||
;; Recommend Upgrading to Service Pack 1 for Windows 7, if not present
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function CheckWindowsServPack
|
||||
${If} ${IsWin7}
|
||||
|
|
@ -179,10 +182,11 @@ Function CheckWindowsServPack
|
|||
DetailPrint $(UseLatestServPackDP)
|
||||
Return
|
||||
${EndIf}
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Make sure the user can install/uninstall
|
||||
;; Make sure the user can install
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function CheckIfAdministrator
|
||||
DetailPrint $(CheckAdministratorInstDP)
|
||||
|
|
@ -193,10 +197,11 @@ Function CheckIfAdministrator
|
|||
Quit
|
||||
lbl_is_admin:
|
||||
Return
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;
|
||||
;; Make sure the user can uninstall
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function un.CheckIfAdministrator
|
||||
DetailPrint $(CheckAdministratorUnInstDP)
|
||||
|
|
@ -207,11 +212,12 @@ Function un.CheckIfAdministrator
|
|||
Quit
|
||||
lbl_is_admin:
|
||||
Return
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Checks to see if the current version has already been installed (according to the registry).
|
||||
; If it has, allow user to bail out of install process.
|
||||
;; Checks to see if the current version has already been installed (according to the registry).
|
||||
;; If it has, allow user to bail out of install process.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function CheckIfAlreadyCurrent
|
||||
Push $0
|
||||
|
|
@ -223,10 +229,11 @@ Function CheckIfAlreadyCurrent
|
|||
continue_install:
|
||||
Pop $0
|
||||
Return
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Checks for CPU valid (must have SSE2 support)
|
||||
;; Checks for CPU valid (must have SSE2 support)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function CheckCPUFlags
|
||||
Push $1
|
||||
|
|
@ -238,11 +245,12 @@ Function CheckCPUFlags
|
|||
OK_SSE2:
|
||||
Pop $1
|
||||
Return
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Close the program, if running. Modifies no variables.
|
||||
; Allows user to bail out of install process.
|
||||
;; Close the program, if running. Modifies no variables.
|
||||
;; Allows user to bail out of install process.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function CloseSecondLife
|
||||
Push $0
|
||||
|
|
@ -268,50 +276,51 @@ Function CloseSecondLife
|
|||
DONE:
|
||||
Pop $0
|
||||
Return
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Test our connection to secondlife.com
|
||||
; Also allows us to count attempted installs by examining web logs.
|
||||
; *TODO: Return current SL version info and have installer check
|
||||
; if it is up to date.
|
||||
;; Test our connection to secondlife.com
|
||||
;; Also allows us to count attempted installs by examining web logs.
|
||||
;; *TODO: Return current SL version info and have installer check
|
||||
;; if it is up to date.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function CheckNetworkConnection
|
||||
Push $0
|
||||
Push $1
|
||||
Push $2 # Option value for GetOptions
|
||||
DetailPrint $(CheckNetworkConnectionDP)
|
||||
; Look for a tag value from the stub installer, used for statistics
|
||||
; to correlate installs. Default to "" if not found on command line.
|
||||
# Look for a tag value from the stub installer, used for statistics to correlate installs.
|
||||
# Default to "" if not found on command line.
|
||||
StrCpy $2 ""
|
||||
${GetOptions} $COMMANDLINE "/STUBTAG=" $2
|
||||
GetTempFileName $0
|
||||
!define HTTP_TIMEOUT 5000 ; milliseconds
|
||||
; Don't show secondary progress bar, this will be quick.
|
||||
!define HTTP_TIMEOUT 5000 # milliseconds
|
||||
# Don't show secondary progress bar, this will be quick.
|
||||
NSISdl::download_quiet \
|
||||
/TIMEOUT=${HTTP_TIMEOUT} \
|
||||
"http://install.secondlife.com/check/?stubtag=$2&version=${VERSION_LONG}" \
|
||||
$0
|
||||
Pop $1 ; Return value, either "success", "cancel" or an error message
|
||||
Pop $1 # Return value, either "success", "cancel" or an error message
|
||||
; MessageBox MB_OK "Download result: $1"
|
||||
; Result ignored for now
|
||||
; StrCmp $1 "success" +2
|
||||
; DetailPrint "Connection failed: $1"
|
||||
Delete $0 ; temporary file
|
||||
Delete $0 # temporary file
|
||||
Pop $2
|
||||
Pop $1
|
||||
Pop $0
|
||||
Return
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Function CheckOldExeName
|
||||
; Viewer versions < 3.6.12 used the name 'SecondLife.exe'
|
||||
; If that name is found in the install folder, delete it to invalidate any
|
||||
; old shortcuts to it that may be in non-standard locations, so that the user
|
||||
; does not end up running the old version (potentially getting caught in an
|
||||
; infinite update loop). See MAINT-3575
|
||||
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Function CheckOldExeName
|
||||
;; Viewer versions < 3.6.12 used the name 'SecondLife.exe'
|
||||
;; If that name is found in the install folder, delete it to invalidate any
|
||||
;; old shortcuts to it that may be in non-standard locations. This is to prevent
|
||||
;; the userpotentially getting caught in an infinite update loop). See MAINT-3575
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
Function CheckOldExeName
|
||||
IfFileExists "$INSTDIR\SecondLife.exe" CHECKOLDEXE_FOUND CHECKOLDEXE_DONE
|
||||
|
|
@ -319,23 +328,22 @@ Function CheckOldExeName
|
|||
CHECKOLDEXE_FOUND:
|
||||
Delete "$INSTDIR\SecondLife.exe"
|
||||
CHECKOLDEXE_DONE:
|
||||
|
||||
FunctionEnd
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Function CheckWillUninstallV2
|
||||
;
|
||||
; If we are being called through auto-update, we need to uninstall any
|
||||
; existing V2 installation. Otherwise, we wind up with
|
||||
; SecondLifeViewer2 and SecondLifeViewer installations existing side
|
||||
; by side no indication which to use.
|
||||
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Function CheckWillUninstallV2
|
||||
;;
|
||||
;; If called through auto-update, need to uninstall any existing V2 installation.
|
||||
;; Don't want to end up with SecondLifeViewer2 and SecondLifeViewer installations
|
||||
;; existing side by side with no indication on which to use.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function CheckWillUninstallV2
|
||||
|
||||
StrCpy $DO_UNINSTALL_V2 ""
|
||||
|
||||
StrCmp $SKIP_DIALOGS "true" 0 CHECKV2_DONE
|
||||
StrCmp $INSTDIR "$PROGRAMFILES\SecondLifeViewer2" CHECKV2_DONE ; don't uninstall our own install dir.
|
||||
StrCmp $INSTDIR "$PROGRAMFILES\SecondLifeViewer2" CHECKV2_DONE # Don't uninstall our own install dir.
|
||||
IfFileExists "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" CHECKV2_FOUND CHECKV2_DONE
|
||||
|
||||
CHECKV2_FOUND:
|
||||
|
|
@ -346,7 +354,7 @@ CHECKV2_DONE:
|
|||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Save user files to temp location
|
||||
;; Save user files to temp location
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function PreserveUserFiles
|
||||
|
||||
|
|
@ -354,18 +362,18 @@ Push $0
|
|||
Push $1
|
||||
Push $2
|
||||
|
||||
RMDir /r "$TEMP\SecondLifeSettingsBackup"
|
||||
RMDir /r "$TEMP\SecondLifeSettingsBackup" # Clear out any old data that might be there
|
||||
CreateDirectory "$TEMP\SecondLifeSettingsBackup"
|
||||
StrCpy $0 0 ; Index number used to iterate via EnumRegKey
|
||||
StrCpy $0 0 # Index number used to iterate via EnumRegKey
|
||||
|
||||
LOOP:
|
||||
EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
|
||||
StrCmp $1 "" DONE ; no more users
|
||||
StrCmp $1 "" DONE # no more users
|
||||
|
||||
ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath"
|
||||
StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing
|
||||
StrCmp $2 "" CONTINUE 0 # "ProfileImagePath" value is missing
|
||||
|
||||
; Required since ProfileImagePath is of type REG_EXPAND_SZ
|
||||
# Required since ProfileImagePath is of type REG_EXPAND_SZ
|
||||
ExpandEnvStrings $2 $2
|
||||
|
||||
CreateDirectory "$TEMP\SecondLifeSettingsBackup\$0"
|
||||
|
|
@ -380,7 +388,7 @@ Pop $2
|
|||
Pop $1
|
||||
Pop $0
|
||||
|
||||
; Copy files in Documents and Settings\All Users\SecondLife
|
||||
# Copy files in Documents and Settings\All Users\SecondLife
|
||||
Push $0
|
||||
ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
|
||||
StrCmp $0 "" +2
|
||||
|
|
@ -391,7 +399,7 @@ Pop $0
|
|||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Restore user files from temp location
|
||||
;; Restore user files from temp location
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function RestoreUserFiles
|
||||
|
||||
|
|
@ -399,16 +407,16 @@ Push $0
|
|||
Push $1
|
||||
Push $2
|
||||
|
||||
StrCpy $0 0 ; Index number used to iterate via EnumRegKey
|
||||
StrCpy $0 0 # Index number used to iterate via EnumRegKey
|
||||
|
||||
LOOP:
|
||||
EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
|
||||
StrCmp $1 "" DONE ; no more users
|
||||
StrCmp $1 "" DONE # no more users
|
||||
|
||||
ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath"
|
||||
StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing
|
||||
StrCmp $2 "" CONTINUE 0 # "ProfileImagePath" value is missing
|
||||
|
||||
; Required since ProfileImagePath is of type REG_EXPAND_SZ
|
||||
# Required since ProfileImagePath is of type REG_EXPAND_SZ
|
||||
ExpandEnvStrings $2 $2
|
||||
|
||||
CreateDirectory "$2\Application Data\SecondLife\"
|
||||
|
|
@ -423,7 +431,7 @@ Pop $2
|
|||
Pop $1
|
||||
Pop $0
|
||||
|
||||
; Copy files in Documents and Settings\All Users\SecondLife
|
||||
# Copy files in Documents and Settings\All Users\SecondLife
|
||||
Push $0
|
||||
ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
|
||||
StrCmp $0 "" +2
|
||||
|
|
@ -434,7 +442,7 @@ Pop $0
|
|||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Remove temp dirs
|
||||
;; Remove temp directories
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function RemoveTempUserFiles
|
||||
|
||||
|
|
@ -442,16 +450,16 @@ Push $0
|
|||
Push $1
|
||||
Push $2
|
||||
|
||||
StrCpy $0 0 ; Index number used to iterate via EnumRegKey
|
||||
StrCpy $0 0 # Index number used to iterate via EnumRegKey
|
||||
|
||||
LOOP:
|
||||
EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
|
||||
StrCmp $1 "" DONE ; no more users
|
||||
StrCmp $1 "" DONE # no more users
|
||||
|
||||
ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath"
|
||||
StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing
|
||||
StrCmp $2 "" CONTINUE 0 # "ProfileImagePath" value is missing
|
||||
|
||||
; Required since ProfileImagePath is of type REG_EXPAND_SZ
|
||||
# Required since ProfileImagePath is of type REG_EXPAND_SZ
|
||||
ExpandEnvStrings $2 $2
|
||||
|
||||
RMDir /r "$TEMP\SecondLifeSettingsBackup\$0\*"
|
||||
|
|
@ -465,7 +473,7 @@ Pop $2
|
|||
Pop $1
|
||||
Pop $0
|
||||
|
||||
; Copy files in Documents and Settings\All Users\SecondLife
|
||||
# Copy files in Documents and Settings\All Users\SecondLife
|
||||
Push $0
|
||||
ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
|
||||
StrCmp $0 "" +2
|
||||
|
|
@ -474,10 +482,9 @@ Pop $0
|
|||
|
||||
FunctionEnd
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Clobber user files - TEST ONLY
|
||||
; This is here for testing, generally not desirable to call it.
|
||||
;; Clobber user files - TEST ONLY
|
||||
;; This is here for testing, DO NOT USE UNLESS YOU KNOW WHAT YOU ARE TESTING FOR!
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;Function ClobberUserFilesTESTONLY
|
||||
|
||||
|
|
@ -485,16 +492,16 @@ FunctionEnd
|
|||
;Push $1
|
||||
;Push $2
|
||||
;
|
||||
; StrCpy $0 0 ; Index number used to iterate via EnumRegKey
|
||||
; StrCpy $0 0 # Index number used to iterate via EnumRegKey
|
||||
;
|
||||
; LOOP:
|
||||
; EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
|
||||
; StrCmp $1 "" DONE ; no more users
|
||||
; StrCmp $1 "" DONE # no more users
|
||||
;
|
||||
; ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath"
|
||||
; StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing
|
||||
; StrCmp $2 "" CONTINUE 0 # "ProfileImagePath" value is missing
|
||||
;
|
||||
; ; Required since ProfileImagePath is of type REG_EXPAND_SZ
|
||||
;# Required since ProfileImagePath is of type REG_EXPAND_SZ
|
||||
; ExpandEnvStrings $2 $2
|
||||
;
|
||||
; RMDir /r "$2\Application Data\SecondLife\"
|
||||
|
|
@ -508,7 +515,7 @@ FunctionEnd
|
|||
;Pop $1
|
||||
;Pop $0
|
||||
;
|
||||
;; Copy files in Documents and Settings\All Users\SecondLife
|
||||
;# Copy files in Documents and Settings\All Users\SecondLife
|
||||
;Push $0
|
||||
; ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
|
||||
; StrCmp $0 "" +2
|
||||
|
|
@ -518,10 +525,10 @@ FunctionEnd
|
|||
;FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Delete the installed shader files
|
||||
;;; Since shaders are in active development, we'll likely need to shuffle them
|
||||
;;; around a bit from build to build. This ensures that shaders that we move
|
||||
;;; or rename in the dev tree don't get left behind in the install.
|
||||
;; Delete the installed shader files
|
||||
;; Since shaders are in active development, we'll likely need to shuffle them
|
||||
;; around a bit from build to build. This ensures that shaders that were removed
|
||||
;; or renamed don't get left behind in the install directory.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function RemoveOldShaders
|
||||
|
||||
|
|
@ -531,14 +538,13 @@ RMDir /r "$INSTDIR\app_settings\shaders\*"
|
|||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Delete the installed XUI files
|
||||
;;; We've changed the directory hierarchy for skins, putting all XUI and texture
|
||||
;;; files under a specific skin directory, i.e. skins/default/xui/en-us as opposed
|
||||
;;; to skins/xui/en-us. Need to clean up the old path when upgrading
|
||||
;; Delete the installed XUI files
|
||||
;; We've changed the directory hierarchy for skins, putting all XUI and texture
|
||||
;; files under a specific skin directory, i.e. skins/default/xui/en-us as opposed
|
||||
;; to skins/xui/en-us. Need to clean up the old path when upgrading.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function RemoveOldXUI
|
||||
|
||||
;; remove old XUI and texture files
|
||||
RmDir /r "$INSTDIR\skins\html"
|
||||
RmDir /r "$INSTDIR\skins\xui"
|
||||
RmDir /r "$INSTDIR\skins\textures"
|
||||
|
|
@ -547,47 +553,41 @@ Delete "$INSTDIR\skins\*.txt"
|
|||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Remove any releasenotes files.
|
||||
;;; We are no longer including release notes with the viewer. This will delete
|
||||
;;; any that were left behind by an older installer. Delete will not fail if
|
||||
;;; the files do not exist
|
||||
;; Remove any release notes files.
|
||||
;; We are no longer including release notes with the viewer, so remove them.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function RemoveOldReleaseNotes
|
||||
|
||||
;; remove releasenotes.txt file from application directory, and the shortcut
|
||||
;; from the start menu.
|
||||
Delete "$SMPROGRAMS\$INSTSHORTCUT\SL Release Notes.lnk"
|
||||
Delete "$INSTDIR\releasenotes.txt"
|
||||
|
||||
FunctionEnd
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Delete files in Documents and Settings\<user>\SecondLife
|
||||
; Delete files in Documents and Settings\All Users\SecondLife
|
||||
;; Delete files in \Users\<User>\AppData\Roaming\SecondLife
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function un.DocumentsAndSettingsFolder
|
||||
|
||||
; Delete files in Documents and Settings\<user>\SecondLife
|
||||
# Delete files in \Users\<User>\AppData\Roaming\SecondLife
|
||||
Push $0
|
||||
Push $1
|
||||
Push $2
|
||||
|
||||
DetailPrint "Deleting files in Documents and Settings folder"
|
||||
DetailPrint "Deleting Second Life files"
|
||||
|
||||
StrCpy $0 0 ; Index number used to iterate via EnumRegKey
|
||||
StrCpy $0 0 # Index number used to iterate via EnumRegKey
|
||||
|
||||
LOOP:
|
||||
EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
|
||||
StrCmp $1 "" DONE ; no more users
|
||||
StrCmp $1 "" DONE # no more users
|
||||
|
||||
ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath"
|
||||
StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing
|
||||
StrCmp $2 "" CONTINUE 0 # "ProfileImagePath" value is missing
|
||||
|
||||
; Required since ProfileImagePath is of type REG_EXPAND_SZ
|
||||
# Required since ProfileImagePath is of type REG_EXPAND_SZ
|
||||
ExpandEnvStrings $2 $2
|
||||
|
||||
; Remove all cache and settings files but leave any other .txt files to preserve the chat logs
|
||||
# Remove all settings files but leave any other .txt files to preserve the chat logs
|
||||
; RMDir /r "$2\Application Data\SecondLife\logs"
|
||||
RMDir /r "$2\Application Data\SecondLife\browser_profile"
|
||||
RMDir /r "$2\Application Data\SecondLife\user_settings"
|
||||
|
|
@ -606,23 +606,23 @@ Pop $2
|
|||
Pop $1
|
||||
Pop $0
|
||||
|
||||
; Delete files in Documents and Settings\All Users\SecondLife
|
||||
# Delete files in Program Data folder
|
||||
Push $0
|
||||
ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
|
||||
StrCmp $0 "" +2
|
||||
RMDir /r "$0\SecondLife"
|
||||
Pop $0
|
||||
|
||||
; Delete files in C:\Windows\Application Data\SecondLife
|
||||
; If the user is running on a pre-NT system, Application Data lives here instead of
|
||||
; in Documents and Settings.
|
||||
# Delete files in C:\Windows\Application Data\SecondLife
|
||||
# If the user is running on a pre-NT system, Application Data lives here instead of
|
||||
# in Documents and Settings.
|
||||
RMDir /r "$WINDIR\Application Data\SecondLife"
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Close the program, if running. Modifies no variables.
|
||||
; Allows user to bail out of uninstall process.
|
||||
;; Close the program, if running. Modifies no variables.
|
||||
;; Allows user to bail out of uninstall process.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function un.CloseSecondLife
|
||||
Push $0
|
||||
|
|
@ -646,14 +646,13 @@ Function un.CloseSecondLife
|
|||
DONE:
|
||||
Pop $0
|
||||
Return
|
||||
|
||||
FunctionEnd
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
; Delete the stored password for the current Windows user
|
||||
; DEV-10821 -- Unauthorised user can gain access to an SL account after a real user has uninstalled
|
||||
;
|
||||
;; Delete the stored password for the current Windows user
|
||||
;; DEV-10821 -- Unauthorised user can gain access to an SL account after a real user has uninstalled
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function un.RemovePassword
|
||||
|
||||
DetailPrint "Removing Second Life password"
|
||||
|
|
@ -665,23 +664,21 @@ SetShellVarContext all
|
|||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Delete the installed files
|
||||
;;; This deletes the uninstall executable, but it works
|
||||
;;; because it is copied to temp directory before running
|
||||
;;;
|
||||
;;; Note: You must list all files here, because we only
|
||||
;;; want to delete our files, not things users left in the
|
||||
;;; application directories.
|
||||
;; Delete the installed files
|
||||
;; This deletes the uninstall executable, but it works because it is copied to temp directory before running
|
||||
;;
|
||||
;; Note: You must list all files here, because we only want to delete our files,
|
||||
;; not things users left in the application directories.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function un.ProgramFiles
|
||||
|
||||
;; Remove mozilla file first so recursive directory deletion doesn't get hung up
|
||||
# Remove mozilla file first so recursive directory deletion doesn't get hung up
|
||||
Delete "$INSTDIR\app_settings\mozilla\components"
|
||||
|
||||
;; This placeholder is replaced by the complete list of files to uninstall by viewer_manifest.py
|
||||
# This placeholder is replaced by the complete list of files to uninstall by viewer_manifest.py
|
||||
%%DELETE_FILES%%
|
||||
|
||||
;; Optional/obsolete files. Delete won't fail if they don't exist.
|
||||
# Optional/obsolete files. Delete won't fail if they don't exist.
|
||||
Delete "$INSTDIR\dronesettings.ini"
|
||||
Delete "$INSTDIR\message_template.msg"
|
||||
Delete "$INSTDIR\newview.pdb"
|
||||
|
|
@ -694,9 +691,11 @@ Delete "$INSTDIR\motions\*.lla"
|
|||
Delete "$INSTDIR\trial\*.html"
|
||||
Delete "$INSTDIR\newview.exe"
|
||||
Delete "$INSTDIR\SecondLife.exe"
|
||||
;; MAINT-3099 workaround - prevent these log files, if present, from causing a user alert
|
||||
|
||||
# MAINT-3099 workaround - prevent these log files, if present, from causing a user alert
|
||||
Delete "$INSTDIR\VivoxVoiceService-*.log"
|
||||
;; Remove entire help directory
|
||||
|
||||
# Remove entire help directory
|
||||
Delete "$INSTDIR\help\Advanced\*"
|
||||
RMDir "$INSTDIR\help\Advanced"
|
||||
Delete "$INSTDIR\help\basics\*"
|
||||
|
|
@ -714,7 +713,7 @@ RMDir "$INSTDIR"
|
|||
IfFileExists "$INSTDIR" FOLDERFOUND NOFOLDER
|
||||
|
||||
FOLDERFOUND:
|
||||
; Silent uninstall always removes all files (/SD IDYES)
|
||||
# Silent uninstall always removes all files (/SD IDYES)
|
||||
MessageBox MB_YESNO $(DeleteProgramFilesMB) /SD IDYES IDNO NOFOLDER
|
||||
RMDir /r "$INSTDIR"
|
||||
|
||||
|
|
@ -723,33 +722,35 @@ NOFOLDER:
|
|||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Uninstall settings
|
||||
;; Uninstall settings
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
UninstallText $(UninstallTextMsg)
|
||||
ShowUninstDetails show
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Uninstall section
|
||||
;; Uninstall Section
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Section Uninstall
|
||||
|
||||
; Start with some default values.
|
||||
# Start with some default values.
|
||||
StrCpy $INSTPROG "${INSTNAME}"
|
||||
StrCpy $INSTEXE "${INSTEXE}"
|
||||
StrCpy $INSTSHORTCUT "${SHORTCUT}"
|
||||
Call un.CheckIfAdministrator ; Make sure the user can install/uninstall
|
||||
|
||||
; uninstall for all users (if you change this, change it in the install as well)
|
||||
# Make sure the user can install/uninstall
|
||||
Call un.CheckIfAdministrator
|
||||
|
||||
# uninstall for all users (if you change this, change it in the install as well)
|
||||
SetShellVarContext all
|
||||
|
||||
; Make sure we're not running
|
||||
# Make sure we're not running
|
||||
Call un.CloseSecondLife
|
||||
|
||||
; Clean up registry keys and subkeys (these should all be !defines somewhere)
|
||||
# Clean up registry keys and subkeys (these should all be !defines somewhere)
|
||||
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG"
|
||||
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG"
|
||||
|
||||
; Clean up shortcuts
|
||||
# Clean up shortcuts
|
||||
Delete "$SMPROGRAMS\$INSTSHORTCUT\*.*"
|
||||
RMDir "$SMPROGRAMS\$INSTSHORTCUT"
|
||||
|
||||
|
|
@ -757,81 +758,85 @@ Delete "$DESKTOP\$INSTSHORTCUT.lnk"
|
|||
Delete "$INSTDIR\$INSTSHORTCUT.lnk"
|
||||
Delete "$INSTDIR\Uninstall $INSTSHORTCUT.lnk"
|
||||
|
||||
; Clean up cache and log files.
|
||||
; Leave them in-place for non AGNI installs.
|
||||
# Clean up cache and log files, but leave them in-place for non AGNI installs.
|
||||
|
||||
!ifdef UNINSTALL_SETTINGS
|
||||
Call un.DocumentsAndSettingsFolder
|
||||
!endif
|
||||
|
||||
; remove stored password on uninstall
|
||||
# Remove stored password on uninstall
|
||||
Call un.RemovePassword
|
||||
|
||||
Call un.ProgramFiles
|
||||
|
||||
SectionEnd ; end of uninstall section
|
||||
# End of uninstall section
|
||||
|
||||
SectionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Note: to add new languages, add a language file include to the list
|
||||
;; at the top of this file, add an entry to the menu and then add an
|
||||
;; entry to the language ID selector below
|
||||
;; Prep Installer Section
|
||||
;;
|
||||
;; Note: to add new languages, add a language file include to the list
|
||||
;; at the top of this file, add an entry to the menu and then add an
|
||||
;; entry to the language ID selector below
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function .onInit
|
||||
Call CheckWindowsVersion ; Don't install On unsupported systems
|
||||
Call CheckWindowsVersion # Don't install On unsupported systems
|
||||
Push $0
|
||||
${GetParameters} $COMMANDLINE ; get our command line
|
||||
${GetParameters} $COMMANDLINE # Get our command line
|
||||
|
||||
${GetOptions} $COMMANDLINE "/SKIP_DIALOGS" $0
|
||||
IfErrors +2 0 ; If error jump past setting SKIP_DIALOGS
|
||||
IfErrors +2 0 # If error jump past setting SKIP_DIALOGS
|
||||
StrCpy $SKIP_DIALOGS "true"
|
||||
|
||||
${GetOptions} $COMMANDLINE "/SKIP_AUTORUN" $0
|
||||
IfErrors +2 0 ; If error jump past setting SKIP_AUTORUN
|
||||
IfErrors +2 0 # If error jump past setting SKIP_AUTORUN
|
||||
StrCpy $SKIP_AUTORUN "true"
|
||||
|
||||
${GetOptions} $COMMANDLINE "/LANGID=" $0 ; /LANGID=1033 implies US English
|
||||
${GetOptions} $COMMANDLINE "/LANGID=" $0 # /LANGID=1033 implies US English
|
||||
|
||||
; If no language (error), then proceed
|
||||
# If no language (error), then proceed
|
||||
IfErrors lbl_configure_default_lang
|
||||
; No error means we got a language, so use it
|
||||
# No error means we got a language, so use it
|
||||
StrCpy $LANGUAGE $0
|
||||
Goto lbl_return
|
||||
|
||||
lbl_configure_default_lang:
|
||||
; If we currently have a version of SL installed, default to the language of that install
|
||||
; Otherwise don't change $LANGUAGE and it will default to the OS UI language.
|
||||
# If we currently have a version of SL installed, default to the language of that install
|
||||
# Otherwise don't change $LANGUAGE and it will default to the OS UI language.
|
||||
ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage"
|
||||
IfErrors +2 0 ; If error skip the copy instruction
|
||||
IfErrors +2 0 # If error skip the copy instruction
|
||||
StrCpy $LANGUAGE $0
|
||||
|
||||
; For silent installs, no language prompt, use default
|
||||
# For silent installs, no language prompt, use default
|
||||
IfSilent lbl_return
|
||||
StrCmp $SKIP_DIALOGS "true" lbl_return
|
||||
|
||||
lbl_build_menu:
|
||||
Push ""
|
||||
# Use separate file so labels can be UTF-16 but we can still merge changes
|
||||
# into this ASCII file. JC
|
||||
# Use separate file so labels can be UTF-16 but we can still merge changes into this ASCII file. JC
|
||||
!include "%%SOURCE%%\installers\windows\language_menu.nsi"
|
||||
|
||||
Push A ; A means auto count languages for the auto count to work the first empty push (Push "") must remain
|
||||
Push A # A means auto count languages for the auto count to work the first empty push (Push "") must remain
|
||||
LangDLL::LangDialog $(InstallerLanguageTitle) $(SelectInstallerLanguage)
|
||||
Pop $0
|
||||
StrCmp $0 "cancel" 0 +2
|
||||
Abort
|
||||
StrCpy $LANGUAGE $0
|
||||
|
||||
; save language in registry
|
||||
# save language in registry
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage" $LANGUAGE
|
||||
lbl_return:
|
||||
Pop $0
|
||||
Return
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Prep Uninstaller Section
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Function un.onInit
|
||||
; read language from registry and set for uninstaller
|
||||
; Key will be removed on successful uninstall
|
||||
# Read language from registry and set for uninstaller. Key will be removed on successful uninstall
|
||||
ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage"
|
||||
IfErrors lbl_end
|
||||
StrCpy $LANGUAGE $0
|
||||
|
|
@ -840,56 +845,50 @@ lbl_end:
|
|||
FunctionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; MAIN SECTION
|
||||
;; Default Section
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
Section "" ; (default section)
|
||||
Section "" # (default section)
|
||||
|
||||
SetShellVarContext all ; install for all users (if you change this, change it in the uninstall as well)
|
||||
SetShellVarContext all # install for all users (if you change this, change it in the uninstall as well)
|
||||
|
||||
; Start with some default values.
|
||||
# Start with some default values.
|
||||
StrCpy $INSTPROG "${INSTNAME}"
|
||||
StrCpy $INSTEXE "${INSTEXE}"
|
||||
StrCpy $INSTSHORTCUT "${SHORTCUT}"
|
||||
|
||||
Call CheckCPUFlags ; Make sure we have SSE2 support
|
||||
Call CheckIfAdministrator ; Make sure the user can install/uninstall
|
||||
Call CheckIfAlreadyCurrent ; Make sure that we haven't already installed this version
|
||||
Call CloseSecondLife ; Make sure we're not running
|
||||
Call CheckNetworkConnection ; ping secondlife.com
|
||||
Call CheckWillUninstallV2 ; See if a V2 install exists and will be removed.
|
||||
Call CheckOldExeName ; Clean up a previous version of the exe
|
||||
Call CheckCPUFlags # Make sure we have SSE2 support
|
||||
Call CheckIfAdministrator # Make sure the user can install/uninstall
|
||||
Call CheckIfAlreadyCurrent # Make sure that we haven't already installed this version
|
||||
Call CloseSecondLife # Make sure we're not running
|
||||
Call CheckNetworkConnection # ping secondlife.com
|
||||
Call CheckWillUninstallV2 # See if a V2 install exists and will be removed.
|
||||
Call CheckOldExeName # Clean up a previous version of the exe
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
StrCmp $DO_UNINSTALL_V2 "" PRESERVE_DONE
|
||||
Call PreserveUserFiles
|
||||
PRESERVE_DONE:
|
||||
|
||||
;;; Don't remove cache files during a regular install, removing the inventory cache on upgrades results in lots of damage to the servers.
|
||||
;Call RemoveCacheFiles ; Installing over removes potentially corrupted
|
||||
; VFS and cache files.
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Need to clean out shader files from previous installs to fix DEV-5663
|
||||
# Don't remove cache files during a regular install,
|
||||
# removing the inventory cache on upgrades results in lots of damage to the servers.
|
||||
;Call RemoveCacheFiles # Installing over removes potentially corrupted
|
||||
# VFS and cache files.
|
||||
|
||||
# Need to clean out shader files from previous installs to fix DEV-5663
|
||||
Call RemoveOldShaders
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Need to clean out old XUI files that predate skinning
|
||||
# Need to clean out old XUI files that predate skinning
|
||||
Call RemoveOldXUI
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Clear out old releasenotes.txt files. These are now on the public wiki.
|
||||
# Clear out old releasenotes.txt files. These are now on the public wiki.
|
||||
Call RemoveOldReleaseNotes
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Files
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; This placeholder is replaced by the complete list of all the files in the installer, by viewer_manifest.py
|
||||
# This placeholder is replaced by the complete list of all the files in the installer, by viewer_manifest.py
|
||||
%%INSTALL_FILES%%
|
||||
|
||||
# Pass the installer's language to the client to use as a default
|
||||
StrCpy $SHORTCUT_LANG_PARAM "--set InstallLanguage $(LanguageCode)"
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Shortcuts in start menu
|
||||
# Shortcuts in start menu
|
||||
CreateDirectory "$SMPROGRAMS\$INSTSHORTCUT"
|
||||
SetOutPath "$INSTDIR"
|
||||
CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT.lnk" \
|
||||
|
|
@ -908,8 +907,7 @@ WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Scripting Language Help.url" \
|
|||
CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\Uninstall $INSTSHORTCUT.lnk" \
|
||||
'"$INSTDIR\uninst.exe"' ''
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Other shortcuts
|
||||
# Other shortcuts
|
||||
SetOutPath "$INSTDIR"
|
||||
CreateShortCut "$DESKTOP\$INSTSHORTCUT.lnk" \
|
||||
"$INSTDIR\$INSTEXE" "$SHORTCUT_LANG_PARAM"
|
||||
|
|
@ -918,9 +916,7 @@ CreateShortCut "$INSTDIR\$INSTSHORTCUT.lnk" \
|
|||
CreateShortCut "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" \
|
||||
'"$INSTDIR\uninst.exe"' ''
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Write registry
|
||||
# Write registry
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "" "$INSTDIR"
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Version" "${VERSION_LONG}"
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Shortcut" "$INSTSHORTCUT"
|
||||
|
|
@ -928,35 +924,34 @@ WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Exe"
|
|||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "DisplayName" "$INSTPROG (remove only)"
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "UninstallString" '"$INSTDIR\uninst.exe"'
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Write URL registry info
|
||||
# Write URL registry info
|
||||
WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}" "(default)" "URL:Second Life"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}" "URL Protocol" ""
|
||||
WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}\DefaultIcon" "" '"$INSTDIR\$INSTEXE"'
|
||||
;; URL param must be last item passed to viewer, it ignores subsequent params
|
||||
;; to avoid parameter injection attacks.
|
||||
|
||||
# URL param must be last item passed to viewer, it ignores subsequent params to avoid parameter injection attacks.
|
||||
WriteRegExpandStr HKEY_CLASSES_ROOT "${URLNAME}\shell\open\command" "" '"$INSTDIR\$INSTEXE" -url "%1"'
|
||||
WriteRegStr HKEY_CLASSES_ROOT "x-grid-location-info"(default)" "URL:Second Life"
|
||||
WriteRegStr HKEY_CLASSES_ROOT "x-grid-location-info" "URL Protocol" ""
|
||||
WriteRegStr HKEY_CLASSES_ROOT "x-grid-location-info\DefaultIcon" "" '"$INSTDIR\$INSTEXE"'
|
||||
;; URL param must be last item passed to viewer, it ignores subsequent params
|
||||
;; to avoid parameter injection attacks.
|
||||
|
||||
# URL param must be last item passed to viewer, it ignores subsequent params to avoid parameter injection attacks.
|
||||
WriteRegExpandStr HKEY_CLASSES_ROOT "x-grid-location-info\shell\open\command" "" '"$INSTDIR\$INSTEXE" -url "%1"'
|
||||
|
||||
; write out uninstaller
|
||||
# write out uninstaller
|
||||
WriteUninstaller "$INSTDIR\uninst.exe"
|
||||
|
||||
; Uninstall existing "Second Life Viewer 2" install if needed.
|
||||
# Uninstall existing "Second Life Viewer 2" install if needed.
|
||||
StrCmp $DO_UNINSTALL_V2 "" REMOVE_SLV2_DONE
|
||||
ExecWait '"$PROGRAMFILES\SecondLifeViewer2\uninst.exe" /S _?=$PROGRAMFILES\SecondLifeViewer2'
|
||||
Delete "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" ; with _? option above, uninst.exe will be left behind.
|
||||
RMDir "$PROGRAMFILES\SecondLifeViewer2" ; will remove only if empty.
|
||||
Delete "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" # with _? option above, uninst.exe will be left behind.
|
||||
RMDir "$PROGRAMFILES\SecondLifeViewer2" # will remove only if empty.
|
||||
|
||||
Call RestoreUserFiles
|
||||
Call RemoveTempUserFiles
|
||||
REMOVE_SLV2_DONE:
|
||||
|
||||
; end of default section
|
||||
# end of default section
|
||||
SectionEnd
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EOF ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
|
|||
Loading…
Reference in New Issue