From 72a8ef8b2ce4581bcb533785a928e97cef6ee328 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Fri, 8 May 2015 17:07:51 +0200 Subject: [PATCH] Bulk-revert Win32 installer - can't be more broken then what's in there right now --- .../installers/windows/installer_template.nsi | 1391 ++++++++++------- indra/newview/installers/windows/lang_da.nsi | Bin 7816 -> 9002 bytes indra/newview/installers/windows/lang_de.nsi | Bin 8420 -> 10696 bytes .../newview/installers/windows/lang_en-us.nsi | Bin 8510 -> 9336 bytes indra/newview/installers/windows/lang_es.nsi | Bin 8458 -> 9746 bytes indra/newview/installers/windows/lang_fr.nsi | Bin 8748 -> 10000 bytes indra/newview/installers/windows/lang_it.nsi | Bin 8102 -> 9344 bytes indra/newview/installers/windows/lang_ja.nsi | Bin 6514 -> 8336 bytes indra/newview/installers/windows/lang_pl.nsi | Bin 8136 -> 9932 bytes .../newview/installers/windows/lang_pt-br.nsi | Bin 8522 -> 9946 bytes indra/newview/installers/windows/lang_ru.nsi | Bin 7898 -> 9266 bytes indra/newview/installers/windows/lang_tr.nsi | Bin 8006 -> 9390 bytes indra/newview/installers/windows/lang_zh.nsi | Bin 6576 -> 7918 bytes 13 files changed, 852 insertions(+), 539 deletions(-) diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 8c8b4971cf..82e8900a44 100755 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -1,6 +1,6 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Second Life setup.nsi -;; Copyright 2004-2015, Linden Research, Inc. +;; secondlife setup.nsi +;; Copyright 2004-2011, 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,27 +18,26 @@ ;; ;; Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA ;; -;; NSIS Unicode 2.46.5 or higher required +;; NSIS Unicode 2.38.1 or higher required ;; http://www.scratchpaper.com/ ;; -;; Author: James Cook, TankMaster Finesmith, Don Kjer, Callum Prentice +;; Author: James Cook, Don Kjer, Callum Prentice ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 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 iff 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 ; on Vista we must be admin because we write to Program Files ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Project flags +;;; Project flags ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -# This placeholder is replaced by viewer_manifest.py %%VERSION%% ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -59,6 +58,8 @@ RequestExecutionLevel admin # For when we write to Program Files !include "%%SOURCE%%\installers\windows\lang_tr.nsi" !include "%%SOURCE%%\installers\windows\lang_zh.nsi" +;;!include "%%SOURCE%%\installers\windowsMUI.nsh" + # *TODO: Move these into the language files themselves LangString LanguageCode ${LANG_DANISH} "da" LangString LanguageCode ${LANG_GERMAN} "de" @@ -73,136 +74,230 @@ 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 +LicenseText "Vivox Voice System License Agreement" +LicenseData "VivoxAUP.txt" -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 -SetOverwrite on # Overwrite files by default -AutoCloseWindow true # After all files install, close window +;SubCaption 0 $(LicenseSubTitleSetup) ; override "license agreement" text + +BrandingText " " ; bottom of window text +Icon %%SOURCE%%\installers\windows\firestorm_icon.ico +UninstallIcon %%SOURCE%%\installers\windows\firestorm_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 +; Expose details button (details hidden by default) +;ShowInstDetails nevershow ; no details, no "show" button +SetOverwrite on ; stomp files by default +; Don't auto-close so we can check details +;AutoCloseWindow true ; after all files install, close window InstallDir "$PROGRAMFILES\${INSTNAME}" -InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "" -UninstallText $(UninstallTextMsg) +InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\${INSTNAME}" "" DirText $(DirectoryChooseTitle) $(DirectoryChooseSetup) -Page directory dirPre + +Page license +; Optional start menu entry +;Page directory dirPre +Page directory dirPre "" dirPost +; 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 the 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 -- Commented out: Disable autorun +Var DO_UNINSTALL_V2 ; If non-null, path to a previous Viewer 2 installation that will be uninstalled. +Var NO_STARTMENU ; Optional start menu entry -# 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 +!include x64.nsh ; For 64bit OS detection ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Pre-directory page callback +;;; 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 + ; Disable autorun + ; StrCmp $SKIP_AUTORUN "true" +2; + ; # Assumes SetOutPath $INSTDIR + ; Exec '"$INSTDIR\$INSTEXE" $SHORTCUT_LANG_PARAM' + ; Pop $R0 + StrCmp $SKIP_DIALOGS "true" label_launch + + ${GetOptions} $COMMANDLINE "/AUTOSTART" $R0 + # If parameter was there (no error) just launch + # Otherwise ask + IfErrors label_ask_launch label_launch + +label_ask_launch: + # Don't launch by default when silent + IfSilent label_no_launch + MessageBox MB_YESNO $(InstSuccesssQuestion) \ + IDYES label_launch IDNO label_no_launch + +label_launch: + # Assumes SetOutPath $INSTDIR + Exec '"$INSTDIR\$INSTEXE" $SHORTCUT_LANG_PARAM' +label_no_launch: + Pop $R0 + ; +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Pre-directory page callback ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function dirPre StrCmp $SKIP_DIALOGS "true" 0 +2 Abort - FunctionEnd +; Optional start menu entry +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Post-directory page callback +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function dirPost + StrCmp $SKIP_DIALOGS "true" label_create_start_menu + + MessageBox MB_YESNO|MB_ICONQUESTION $(CreateStartMenuEntry) IDYES label_create_start_menu + StrCpy $NO_STARTMENU "true" + +label_create_start_menu: + +FunctionEnd +; + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Make sure this computer meets the minimum system requirements. +; Currently: Windows 32bit XP SP3, 64bit XP SP2 and Server 2003 SP2 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function CheckWindowsVersion + ${If} ${AtMostWin2000} + MessageBox MB_OK $(CheckWindowsVersionMB) + Quit + ${EndIf} + + ${If} ${IsWinXP} + ${AndIfNot} ${RunningX64} + ${AndIfNot} ${IsServicePack} 3 + MessageBox MB_OK $(CheckWindowsVersionMB) + Quit + ${EndIf} + + ${If} ${IsWinXP} + ${AndIf} ${RunningX64} + ${AndIfNot} ${IsServicePack} 2 + MessageBox MB_OK $(CheckWindowsVersionMB) + Quit + ${EndIf} + + ${If} ${IsWin2003} + ${AndIfNot} ${IsServicePack} 2 + MessageBox MB_OK $(CheckWindowsVersionMB) + Quit + ${EndIf} +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Recommend Upgrading Service Pack +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function CheckWindowsServPack + ${If} ${IsWinVista} + ${AndIfNot} ${IsServicePack} 2 + MessageBox MB_OK $(CheckWindowsServPackMB) + DetailPrint $(UseLatestServPackDP) + Return + ${EndIf} + + ${If} ${IsWin2008} + ${AndIfNot} ${IsServicePack} 2 + MessageBox MB_OK $(CheckWindowsServPackMB) + DetailPrint $(UseLatestServPackDP) + Return + ${EndIf} + + ${If} ${IsWin7} + ${AndIfNot} ${IsServicePack} 1 + MessageBox MB_OK $(CheckWindowsServPackMB) + DetailPrint $(UseLatestServPackDP) + Return + ${EndIf} + + ${If} ${IsWin2008R2} + ${AndIfNot} ${IsServicePack} 1 + MessageBox MB_OK $(CheckWindowsServPackMB) + DetailPrint $(UseLatestServPackDP) + Return + ${EndIf} +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Make sure the user can install/uninstall +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function CheckIfAdministrator + DetailPrint $(CheckAdministratorInstDP) + UserInfo::GetAccountType + Pop $R0 + StrCmp $R0 "Admin" lbl_is_admin + MessageBox MB_OK $(CheckAdministratorInstMB) + Quit +lbl_is_admin: + Return +FunctionEnd + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; 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 CheckCPUFlags # Make sure we have SSE2 support -Call CheckWindowsVersion # Don't install On unsupported systems +Function un.CheckIfAdministrator + DetailPrint $(CheckAdministratorUnInstDP) + UserInfo::GetAccountType + Pop $R0 + StrCmp $R0 "Admin" lbl_is_admin + MessageBox MB_OK $(CheckAdministratorUnInstMB) + 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. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function CheckIfAlreadyCurrent Push $0 - ${GetParameters} $COMMANDLINE # Get our command line - - ${GetOptions} $COMMANDLINE "/SKIP_DIALOGS" $0 - 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 - StrCpy $SKIP_AUTORUN "true" - - ${GetOptions} $COMMANDLINE "/LANGID=" $0 # /LANGID=1033 implies US English - -# If no language (error), then proceed - IfErrors lbl_configure_default_lang -# 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. - ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage" - IfErrors +2 0 # If error skip the copy instruction - StrCpy $LANGUAGE $0 - -# 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 - !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 - LangDLL::LangDialog $(InstallerLanguageTitle) $(SelectInstallerLanguage) - Pop $0 - StrCmp $0 "cancel" 0 +2 - Abort - StrCpy $LANGUAGE $0 - -# Save language in registry - WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage" $LANGUAGE -lbl_return: + ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\$INSTPROG" "Version" + StrCmp $0 ${VERSION_LONG} 0 continue_install + StrCmp $SKIP_DIALOGS "true" continue_install + MessageBox MB_OKCANCEL $(CheckIfCurrentMB) /SD IDOK IDOK continue_install + Quit +continue_install: 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 - ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage" - IfErrors lbl_end - StrCpy $LANGUAGE $0 -lbl_end: - Return - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Checks for CPU valid (must have SSE2 support) +; Checks for CPU valid (must have SSE2 support) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function CheckCPUFlags Push $1 @@ -214,246 +309,11 @@ Function CheckCPUFlags OK_SSE2: Pop $1 Return - FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Make sure this computer meets the minimum system requirements. -;; Currently: Windows Vista SP2 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function CheckWindowsVersion - ${If} ${AtMostWin2003} - MessageBox MB_OK $(CheckWindowsVersionMB) - Quit - ${EndIf} - - ${If} ${IsWinVista} - ${AndIfNot} ${IsServicePack} 2 - MessageBox MB_OK $(CheckWindowsVersionMB) - Quit - ${EndIf} - - ${If} ${IsWin2008} - ${AndIfNot} ${IsServicePack} 2 - MessageBox MB_OK $(CheckWindowsVersionMB) - Quit - ${EndIf} - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Install Section -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Section "" - -SetShellVarContext all # Install for all users (if you change this, change it in the uninstall as well) - -# Start with some default values. -StrCpy $INSTPROG "${INSTNAME}" -StrCpy $INSTEXE "${INSTEXE}" -StrCpy $INSTSHORTCUT "${SHORTCUT}" - -Call CheckIfAdministrator # Make sure the user can install/uninstall -Call CheckIfAlreadyCurrent # Make sure this version is not already installed -Call CloseSecondLife # Make sure Second Life not currently running -Call CheckNetworkConnection # Ping secondlife.com -Call CheckWillUninstallV2 # Check if Second Life is already installed - -StrCmp $DO_UNINSTALL_V2 "" PRESERVE_DONE -PRESERVE_DONE: - -Call RemoveProgFilesOnInst # Remove existing files to prevent certain errors when running the new version of the viewer - -# 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 -CreateDirectory "$SMPROGRAMS\$INSTSHORTCUT" -SetOutPath "$INSTDIR" -CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT.lnk" \ - "$INSTDIR\$INSTEXE" "$SHORTCUT_LANG_PARAM" - - -WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Create Account.url" \ - "InternetShortcut" "URL" \ - "http://join.secondlife.com/" -WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Your Account.url" \ - "InternetShortcut" "URL" \ - "http://www.secondlife.com/account/" -WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Scripting Language Help.url" \ - "InternetShortcut" "URL" \ - "http://wiki.secondlife.com/wiki/LSL_Portal" -CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\Uninstall $INSTSHORTCUT.lnk" \ - '"$INSTDIR\uninst.exe"' '' - -# Other shortcuts -SetOutPath "$INSTDIR" -CreateShortCut "$DESKTOP\$INSTSHORTCUT.lnk" \ - "$INSTDIR\$INSTEXE" "$SHORTCUT_LANG_PARAM" -CreateShortCut "$INSTDIR\$INSTSHORTCUT.lnk" \ - "$INSTDIR\$INSTEXE" "$SHORTCUT_LANG_PARAM" -CreateShortCut "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" \ - '"$INSTDIR\uninst.exe"' '' - -# 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" -WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Exe" "$INSTEXE" -WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "Publisher" "Linden Research, Inc." -WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "URLInfoAbout" "http://secondlife.com/whatis/" -WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "URLUpdateInfo" "http://secondlife.com/support/downloads/" -WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "HelpLink" "https://support.secondlife.com/contact-support/" -WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "DisplayName" "$INSTPROG" -WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "UninstallString" '"$INSTDIR\uninst.exe"' -WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "DisplayVersion" "${VERSION_LONG}" -WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "EstimatedSize" "0x0001D500" # ~117 MB -# BUG-2707 Disable SEHOP for installed viewer. -WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\$INSTEXE" "DisableExceptionChainValidation" 1 - -# 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. -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. -WriteRegExpandStr HKEY_CLASSES_ROOT "x-grid-location-info\shell\open\command" "" '"$INSTDIR\$INSTEXE" -url "%1"' - -# Write out uninstaller -WriteUninstaller "$INSTDIR\uninst.exe" - -# 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. - -REMOVE_SLV2_DONE: - -SectionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Uninstall Section -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Section Uninstall - -# Start with some default values. -StrCpy $INSTPROG "${INSTNAME}" -StrCpy $INSTEXE "${INSTEXE}" -StrCpy $INSTSHORTCUT "${SHORTCUT}" - -# 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 -Call un.CloseSecondLife - -# 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" -# BUG-2707 Remove entry that disabled SEHOP -DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\$INSTEXE" - -# Clean up shortcuts -Delete "$SMPROGRAMS\$INSTSHORTCUT\*.*" -RMDir "$SMPROGRAMS\$INSTSHORTCUT" - -Delete "$DESKTOP\$INSTSHORTCUT.lnk" -Delete "$INSTDIR\$INSTSHORTCUT.lnk" -Delete "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" - -# Remove the main installation directory -Call un.ProgramFiles - -# Clean up cache and log files, but leave them in-place for non AGNI installs. -Call un.UserSettingsFiles - -SectionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Make sure the user can install -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function CheckIfAdministrator - DetailPrint $(CheckAdministratorInstDP) - UserInfo::GetAccountType - Pop $R0 - StrCmp $R0 "Admin" lbl_is_admin - MessageBox MB_OK $(CheckAdministratorInstMB) - Quit -lbl_is_admin: - Return - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Make sure the user can uninstall -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function un.CheckIfAdministrator - DetailPrint $(CheckAdministratorUnInstDP) - UserInfo::GetAccountType - Pop $R0 - StrCmp $R0 "Admin" lbl_is_admin - MessageBox MB_OK $(CheckAdministratorUnInstMB) - 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. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function CheckIfAlreadyCurrent - Push $0 - ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Version" - StrCmp $0 ${VERSION_LONG} 0 continue_install - StrCmp $SKIP_DIALOGS "true" continue_install - MessageBox MB_OKCANCEL $(CheckIfCurrentMB) /SD IDOK IDOK continue_install - Quit -continue_install: - Pop $0 - Return - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; 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. - IfFileExists "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" CHECKV2_FOUND CHECKV2_DONE - -CHECKV2_FOUND: - StrCpy $DO_UNINSTALL_V2 "true" - -CHECKV2_DONE: - -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 @@ -479,12 +339,375 @@ 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. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function CheckNetworkConnection + ; Disabling this, not needed for Firestorm -AO + Return + 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. + StrCpy $2 "" + ${GetOptions} $COMMANDLINE "/STUBTAG=" $2 + GetTempFileName $0 + !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 + ; MessageBox MB_OK "Download result: $1" + ; Result ignored for now + ; StrCmp $1 "success" +2 + ; DetailPrint "Connection failed: $1" + 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 + ; We don't need that + Return + + IfFileExists "$INSTDIR\SecondLife.exe" CHECKOLDEXE_FOUND CHECKOLDEXE_DONE + +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 + + StrCpy $DO_UNINSTALL_V2 "" + + ; Don't mess with the official viewer + Return + + StrCmp $SKIP_DIALOGS "true" 0 CHECKV2_DONE + StrCmp $INSTDIR "$PROGRAMFILES\SecondLifeViewer2" CHECKV2_DONE ; don't uninstall our own install dir. + IfFileExists "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" CHECKV2_FOUND CHECKV2_DONE + +CHECKV2_FOUND: + StrCpy $DO_UNINSTALL_V2 "true" + +CHECKV2_DONE: FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Close the program, if running. Modifies no variables. -;; Allows user to bail out of uninstall process. +; Save user files to temp location +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function PreserveUserFiles + +Push $0 +Push $1 +Push $2 + + RMDir /r "$TEMP\SecondLifeSettingsBackup" + CreateDirectory "$TEMP\SecondLifeSettingsBackup" + 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 + + ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath" + StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing + + ; Required since ProfileImagePath is of type REG_EXPAND_SZ + ExpandEnvStrings $2 $2 + + CreateDirectory "$TEMP\SecondLifeSettingsBackup\$0" + CopyFiles /SILENT "$2\Application Data\SecondLife\*" "$TEMP\SecondLifeSettingsBackup\$0" + + CONTINUE: + IntOp $0 $0 + 1 + Goto LOOP + DONE: + +Pop $2 +Pop $1 +Pop $0 + +; 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 + CreateDirectory "$TEMP\SecondLifeSettingsBackup\AllUsers\" + CopyFiles /SILENT "$2\Application Data\SecondLife\*" "$TEMP\SecondLifeSettingsBackup\AllUsers\" +Pop $0 + +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Restore user files from temp location +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function RestoreUserFiles + +Push $0 +Push $1 +Push $2 + + 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 + + ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath" + StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing + + ; Required since ProfileImagePath is of type REG_EXPAND_SZ + ExpandEnvStrings $2 $2 + + CreateDirectory "$2\Application Data\SecondLife\" + CopyFiles /SILENT "$TEMP\SecondLifeSettingsBackup\$0\*" "$2\Application Data\SecondLife\" + + CONTINUE: + IntOp $0 $0 + 1 + Goto LOOP + DONE: + +Pop $2 +Pop $1 +Pop $0 + +; 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 + CreateDirectory "$2\Application Data\SecondLife\" + CopyFiles /SILENT "$TEMP\SecondLifeSettingsBackup\AllUsers\*" "$2\Application Data\SecondLife\" +Pop $0 + +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Remove temp dirs +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function RemoveTempUserFiles + +Push $0 +Push $1 +Push $2 + + 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 + + ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath" + StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing + + ; Required since ProfileImagePath is of type REG_EXPAND_SZ + ExpandEnvStrings $2 $2 + + RMDir /r "$TEMP\SecondLifeSettingsBackup\$0\*" + + CONTINUE: + IntOp $0 $0 + 1 + Goto LOOP + DONE: + +Pop $2 +Pop $1 +Pop $0 + +; 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 + RMDir /r "$TEMP\SecondLifeSettingsBackup\AllUsers\*" +Pop $0 + +FunctionEnd + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Clobber user files - TEST ONLY +; This is here for testing, generally not desirable to call it. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Function ClobberUserFilesTESTONLY + +;Push $0 +;Push $1 +;Push $2 +; +; 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 +; +; ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath" +; StrCmp $2 "" CONTINUE 0 ; "ProfileImagePath" value is missing +; +; ; Required since ProfileImagePath is of type REG_EXPAND_SZ +; ExpandEnvStrings $2 $2 +; +; RMDir /r "$2\Application Data\SecondLife\" +; +; CONTINUE: +; IntOp $0 $0 + 1 +; Goto LOOP +; DONE: +; +;Pop $2 +;Pop $1 +;Pop $0 +; +;; 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 +; RMDir /r "$2\Application Data\SecondLife\" +;Pop $0 +; +;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. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function RemoveOldShaders + +;; Remove old shader files first so fallbacks will work. see DEV-5663 +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 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function RemoveOldXUI + +;; remove old XUI and texture files +; FIRE-869: Delete all existing skins prior installation +;RmDir /r "$INSTDIR\skins\html" +;RmDir /r "$INSTDIR\skins\xui" +;RmDir /r "$INSTDIR\skins\textures" +;Delete "$INSTDIR\skins\*.txt" +RMDir /r "$INSTDIR\skins" +; + +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 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +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 \Users\\AppData\ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function un.UserSettingsFiles + +# Ask if user wants to keep data files or not +MessageBox MB_YESNO|MB_ICONQUESTION $(RemoveDataFilesMB) IDYES Remove IDNO Keep + +Remove: +Push $0 +Push $1 +Push $2 + + DetailPrint $(DeleteDocumentAndSettingsDP) + + 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 + + ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath" + StrCmp $2 "" CONTINUE 0 # "ProfileImagePath" value is missing + +# Required since ProfileImagePath is of type REG_EXPAND_SZ + ExpandEnvStrings $2 $2 + +# Delete files in \Users\\AppData\Roaming\Firestorm +# Remove all settings files but leave any other .txt files to preserve the chat logs +; RMDir /r "$2\Application Data\Firestorm\logs" + RMDir /r "$2\Application Data\Firestorm\browser_profile" + RMDir /r "$2\Application Data\Firestorm\user_settings" + Delete "$2\Application Data\Firestorm\*.xml" + Delete "$2\Application Data\Firestorm\*.bmp" + Delete "$2\Application Data\Firestorm\search_history.txt" + Delete "$2\Application Data\Firestorm\plugin_cookies.txt" + Delete "$2\Application Data\Firestorm\typed_locations.txt" +# Delete files in \Users\\AppData\Local\Firestorm + RMDir /r "$2\Local Settings\Application Data\Firestorm" #Delete the Havok cache folder + RMDir /r "$2\Local Settings\Application Data\FirestormOS" #Delete the OpenSim cache folder + + CONTINUE: + IntOp $0 $0 + 1 + Goto LOOP + DONE: + +Pop $2 +Pop $1 +Pop $0 + +# Delete files in ProgramData\Firestorm +Push $0 + ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData" + StrCmp $0 "" +2 + RMDir /r "$0\Firestorm" +Pop $0 + +Keep: + +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Close the program, if running. Modifies no variables. +; Allows user to bail out of uninstall process. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function un.CloseSecondLife Push $0 @@ -508,139 +731,26 @@ Function un.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. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -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. - StrCpy $2 "" - ${GetOptions} $COMMANDLINE "/STUBTAG=" $2 - GetTempFileName $0 - !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 - ; MessageBox MB_OK "Download result: $1" - ; Result ignored for now - ; StrCmp $1 "success" +2 - ; DetailPrint "Connection failed: $1" - Delete $0 # Temporary file - Pop $2 - Pop $1 - Pop $0 - Return - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Delete files on install if previous install exists to prevent undesired behavior -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function RemoveProgFilesOnInst - -# Remove old SecondLife.exe to invalidate any old shortcuts to it that may be in non-standard locations. See MAINT-3575 -Delete "$INSTDIR\SecondLife.exe" - -# Remove old shader files first so fallbacks will work. See DEV-5663 -RMDir /r "$INSTDIR\app_settings\shaders" - -# Remove skins folder to clean up files removed during development -RMDir /r "$INSTDIR\skins" - -# We are no longer including release notes with the viewer, so remove them. -Delete "$SMPROGRAMS\$INSTSHORTCUT\SL Release Notes.lnk" -Delete "$INSTDIR\releasenotes.txt" - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Delete files in \Users\\AppData\ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function un.UserSettingsFiles - -StrCmp $DO_UNINSTALL_V2 "true" Keep # Don't remove user's settings files on auto upgrade - -# Ask if user wants to keep data files or not -MessageBox MB_YESNO|MB_ICONQUESTION $(RemoveDataFilesMB) IDYES Remove IDNO Keep - -Remove: -Push $0 -Push $1 -Push $2 - - DetailPrint "Deleting Second Life data files" - - 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 - - ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath" - StrCmp $2 "" CONTINUE 0 # "ProfileImagePath" value is missing - -# Required since ProfileImagePath is of type REG_EXPAND_SZ - ExpandEnvStrings $2 $2 - -# Delete files in \Users\\AppData\Roaming\SecondLife -# Remove all settings files but leave any other .txt files to preserve the chat logs -; RMDir /r "$2\AppData\Roaming\SecondLife\logs" - RMDir /r "$2\AppData\Roaming\SecondLife\browser_profile" - RMDir /r "$2\AppData\Roaming\SecondLife\user_settings" - Delete "$2\AppData\Roaming\SecondLife\*.xml" - Delete "$2\AppData\Roaming\SecondLife\*.bmp" - Delete "$2\AppData\Roaming\SecondLife\search_history.txt" - Delete "$2\AppData\Roaming\SecondLife\plugin_cookies.txt" - Delete "$2\AppData\Roaming\SecondLife\typed_locations.txt" -# Delete files in \Users\\AppData\Local\SecondLife - RmDir /r "$2\AppData\Local\SecondLife" #Delete the cache folder - - CONTINUE: - IntOp $0 $0 + 1 - Goto LOOP - DONE: - -Pop $2 -Pop $1 -Pop $0 - -# Delete files in ProgramData\Secondlife -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 - -Keep: - -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 program directory. +;;; 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 -# This placeholder is replaced by the complete list of files to uninstall by viewer_manifest.py +;; 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 %%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" @@ -653,12 +763,19 @@ 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 -RMDir /r "$INSTDIR\help" +;; Remove entire help directory +Delete "$INSTDIR\help\Advanced\*" +RMDir "$INSTDIR\help\Advanced" +Delete "$INSTDIR\help\basics\*" +RMDir "$INSTDIR\help\basics" +Delete "$INSTDIR\help\Concepts\*" +RMDir "$INSTDIR\help\Concepts" +Delete "$INSTDIR\help\welcome\*" +RMDir "$INSTDIR\help\welcome" +Delete "$INSTDIR\help\*" +RMDir "$INSTDIR\help" Delete "$INSTDIR\uninst.exe" RMDir "$INSTDIR" @@ -666,7 +783,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" @@ -675,78 +792,274 @@ NOFOLDER: FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; After install completes, launch app +;;; Uninstall settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function .onInstSuccess -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 - Exec '"$WINDIR\explorer.exe" "$INSTDIR\$INSTEXE"' - Pop $R0 +UninstallText $(UninstallTextMsg) +; Expose detail button instead of always showing detailed uninstall info +;ShowUninstDetails show +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Uninstall section +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Section Uninstall + +; 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) +SetShellVarContext all + +; Make sure we're not running +Call un.CloseSecondLife + +; Clean up registry keys and subkeys (these should all be !defines somewhere) +DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\$INSTPROG" +DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" + +; BUG-2707 Remove entry that disabled SEHOP +DeleteRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\$INSTEXE" + +; Clean up shortcuts +Delete "$SMPROGRAMS\$INSTSHORTCUT\*.*" +RMDir "$SMPROGRAMS\$INSTSHORTCUT" + +Delete "$DESKTOP\$INSTSHORTCUT.lnk" +Delete "$INSTDIR\$INSTSHORTCUT.lnk" +Delete "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" + +# Remove the main installation directory +Call un.ProgramFiles + +# Clean up cache and log files, but leave them in-place for non AGNI installs. +Call un.UserSettingsFiles + +SectionEnd ; end of uninstall 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 + Push $0 + ${GetParameters} $COMMANDLINE ; get our command line + + ${GetOptions} $COMMANDLINE "/SKIP_DIALOGS" $0 + ; Auto-close if auto-updating + ; IfErrors +2 0 ; If error jump past setting SKIP_DIALOGS + ; StrCpy $SKIP_DIALOGS "true" + IfErrors +3 0 ; If error jump past setting SKIP_DIALOGS + StrCpy $SKIP_DIALOGS "true" + SetAutoClose true + ; + + ; Disable autorun + ; ${GetOptions} $COMMANDLINE "/SKIP_AUTORUN" $0 + ; IfErrors +2 0 ; If error jump past setting SKIP_AUTORUN + ; StrCpy $SKIP_AUTORUN "true" + ; + + ${GetOptions} $COMMANDLINE "/LANGID=" $0 ; /LANGID=1033 implies US English + + ; If no language (error), then proceed + IfErrors lbl_configure_default_lang + ; 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. + ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\${INSTNAME}" "InstallerLanguage" + IfErrors +2 0 ; If error skip the copy instruction + StrCpy $LANGUAGE $0 + + ; For silent installs, no language prompt, use default + IfSilent lbl_return + StrCmp $SKIP_DIALOGS "true" lbl_return + +; Commented out; Warning in build log about not being used +;lbl_build_menu: +; Commented out; Warning in build log about not being used + Push "" + # 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 + LangDLL::LangDialog $(InstallerLanguageTitle) $(SelectInstallerLanguage) + Pop $0 + StrCmp $0 "cancel" 0 +2 + Abort + StrCpy $LANGUAGE $0 + + ; save language in registry + WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\${INSTNAME}" "InstallerLanguage" $LANGUAGE +lbl_return: + Pop $0 + Return FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Recommend Upgrading to Service Pack 1 for Windows 7, if not present -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function CheckWindowsServPack - ${If} ${IsWin7} - ${AndIfNot} ${IsServicePack} 1 - MessageBox MB_OK $(CheckWindowsServPackMB) - DetailPrint $(UseLatestServPackDP) +Function un.onInit + ; read language from registry and set for uninstaller + ; Key will be removed on successful uninstall + ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\${INSTNAME}" "InstallerLanguage" + IfErrors lbl_end + StrCpy $LANGUAGE $0 +lbl_end: Return - ${EndIf} - - ${If} ${IsWin2008R2} - ${AndIfNot} ${IsServicePack} 1 - MessageBox MB_OK $(CheckWindowsServPackMB) - DetailPrint $(UseLatestServPackDP) - Return - ${EndIf} - FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Clobber user files - TEST ONLY -;; This is here for testing, DO NOT USE UNLESS YOU KNOW WHAT YOU ARE TESTING FOR! +;;; MAIN SECTION ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;Function ClobberUserFilesTESTONLY +Section "" ; (default section) -;Push $0 -;Push $1 -;Push $2 -; -; 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 -; -; ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath" -; StrCmp $2 "" CONTINUE 0 # "ProfileImagePath" value is missing -; -;# Required since ProfileImagePath is of type REG_EXPAND_SZ -; ExpandEnvStrings $2 $2 -; -; RMDir /r "$2\Application Data\SecondLife\" -; -; CONTINUE: -; IntOp $0 $0 + 1 -; Goto LOOP -; DONE: -; -;Pop $2 -;Pop $1 -;Pop $0 -; -;# 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 -; RMDir /r "$2\Application Data\SecondLife\" -;Pop $0 -; -;FunctionEnd +SetShellVarContext all ; install for all users (if you change this, change it in the uninstall as well) + +; 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 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +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 +Call RemoveOldShaders + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; 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. +Call RemoveOldReleaseNotes + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Files +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; 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 +; Optional start menu entry +StrCmp $NO_STARTMENU "true" label_skip_start_menu +; + +CreateDirectory "$SMPROGRAMS\$INSTSHORTCUT" +SetOutPath "$INSTDIR" +CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT.lnk" \ + "$INSTDIR\$INSTEXE" "$SHORTCUT_LANG_PARAM" + + +WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Create Account.url" \ + "InternetShortcut" "URL" \ + "http://join.secondlife.com/" +WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Your Account.url" \ + "InternetShortcut" "URL" \ + "http://www.secondlife.com/account/" +WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\LSL Scripting Language Help.url" \ + "InternetShortcut" "URL" \ + "http://wiki.secondlife.com/wiki/LSL_Portal" +CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\Uninstall $INSTSHORTCUT.lnk" \ + '"$INSTDIR\uninst.exe"' '' + +; Optional start menu entry +label_skip_start_menu: +; + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Other shortcuts +SetOutPath "$INSTDIR" +CreateShortCut "$DESKTOP\$INSTSHORTCUT.lnk" \ + "$INSTDIR\$INSTEXE" "$SHORTCUT_LANG_PARAM" +CreateShortCut "$INSTDIR\$INSTSHORTCUT.lnk" \ + "$INSTDIR\$INSTEXE" "$SHORTCUT_LANG_PARAM" +CreateShortCut "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" \ + '"$INSTDIR\uninst.exe"' '' + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Write registry +WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\$INSTPROG" "" "$INSTDIR" +WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\$INSTPROG" "Version" "${VERSION_LONG}" +WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\$INSTPROG" "Shortcut" "$INSTSHORTCUT" +WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\$INSTPROG" "Exe" "$INSTEXE" +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"' +; Add additional data for uninstall list in Windows +WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "Publisher" "The Phoenix Firestorm Project, Inc." +WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "URLInfoAbout" "http://www.firestormviewer.org" +WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "URLUpdateInfo" "http://www.firestormviewer.org/downloads" +WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "HelpLink" "http://www.firestormviewer.org/support" +WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "DisplayIcon" '"$INSTDIR\$INSTEXE"' +WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "DisplayVersion" "${VERSION_LONG}" +WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "EstimatedSize" "0x00030C00" ; 195 MB +; + +; BUG-2707 Disable SEHOP for installed viewer. +WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\$INSTEXE" "DisableExceptionChainValidation" 1 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; 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. +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. +WriteRegExpandStr HKEY_CLASSES_ROOT "x-grid-location-info\shell\open\command" "" '"$INSTDIR\$INSTEXE" -url "%1"' + +; Register hop:// protocol registry info +WriteRegStr HKEY_CLASSES_ROOT "hop" "(default)" "URL:Second Life" +WriteRegStr HKEY_CLASSES_ROOT "hop" "URL Protocol" "" +WriteRegStr HKEY_CLASSES_ROOT "hop\DefaultIcon" "" '"$INSTDIR\$INSTEXE"' +WriteRegExpandStr HKEY_CLASSES_ROOT "hop\shell\open\command" "" '"$INSTDIR\$INSTEXE" -url "%1"' +; + +; write out uninstaller +WriteUninstaller "$INSTDIR\uninst.exe" + +; 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. + + Call RestoreUserFiles + Call RemoveTempUserFiles +REMOVE_SLV2_DONE: + +; end of default section +SectionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EOF ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/indra/newview/installers/windows/lang_da.nsi b/indra/newview/installers/windows/lang_da.nsi index 83e1a3ea9417bd1565c93b90b5c8070d66548415..2746529885f86baf442972928cf5f764a28606ed 100755 GIT binary patch delta 1756 zcmaJ?OHUI~6h18!+EEC#D5WhrpioT=1XSXSS9ll@3kpqG5R;}9Z7fjR0+N`ZE{usT z&=WUm+_@nEHQl(-jd5dQB0s=|3pcKe?hStD&h(LXVkVt??|FXbobOH_^lXl7v^_q0 z$EH2rI>UeL-Y2#dS$Mkb+Fkm?OQFW-PEHvq~ zNXyhmEu`^o^(h55cdxl>xe{;22ByZ48_-AMmF_!2W-j^ssQLGa*h4&0k zX-Giw3v zrsp|8x$Bz+Vs^a#tPRJ9`!B-7$J+;v@TRxl!fn?ZG%d!;wb_~mhY{wSiC97f_@#He z+?WfY0(`ZxtK1^{s?lXLY4X?CA+@mPzaLb@!90X)3z(tIBC2M19lLqZFo8AAzwM12 za_;pE=5^9yL)YgDHcqL122+ly`Q~HrK)};HhsZa;u?1)sVWVRgp(GwT3-6x#J3wzA zfA?oBz{dk_>BV}}VMT)XP04a29ymA{&XseXMnJ%`G@z�i-xmC8!svCy+LS^AdDI zN!=u8$^<5mmLWBurf3bc^tVcbBC5P8yd`1=WH)Sw;gNx4jo;R_4i_wi=8MIVu#YQA zhNQjLnT?Cs>F}c&TI&#SMvGb}70scx7&1x~i?~8*#t0%qkjX%DQoS&~eBRP%X=nuF z9M+PUkjx`@0y-IKJGBT24uxSo2=vm61oX&GA*_-$N-=hOg05-kem6J9qLh( zlS?I#q-AO6`=EUT-g+Z&W+Fta&hCrM*U)L%)U_VvI;NQ2h?Rq zz(Ougj-3KaP7zoXhcsu=EVH-*fVqo13ClE|RTPtguj0j6!NOpRb(hodmCG+oNS4Nt I>Ej>f9|8!2b^rhX delta 895 zcmZ4G)?qtAjgfbvY9lu<0~Z4bTQew3EEJx2K!K5WvLLJE#2;l4#^g4}Ijmqsla-m= zp<+LnvO0%e7p*;B>tJGv4 zwoPz1*n&-zoE*X)ri#ndJcd#Rd$?K0*-fE(@}zktD{vG*&6>zz2)1K3n6#ffi&G7U zKQ3|_bA|!^RLoGqkT_YMYb~=n1ITrTlhwG>CO;72;Y9d(F86z&c^eg^CokhU1hpxX zHxz7#^5h4+GvF+x&3pJn7;yxR9s|${Q0z_48a7bWZ_zZTJ)93xx>b?6Ewo!WW2GJB8 z0ku*>9j-=Ya+es60Ns30j1^(5HQamBlMN&?2pVl5p)uJk7WKq)jyO~2CCnvAUjz> PE(c5K?UPet0oe!uGZf7x diff --git a/indra/newview/installers/windows/lang_de.nsi b/indra/newview/installers/windows/lang_de.nsi index 866accae99b5e59615fc5758d19617ad43fb6d69..b6daac85707e576591c82a44cc77890a948c190b 100755 GIT binary patch delta 2589 zcmb_eT})eL82-v%%aKtKN};9Y02y@|WmBSNj139QIE78EB8gsDN}7BPui@*7tykq)?Y0Ffv zLhA-3Wvp+)LJ=rLN~)5ide1~?=|#Oy{W7qMDu=xs_R4a01ytb6qt>8obo%Vb zb^0CLYmmMNzF)SE`rpDD+^Mfdlp$H~u>8?Hh%?X0RLc_HA9Xk2%bC{aWuE>+J3-p)_Y0s-u1rhVs*$DfX)Tqvs!1@hsuys?N8fw z`en2IgSvI6j2mMvR@RNl$TBi%A`W?-zeVIPh2Pf^aZ@cH-Z4f!wxM5K4BYRyBTZ&V z_D($nfe(9vve#*qADy}DACc|Qm`wRsY#ZGB(-_|}k9vn`_i#MWHC;`9-96akko&s z5msjU2V^gN&qb0OTnFmUgOk*$%Q z$`}?)HXDpp7Su7CJB8L`iLIlkl8{nf#JYCMRP&Iqxw81@aLVfEJR0=|&gS$k<+WnH zqIEc2(%PnlV2==tJ`6wkF>)4ug}#eE@W9JohelDad6y{MHs5~J@p&49E1{;;EEtr) zier-qmw|n~Zh+DgQx7-la1dH7x3D6MGIrl*gkp18rEUKb*thf-wbqupQq{$nsaRg| zEXOe8z_D37WnuiKF*rCK?}<3W!DJ8pfAZpWAmehsEonOZT3|>rs*=Zo%2uy1%`{BjPBHSsgz3zq zEKeSHPUoPL#|dki)TPIjF2+1MZGmT`-3&zPdx{@NbmJyM!F038VoSAI$jC7mCB)Nl Uf)OS|cb97xk8QmoFB&lT8`o+-%>V!Z delta 988 zcmX>R{KRpB8YAyS)kbb!1}+8=wq{V6SSUR4fC3}$rV)qdZW=Lg7X2@sAV@P38VDMqc zWJqI3ojjf097!DuhYJpMjVzLri#TMU_VjZ&19e^G_zJgIaqocHgIqJACPs4`f^ATqypFpI&XSp2#-oPAg==|? zIm3Xy0^6|pFOM=KTpQoy0KOwQw5jqh2C5U(l%D*E{|VG`TVdD9Jc0s1@k9~Z$q|AR zpez-kD>zJH#g2-E>gJe$MBnQ&PI($XX01J&|T+8XM^iyYFE?Ihb2 zaYdLO0|)}63Fst{N|niSQaGYubEp&}F6*=9d?#;_wt-vk5B4L-KwzB8-VySkUNMrsh6Sc00B*Gx$B79tdEx|_nfyX>x3U?>t1T_Bt2 zDTL^yhoHZ}o+5iI>ZPEd=U##!=pm@zeCMpIcIu%J{m$q7X683DzxkeZe;>G0x7M(l zrL8?}<58Q7*K-}LWyRI^y{so$8u#rvp>DoxA3xu7-29$`erc?>-8FG)Pbpp=;kq-MV!+V#P2M=!cbO3+Ev@7sT~kv_=n)I7Ot&IXH<7OQ2=zm=?bHP>Nia%)w^VQxyoM>R zSV5_I%b&MiHdZs$MD(r%!v)7YfF84XyBIx)9as6mR2xSpgi-}KZh&mfs079(gnc~Vgd z(*am_(n|}=irn_~GYS>7A;@%O9mPp>A=z~hJmaWDdL;zrKu6TOr8V%*Y_!?)fb@L3 oHc!JhiJyzWCg7Wtc@Jg~LO?WXMOk)N-Yj`f;=ALZRd_|{7k09+9smFU delta 1431 zcmah}U1*X~7=E2@>hvqq>C`!QbT<2eNkJPmYNLo1+i)#5NTibH&zfo5+*Y);qAo@^ zWpB4Z?k>8Epu1fJbsN-OH&GOLRnb)}g5GnEerfm>@_D}V{yooozUMtZPHY~%*P~O4 zJ8xMOXa)WZ04vTpiZ2+MKNNKe&got@3n%tB4RfOht$IH`YZ|It3~m%@qpwKXI4C7x>Bk2+_X={ z2w{);yt*58HY|<5%n`>FFpu{Gy5DLdPMXyT!&Psj=E&}N*GE(zX(d6b znWeQr;$$#S+P_3^OJW8V$(JNsm{vxEl&I({Mf%E;X92{3#@U{Z1dU4?&cSi9W`!6t zuu5q`eAwBwHbI^-h{6=D95hQmMnEJ}0m0x;QAr~!;F4l~CAr2rlPz%3Cq>mk2tk}! z$p4dsK*Nl~mVh!#5lOgAdp;ab*uk+ByTp`N-yI&pY7R^_actePQ&`hvYZn nP{4{Y--=Lk+4rU9TN5OH>ui-_c7IkwASHV@KJ|wTTnN7bm*+O9 diff --git a/indra/newview/installers/windows/lang_es.nsi b/indra/newview/installers/windows/lang_es.nsi index f4f07863320303096cfc7699f60d2b2c648454c5..54794ce338dcf0b6d99f82d19a07b15552e7351b 100755 GIT binary patch delta 1952 zcmaJ>OK4M35S>J;>9eM3ZJVY^+n2qRS1#0rXYR{OW4*}Zy?fuiXJ*dKoO|c{Zw_5= zz0p4BFm62V;!TzHJmhk*;W)46_Z&|g1|M+_s=ueslp1#|JC4=6%X-z{_2o@my*yEv zU#Z$lCn-xw%2A%CFq`0xvdcx}LfIAXKM2}MAu{;tiYRa)zO$l%D^`A1F@jv@3MlI# z*Rk-wmL|n$T*ZmeZsp~zYpcSqEx!p5&&ngpr^mQf7z6y#XxFgxuNw3nr7<#T2JbNZ z#xai4L41$$=~Z7hKc{^(sq%_Z8v9x7B#^18GEIO*4)Y0&)_ga$ailWL9>dM^72}$` zO<*VazT3yGt6wYD9`_5d{np5D@RU3rAdd}Cr(c;2

B)t_H`@HPVbxs z_o1PYo!(u@L|6YAzn@3y-)ro8eGirIQCM%|js6P$UDeJH8Uh-u6+=*4G`lnYUz*ik zA9JA5M2x=1&B!yvw;Hdt8Dvm5`YBqLo}R%NSE?AtECrRPG3L-=U-N+yOtgp*wOW`< z4ISla{7vAUTzpfIj$CWHi&o?+ zkwkh{tVO;OQ>rPp8GJ?7cKwT)yFlE;9h%}xb^ckoBdsP_PVL}1MJYw=vHLeYyJ0$V zrR6b65*4)7Xxp=i?Ar*Q8Dt`r5(1VQC8Yex(JFOWsCZB+UV7NafXv}Ji)6B} cRo&meh_Jh_qb#RFE)_YNnWcWD$GCw003|4}z5oCK delta 976 zcmbQ_)8#ZljgfbvYBM)40~Z4bTQew3EEJx2NC7DPa5jjLoIHhb3oBTDvL}-}L}&$5 z8jK+~*@f8&D&Nj*%g8(Vppx|Dd&~`RmdxZSEE%G~453_c8*3~3Ch zlX+R2k<=YyZBxdoj=_pS3G6tzaZnbDxmffppKR_EQX)pP_~d)S zQcwe=L;`TcV7;R94lQka4$(uejtV` zG$O@i!4^wTo*?dn!(w@9>B$@tw{Xa6%S@i!CMgBC*B@%$12LJ&x1@N0p`kHZM_dMn zZiM|1^(Hvf$xHvnA)_s`8EW@^8Dp^B8=?HKa{562K_%769`cKD=>9FgAF6t{f-)pP QzbRDUP+YI*$O4LR0CP^^{Qv*} diff --git a/indra/newview/installers/windows/lang_fr.nsi b/indra/newview/installers/windows/lang_fr.nsi index 1b5dbfc975a95531ef1a5585b21e597b1a6528a2..0f3c5aadc3ad3a7dd6896dc8b2148ba7e480fb9a 100755 GIT binary patch delta 1896 zcmah}-Aj{U6hAZ9=Bt&axlPyhPH_g6Vc11#AAXehEq*{CL~CxjnDb*>B}sZ!K@i3H z1EQPo!aktu455n%0xyCt6tXTNg2>yVpx=4keb{^{Ubg3X&iS2le&;#oJWK8O`tJGf zA6T$x_a7hULA%a&%U#a1Ir*98jYZ@6ybg8R$P26W!j5rB-|je}PMcN_x8`5W?AP-z zmz<>t%}|Kql%PrMCV13(J%w0uZPSuYjZ{S%zu4LKJkM5SQSN=*V0VK~!o=O0eLpb2 z?Z=eUo`OZ3eiYQ>RK~t)!=|1;l|3=h zKeSf!>wVYY_e{A@v0W%%HO1BNZO2jIUOKvgt6;zLrb$WbNItolO8)HZGVwI)uHnnB zbra2K#VzH(i9LJERE%=>0p#cBDQEM4VwJo5wtIX&>$Y09i+Qvn!oT+Wtr}_6#M7Q5 z>N0P57HgFR#g#6eKo4KR8dPmEj$Ii2Elm+edM@rMC@O8s=%l+1-2+eUz9F>C6h31b z;?PY}jNf~`fh4?VJ?dyGX{|VC<=+Z0fLc1Gq_9UMh-JHD-BX3oC83F;5Uu#RhT55QP~Qz#a7+Xrt&ke zI&5NFePJI_k_1VW%wuC*aW|-2eLFC6*Ah4Pb|tqluo11~6QfJ0HYys(S{YJ3+YOoc zx!$B!!c`uQ9G{ScQQ0VTQfFgiT;36&+mMB18igLwsSm4g2~vnZ6x9|CLm!bokowK* zbQLFgtaKpzX&9^cOlPRmEbNnrp`(5|?=xhh53%7a$ee3S7rjt29GOBVLAla-}KT&Gb6Y4ii|`BZ4^73RuUWxk}bUAcDQ7u wq@7H!*e6#!2z+|HWsGFtu7ddtxT$h?WfAFeoAHaoR-Onc@KmlJDJmYAKL9wTRR910 delta 986 zcmbQ>x5j0H8YAyS)kbb!1}+8=wq{V6SSUR4fC3}$WJM0eNsN79hUDaBjHg(^iY6B_ zxkJS+Fr~p+a+7nIy^xKWyq{Zo@(pGgms`3!jsDGUk> zJ`9-*X$+~8ZCR_~>ei@YRRdIQ#h?UsGT7OZ-?FJsKENgc)F&vUJoy*fD>S#rPUhf{ z0-IWj!`9^-vQQr$>+kR z7&+2l(F#)UC2j^)-ze@4RKHN#eDWR%j>%jSN%F{g;E91j4-7%U22rbr-8GwkOE5BG zmzr!Sn>o2mN)B$Z_2dguB4Ep%iL^KqyUClSWms`r+7GqxpsX=CvM+t*bYmCuE97shmI6*`bqhe^76N=bDf-ymiabse{ zYgiEt8(e6_rEXcsPKgU;WpJy;bm`J_-)~ESuW9n%fA5`p?zz+NLd(7OCk-=A_Z`N} z;t@V+`nbTcpw}hGs>9$H1!rXUwD5+t1bMdbSg}C{9p#xKlYbXBXmq&fL1qo|kD?o% zHX5Ng4N!uTbQ5ne?kOJ9h;PNuyjyOmnL=dnjI$M(5dU$0+~C9DUnK!;9dh;BShr~F zdDkJ0NxNpD{88xv&9zqgII{-$jnQPI?5DBce}y_pL9e0<6s10_9n^*A6|UR%$MFAjk;EuPV{{A80cxQ}j+k}4R$9gl?qM5U3KnC0yv)x_?iH==_4W_YR&ILvaoGv2 zD_u6H*SF=rZ5YDTh`d<%Fc)|#Gd9)it8jC#=T6>!^*{EKi|aPA_tez!7xNx8U8}4G z#>cajpKWoqJXduXxUW^`fUD-TKfqUaoUhwjONIOmqy8!CM=l#w2wB>x@lNlc4fnM7 zmCb3yHw|ygzK)EyCcf(Lt=j5so&TW?%d~eNzpK7$a})9P6o+-+EbcrAA0c)I=HPMO zWuns31H-8CAmSL6K1K|FPP^P@Ywk|8Sa+WCJyTKiMIVr(_(kas?ofN|6|yjZoyu`Z zezN>ZV=No%JdTOUvM4$QmOf-MhO;r;B)}t{`muK5EQ#L;_Crow$q2m+?AK*X2bOGt zUf%V-L=P`1c6dyF9yBz1DQGvchiYQo88jWEHaKji2%IG#Ar7}9^8|!+(72W%0Y`DB z^w)vCN*Oc!zY*&oyIc>`$_&DY&^Y=w1UrL0;`0t zfR=LEd$v9gx_|+9{pOTPMEx6+iE?|&cSlcwQ3{+%G1znMkn_8l?VknGr5i*!M|DHQ z3C$->Rnrastxzwy7{&b%kQcFvS2PrRN_O)~rGeqEm{K%>Q)w3kOb1=YD(z*dl=vrM znL_3i>b2<;j5BF!@uPB{*4s%uN)E+#9M2KDovBYQ?kPwM7-A5A8*3+!3H&CokHc1X#MyO(9y)N@NtXE#4jIz%%{)?f{C)lfdXTJg delta 931 zcmZqhTxLH(jgfbvYBM)40~Z4bTQew3EEJx2NC7DPa6gEUoVmtrapNJn*>nTMn2`q=h)7{?N^+3#DrCj=)VL*QrGn6nSP7ah3 zp2WR}S)Bpmumzlalf`&4aA@u4c@MFB8t*Zv-LZV3U>kt}5A>Pq-FPw!-1YYT?CDr^$;bLR=dma%qy7 z$YdMQFsMwvg!SZeq5@ziOHZC4DKl9_%m;^gg<`@;>UN2x;ZSENz8Z(jL#f!wUJ@#B zyZzzjX-tw#kj5V2Y6`&A0}N4+^V)D2Y$&cfIYg=khwMYCL{4ycgYwAaZfSk6waSxc oNY8;f#aR|4Rw#QLhY7KAJE1DY<&_~p86=M@OB|HXWdT_S0PLmQ761SM diff --git a/indra/newview/installers/windows/lang_ja.nsi b/indra/newview/installers/windows/lang_ja.nsi index 5b1c5f4ce9b11d0f42c89e6c4ace62ddd33d533c..debbfd8c4863e466854ccebb9c0c0aa80f131333 100755 GIT binary patch delta 2111 zcmaJ?TS%K{7=Hhlm^4!p6HQ{B^*2M?+37w*SE%g{9%{RdMy<*e3Y|@&QBzHG=mAQl zFm^Krt?za-y0L>4deIBpi)~jM3^rjm6IRxX(FtP=y596~(ThU+eBYlxN#oB5eyE+--0ZX+QmdrxL}A>)kL-dYRlXKC zxoJP?6sH7bDMlHZqcr94zeJ1NVrz1yX_{s!!K1DwPTK1Hg9YRSaB-aFaMq*k>>3k` zVnh5S*2EL>omdh>;K(R!4qO>JNh{(vb@s1#$ZOu#=5AULU&G=L@eB6X#e3p{m=ZP- zCf!tX7Svd)>KUz6=oj*1h3zoX8Kzt8{C*nUV6^|KH6#ky2oQ%iW zwg5lK%@?cNc)sdImANmgQiX8`58C^ETVv!;?7NB(B-siQarB}pryK(ShWWN*6|0NY zuPd|L)#ER3WnB>;efsN^k)L-(>rhcHQ*@gztb^`)%>-6qKJVGiZ`H=j<}SWl+v(pT zK`Z>1r%PEL3WjWMPwmc(oZU6sO^l^xQ0vNKN%;Ffwu$NQ)zKAZDC%42kbjgqCtLx%#bmzC| ztXtwMv5MUlbn0Ezt6kAqvsdwgl->}jix&YrY4rRO&GJ&vkJv(dB^b3z!sFmo?-+PZ^bv*0(?OLniNu?5XaGzm*2rNQ7kKA@*1;hwWv%@tI@hgUw=2P# z_R7l0nBtW+VN`KizEDPPrN%7Si#MUDTgmqSb)G?WQcz1Erfv!=pEg7G<^gywvyqb3 zL;j)|<@X?lcmBR(_wqQ-=hRKf!xQO^k>ixg_ZjRMvnZ-D4&S6g=~kQrTONu!s#y7b z(4k>y>qYg_O_g3CuN}%*UamQ`hEcZiWORf2ZJOaJU-NPtVn#V6PA5}5t6Z9)SFrcI zduHjZoGVY5PBKu5HcDj+M=%K-ZXZetpe$lOT>)HhX0%GESx<&hwOCu9e<8TRvn%D40mktm;e9( delta 880 zcmbQ>_{nI38YAyS)mBzs1}+BPiK{Icc_%k=N>0AO!7-VIF#*b}VXT2DnEaE`9V!;U z!Z-N=lfdLMCKnWuAgD@jR$Hj}0@fTjOK!3gn-kw|gVhF~4Ne-oG+1JA)nM{8HVq^N zU)T)L6_~MGK}{`WcLpkT_*&9VN zRZ&bZm}KBo+vcb1mktbNJq8d2hw@}c(M)tN?Ge>N7y2QZ0=L5-X!k}D^U0S4%!srD zq`FMp4BgOu;(F*p|HQL6!7&d^>eiDtO6WsFWS>L<)P89xkQgZaCrSCCYd<8lj2o_< jL1A*EfH1cLFv3$ADu5&?mSrcekaofnxKc7QEFhf#P=f>- diff --git a/indra/newview/installers/windows/lang_pl.nsi b/indra/newview/installers/windows/lang_pl.nsi index a172f0cdeb4d23c48da7c6d29426696df1cd14fc..1106757a95d5c115fbe71063e0ccc56882afda79 100755 GIT binary patch delta 1843 zcmbVN%W6|m6y4V*TGQ4((kAIM*Jy3UQlW@~inX>1imgE{76dhIu38(DHV;dKSOq`8 zxHSMsC>GX!=;-|cbtDr5Y?%ccuhu<`nn-polI{wt=BIt*Gzw|-_=LK z0cT0y28V5}t@qe^>)pUsJs8@mUEyuUb1J+SUMn4YaDN$Ips${e4AqUugiOkDT*pc) zkv?ZNwo5m443%SJnre=i_|1)ra>(&JY?*-kF`KSLI`v8CH$7KdADl7BUj|4Q0a6Oj zoG#RLMo;36h+o5V^oP%pA3n{^ecI&nE$85~2sJX7$cdPt!wW7wII0;(dRdC6ff5yEQ{FQ>4X$8Q$v zOK9PK*Jt9TkGrQe(zC4;?+FpWkjDHy`XD+m*&qSghrs=E1i^b{1c5nJku`m!=4(;X#>Yad*pg6!2#2$pZ0(y6)aA)(Loc$XoFqH$DY9j7)jNgKz(qt92>0U8kU%_`oHO*nnf2tu`Z5@;d%f?5yT`~WP6+&Kx#f- zK%vCaHk^_aMbTZIZmgVaRT7!T-sKqNngdB`@jGm&P|mPuV6}5-N4_EyD~tb;31_`p zCZJ;1+A2XgYluY3NU}Bk&{g02tHP*>p6_nk@oPS#*tKiXx9!pB zBy6LY0#ab<$l(mgV8w&XQve)~$!XY0n)eeyoS!SkG9gEyGYh??k<(-I*{S60@f%#> zRE{j$@g*;5{Fclpa#$f$xX`tFcXhxAk@y%2IqPuGHE}2uoRga(;xjT03zfiwn*t}( zJOql^_fQrz(TkS>7_AE>Q;;!)%$ZMDq=`yf&u}a}T+|l_X$=iP0_=xPkDv!zt%Zj* z7Ua6KgirBbgL!yZB?v!AO-r@H3WmTMfOIU|Fl|gUvM0w@OIwCmC*c>S`lSvp$s7~H5s6JUnN@nr|F^3@^o$iBc~_H(&p0Z`f~2S#WSFq$hFoERs2$*Tz!fVru_w3-Q&Dh3K~E|3?) Nkx(at0)Ll+4geXqs~rFU diff --git a/indra/newview/installers/windows/lang_pt-br.nsi b/indra/newview/installers/windows/lang_pt-br.nsi index 9ef252d2324343f40939e33574b079afc3a45d66..00b2e4741e91aac723d73d83e57c63ae15db0553 100755 GIT binary patch delta 1505 zcmaJ>&ubGw6n+(JHEnGJHi>PTooH(gic$(5R17sqF=$O|TIj(F%O=sl<_Eipv8R|n zKtboK2l3ETLD-`Q@BRs11W#T)6%T^n+i}}99V9R_`{upxeeZj3^5xFgwU2j4qpMUW zhpOaKhgvu_yq(dd5smr7slo}3`S)p4W0vmt()n##Cjn?dYh;pzy+mcK+j4*W)8!&H z{iG(@xOHGR@$G_61LuZMsR2q^%DnzLC#T0E^3}u(4TFo5#giKIAo@~AY!FS${JFQs z1LS@z?Zsw(=z_jQ7G*oWARi^JYXbKYzcki^r0KAdiY!kR=sB8TQy11IRpdJ( zUaH_$z{>4mOo1B{Ya1(11fTQ3wGhQEX~O2hW-yiTE@zd9ZVxTb*T`z%8j$vieX<>UBDM=91==t}bReE=;`Gs83Y6|irkKGu&3sIg>P{KbzZ1j#)}a}UCgbRAy&Z`VU14&wYL bdjH5nJt)1x{51HX^8-{5HG~84{3)bA`5ZnR delta 480 zcmccRd&+5p2dii>Ln=cuLq0ULkUCTuvrdXot%tN0Gg}D4v?U zUrckef#?gI8U$1)`$HpX*+5A%`nQ?KBJPu1X*DBOAV)}Nno{|~>3mtDE diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi index d7c728d3e2240dbe2c9804460d813a699deb2246..ac69af9bb7013b1972fe2cc8586e396a20072050 100755 GIT binary patch delta 1536 zcmaJ>OK%cU6h72z!F9?Z?wn9)nN%v`oTWV0b@|-+ z_L^6uL=?I^;)a+Oago3|4cT4X`8F-)a9$Egx*{in7vu}CT^3wB7A1UleLP_yK5)-k zRd(Q3wEEB9RF)*`_iU_xQi+iEI*7zI+J1spvC}q z9H27j8QgC{!Z0f|FP6muBuv&U)+EkJF%MgX-cbhmiqt~hGHqdC8lX_csf0ZbSrfks z?vJ7QM3?9cIrV=G`V#cjZX^`7V#48@l&>yk*4TlKZ=>uy%~J}&8c3lbEZivpU6$&4 zni_N}WQsn!Y}3TqD6NH)QKCj|o|!PirNW|&xJ^A`6SK%RExL!b3IDcSJsVz3<7CnOCVm%*T~ zfQSNio!8?A6>7u3g%pZDcY`06;&C>mm#;rRoR=YG-#XR`Cfgva*L(+sOhLVfZp>6% z5|1Er&tEVuh*u8A?xvjvUuI&1uIn~^R{C5HKls0KD;WKAXk!Ta-L~}bTzd-D*O7=Z zj060P GXZafzE;Yyi delta 440 zcmdnwam#kY0T$6+ltpc)GU;?IeMq`$SQ+E; zZZ&bs#$cMbbL*dQ)rD)r#)Vr6Rewdtk#pMI}5JbvBmJ$D>2~d1OR?zO-kc5g$IfU@-r@k~XosclD${Shr_x zwqA~ZGbLD)b^S4R$CMQN&~I%WPUuj-SzD7w25UQJ>CvgY!E-pV-}*bX6wUjxm+6FdlC@@DMMP2Uykn5$o9_++2Dsr;XJH%ScfJ85Q{WR5J7|M*atH zrx-i0qX;Agi$|{{pHYi?EIxkiZb->`Tv?F=EXbxcKmExxxb}>_b(x~{0ALS6Z-eer zO7_d89f4keZp93flq+D27j~r9Oy@WWA>bUW<25Up72IEQAZ5Hn~aD(XOv)IR- z$gcy*Od2^stU?ZJtAmBRueKUtym&L!UZfj@PIM|9pXagKQg;cAb71B(tVwTquwgIv z<6-==jNK*J{4C$9r~tn#t5d%htqKow&EwgF2}=RBU0GH|pNu3DTZl}f1D=QrA1c!d zp3EZ$*)#{O<|h0O>5cS3yfmv_Q8drkixI zRQ@(fy_~ydh(zw6!+kZdu>Ef90?&P?pwlu6@kE(`uUMwVZ&^fiA@Wvcc`NH67ksR1 mh^pdu0Q3s-L>*7hBLa2w{VxN%id_ESSr6r29GdeLO8)?!!#uYD delta 385 zcmZ4IdCYDD7prJ6Ln=cuLq06jx3bDIp$R=^ zk30-w2n9cwB zotdypO%4|N2yzso!sLr0+M6qcx1l@8UTi6t*o~PyQM_>TKPeZ+%|5byOuQ(52f1`IpMnzr!?$E_ diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi index 39c005a683ff6e99f85fead67ed79a4a30567f4c..f8d62f843b5faab8caea418c1b799dd59227c164 100755 GIT binary patch delta 1496 zcmb7E-Ahwp7=N}Y`yefKX;5|bK zyx@Izf?Z5T|3=Y8m;D1>2tsrx^?TmaY14Bqim{z{&*$&?{hs&KZXMmLJ!|QBKuc60 zgNjt5HJnytrRB5TT2HlpbUB#A-V@iDtp*ADo{ShjbU|~dze*X@uAqmYd78rSyBR@~ zlqMbLhm>TyO!=P#_n&UwVn)moRBPEtlER6zx&?{Z+ClL za>#qmuPY{>lOYd!!rC;{Tmj$fc*ZRcu|_%8Ssu1WC-mj(b2p|ldxAz0sZ$vl26QSZ zjnYan0bLAON=m^+<=HlVCPp6hC$`oPvhyka=N^==dp_7FsmCrwoyG>$3+}4!xfag6y#h7BE}l-k?~|HFzVP%$7&UWd*m&jH zGG`fOEfz)*ZDw(=MRdtpTK(<+e=236X%5{CD#%Eirp=;m924-AIrv!11fHy{j;%TN zMdjm;z-Ae7jKQ2ThggAI%X`D81a9gKo?O?OQqTtKl)<4;8+PhV0-OG)t3Za?*W@?@ zANOZgIXBOmU%|>+LNq8CfP0*>GTM20lV2mI7#!DVUR02>)Cb#Xc$RQZuc#)PkjH~^ zv?+LFtTN~@LB{%kGmlA_H3qN*IJ_Mh^)HQ6Q%Pn%#LPF}$0@u?uQfIRayHX^JI UaDvM>gYPtRmp@yF2Fxv_-#@fO(*OVf delta 532 zcmaE7yTN!v5{qasLn=cuLq0P??8K`!*@lB}G80$9ktIQbWU122lJCbJ4@ZeAl$$AsOy$=1THIAksgo8pkM z7L&&=v)NsQ8JFv#MLV%;ntV}Md@_%i91dCBmSu~vGfobZn1@~CW>!f