From 2e50b01ff6047ab61854d19e2028431e6c19e23e Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Wed, 6 Sep 2023 22:51:32 -0400 Subject: [PATCH] Innosetup installer --- autobuild.xml | 64 +- indra/cmake/Copy3rdPartyLibs.cmake | 62 ++ indra/newview/CMakeLists.txt | 4 + .../windows/FILES_ARE_UNICODE_UTF-16LE.txt | 6 - .../installers/windows/install_template.iss | 109 +++ .../installers/windows/installer_template.nsi | 868 ------------------ indra/newview/installers/windows/lang_da.nsi | Bin 12802 -> 0 bytes indra/newview/installers/windows/lang_de.nsi | 90 -- .../newview/installers/windows/lang_en-us.nsi | Bin 12470 -> 0 bytes indra/newview/installers/windows/lang_es.nsi | Bin 13790 -> 0 bytes indra/newview/installers/windows/lang_fr.nsi | Bin 14302 -> 0 bytes indra/newview/installers/windows/lang_it.nsi | Bin 13528 -> 0 bytes indra/newview/installers/windows/lang_ja.nsi | Bin 10698 -> 0 bytes indra/newview/installers/windows/lang_pl.nsi | Bin 13122 -> 0 bytes .../newview/installers/windows/lang_pt-br.nsi | Bin 13970 -> 0 bytes indra/newview/installers/windows/lang_ru.nsi | Bin 13264 -> 0 bytes indra/newview/installers/windows/lang_tr.nsi | Bin 13174 -> 0 bytes indra/newview/installers/windows/lang_zh.nsi | Bin 10144 -> 0 bytes .../installers/windows/language_menu.nsi | Bin 1464 -> 0 bytes indra/newview/viewer_manifest.py | 88 +- 20 files changed, 243 insertions(+), 1048 deletions(-) delete mode 100644 indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt create mode 100644 indra/newview/installers/windows/install_template.iss delete mode 100644 indra/newview/installers/windows/installer_template.nsi delete mode 100644 indra/newview/installers/windows/lang_da.nsi delete mode 100644 indra/newview/installers/windows/lang_de.nsi delete mode 100644 indra/newview/installers/windows/lang_en-us.nsi delete mode 100644 indra/newview/installers/windows/lang_es.nsi delete mode 100644 indra/newview/installers/windows/lang_fr.nsi delete mode 100644 indra/newview/installers/windows/lang_it.nsi delete mode 100644 indra/newview/installers/windows/lang_ja.nsi delete mode 100644 indra/newview/installers/windows/lang_pl.nsi delete mode 100644 indra/newview/installers/windows/lang_pt-br.nsi delete mode 100644 indra/newview/installers/windows/lang_ru.nsi delete mode 100644 indra/newview/installers/windows/lang_tr.nsi delete mode 100644 indra/newview/installers/windows/lang_zh.nsi delete mode 100644 indra/newview/installers/windows/language_menu.nsi diff --git a/autobuild.xml b/autobuild.xml index ff9768828b9..bf52db0031a 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -819,6 +819,38 @@ <key>version</key> <string>0.10.6.314267</string> </map> + <key>innosetup</key> + <map> + <key>copyright</key> + <string>Copyright (C) 1997-2023 Jordan Russell. All rights reserved.</string> + <key>description</key> + <string>Innosetup installer framework</string> + <key>license</key> + <string>MIT</string> + <key>license_file</key> + <string>LICENSES/innosetup.txt</string> + <key>name</key> + <string>innosetup</string> + <key>platforms</key> + <map> + <key>windows64</key> + <map> + <key>archive</key> + <map> + <key>hash</key> + <string>46b82a3209dfa4bc6b65aa655eebdbd4ecaed1e1cc33e0a3b77d36475d5fa3ccd3fdc220c803ba91fa19b3e94b3bda2fa459cabab2620946af28f170d8aaa76c</string> + <key>hash_algorithm</key> + <string>blake2b</string> + <key>url</key> + <string>https://git.alchemyviewer.org/api/v4/projects/212/packages/generic/innosetup/6.2.2.2143/innosetup-6.2.2-windows64-2143.tar.zst</string> + </map> + <key>name</key> + <string>windows64</string> + </map> + </map> + <key>version</key> + <string>6.2.2</string> + </map> <key>jpegencoderbasic</key> <map> <key>copyright</key> @@ -2079,38 +2111,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>version</key> <string>4.10.0000.32327.5fc3fe7c.558436</string> </map> - <key>squirrel</key> - <map> - <key>copyright</key> - <string>Copyright (c) 2012 GitHub, Inc.</string> - <key>description</key> - <string>Squirrel installer framework</string> - <key>license</key> - <string>MIT</string> - <key>license_file</key> - <string>LICENSES/squirrel.txt</string> - <key>name</key> - <string>squirrel</string> - <key>platforms</key> - <map> - <key>windows64</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>6ebc2d8934207911406aea18de8eac46bcd18cc4b6f6e2c24b936cac2d7f0abe94fc17e274f5567dc4280ace5a4e8accac658edb0cdf0623348fc72678c999cd</string> - <key>hash_algorithm</key> - <string>blake2b</string> - <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/197/packages/generic/squirrel/2.9.42.1850/squirrel-2.9.42-windows64-1850.tar.zst</string> - </map> - <key>name</key> - <string>windows64</string> - </map> - </map> - <key>version</key> - <string>2.9.42</string> - </map> <key>threejs</key> <map> <key>copyright</key> diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 222017c55fe..3a6784d5afe 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -85,6 +85,68 @@ if(WINDOWS) if(TARGET al::discord-gamesdk) list(APPEND release_files discord_game_sdk.dll) endif() + + #******************************* + # Copy MS C runtime dlls, required for packaging. + if (MSVC80) + set(MSVC_VER 80) + elseif (MSVC_VERSION EQUAL 1600) # VisualStudio 2010 + MESSAGE(STATUS "MSVC_VERSION ${MSVC_VERSION}") + elseif (MSVC_VERSION EQUAL 1800) # VisualStudio 2013, which is (sigh) VS 12 + set(MSVC_VER 120) + elseif (MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1920) # Visual Studio 2017 + set(MSVC_VER 140) + elseif (MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1930) # Visual Studio 2019 + set(MSVC_VER 140) + elseif (MSVC_VERSION GREATER_EQUAL 1930 AND MSVC_VERSION LESS 1940) # Visual Studio 2022 + set(MSVC_VER 140) + else (MSVC80) + MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake") + endif (MSVC80) + + if(ADDRESS_SIZE EQUAL 32) + # this folder contains the 32bit DLLs.. (yes really!) + set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64") + else(ADDRESS_SIZE EQUAL 32) + # this folder contains the 64bit DLLs.. (yes really!) + set(registry_find_path "[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32") + endif(ADDRESS_SIZE EQUAL 32) + + # Having a string containing the system registry path is a start, but to + # get CMake to actually read the registry, we must engage some other + # operation. + get_filename_component(registry_path "${registry_find_path}" ABSOLUTE) + + # These are candidate DLL names. Empirically, VS versions before 2015 have + # msvcp*.dll and msvcr*.dll. VS 2017 has msvcp*.dll and vcruntime*.dll. + # Check each of them. + foreach(release_msvc_file + concrt${MSVC_VER}.dll + msvcp${MSVC_VER}.dll + msvcp${MSVC_VER}_1.dll + msvcp${MSVC_VER}_2.dll + msvcp${MSVC_VER}_atomic_wait.dll + msvcp${MSVC_VER}_codecvt_ids.dll + vccorlib${MSVC_VER}.dll + vcruntime${MSVC_VER}.dll + vcruntime${MSVC_VER}_1.dll + ) + if(EXISTS "${registry_path}/${release_msvc_file}") + to_staging_dirs( + ${registry_path} + third_party_targets + ${release_msvc_file}) + else() + # This isn't a WARNING because, as noted above, every VS version + # we've observed has only a subset of the specified DLL names. + MESSAGE(STATUS "Redist lib ${release_msvc_file} not found") + endif() + endforeach() + MESSAGE(STATUS "Will copy redist files for MSVC ${MSVC_VER}:") + foreach(target ${third_party_targets}) + MESSAGE(STATUS "${target}") + endforeach() + elseif(DARWIN) set(vivox_lib_dir "${ARCH_PREBUILT_DIRS_RELEASE}") set(slvoice_files SLVoice) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 92f667cb781..89325f65a3d 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -53,6 +53,10 @@ include(LLPrimitive) # Viewer Branding Assets use_prebuilt_binary(branding) +if(WINDOWS) + use_prebuilt_binary(innosetup) +endif() + if( LLPHYSICSEXTENSIONS_SRC_DIR ) if (NOT HAVOK_TPV) # When using HAVOK_TPV, the library is precompiled, so no need for this diff --git a/indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt b/indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt deleted file mode 100644 index 30f9349111d..00000000000 --- a/indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt +++ /dev/null @@ -1,6 +0,0 @@ -The language files in this directory are Unicode (Little-Endian) format, also known as UTF-16 LE. - -This is the format required for NSIS Unicode. See http://www.scratchpaper.com/ for details. - -James Cook -September 2008 diff --git a/indra/newview/installers/windows/install_template.iss b/indra/newview/installers/windows/install_template.iss new file mode 100644 index 00000000000..18c74a43280 --- /dev/null +++ b/indra/newview/installers/windows/install_template.iss @@ -0,0 +1,109 @@ +; Script generated by the Inno Setup Script Wizard. +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! + +;#define MyAppName "Alchemy Viewer" +;#define MyAppNameShort "AlchemyViewer" +;#define MyAppVersion "7.0.0.4545" +;#define MyAppExeName "MyProg.exe" +;#define ViewerSrcDir "" + +%%INST_VARS%% + +#define MyAppPublisher "Alchemy Development Group" +#define MyAppURL "https://www.alchemyviewer.org" + +[Setup] +; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. +; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) +AppId={{564993A0-36C3-4C9C-83FA-336EAB720367} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +AppVerName={#MyAppName} {#MyAppVersion} +;AppVerName={#MyAppName} {#MyAppVersion} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +AppCopyright=Copyright (C) 2013-2023 {#MyAppPublisher} +DefaultDirName={autopf}\{#MyAppNameShort} +DisableProgramGroupPage=yes +;LicenseFile={#ViewerSrcDir}\..\..\doc\LGPL-license.txt +; Uncomment the following line to run in non administrative install mode (install for current user only.) +;PrivilegesRequired=lowest +PrivilegesRequiredOverridesAllowed=commandline +OutputDir=. +OutputBaseFilename={#MyAppInstFile} +SetupIconFile={#ViewerSrcDir}\installers\windows\install_icon.ico +Compression=lzma2 +SolidCompression=yes +WizardStyle=modern +ArchitecturesAllowed=x64 +ArchitecturesInstallIn64BitMode=x64 +MinVersion=10.0 +AppMutex=AlchemyAppMutex,Global\AlchemyAppMutex +VersionInfoCompany={#MyAppPublisher} +VersionInfoVersion={#MyAppVersion} +DisableWelcomePage=no + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" +Name: "armenian"; MessagesFile: "compiler:Languages\Armenian.isl" +Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl" +Name: "bulgarian"; MessagesFile: "compiler:Languages\Bulgarian.isl" +Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl" +Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl" +Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl" +Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl" +Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl" +Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl" +Name: "french"; MessagesFile: "compiler:Languages\French.isl" +Name: "german"; MessagesFile: "compiler:Languages\German.isl" +Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl" +Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl" +Name: "icelandic"; MessagesFile: "compiler:Languages\Icelandic.isl" +Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl" +Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl" +Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl" +Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl" +Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl" +Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" +Name: "slovak"; MessagesFile: "compiler:Languages\Slovak.isl" +Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl" +Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl" +Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl" +Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + +[Files] +; NOTE: Don't use "Flags: ignoreversion" on any shared system files +%%INSTALL_FILES%% + +[InstallDelete] +Type: files; Name: "{app}\app_settings" +Type: files; Name: "{app}\llplugin" +Type: files; Name: "{app}\skins" + +[Icons] +Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" +Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon + +[Run] +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent + +[Registry] +Root: HKA; Subkey: "Software\Classes\secondlife"; ValueType: "string"; ValueData: "URL:Second Life"; Flags: uninsdeletekey +Root: HKA; Subkey: "Software\Classes\secondlife"; ValueType: "string"; ValueName: "URL Protocol"; ValueData: "" +Root: HKA; Subkey: "Software\Classes\secondlife\DefaultIcon"; ValueType: "string"; ValueData: "{app}\{#MyAppExeName},0" +Root: HKA; Subkey: "Software\Classes\secondlife\shell\open\command"; ValueType: "string"; ValueData: """{app}\{#MyAppExeName}"" -url ""%1""" + +Root: HKA; Subkey: "Software\Classes\x-grid-info"; ValueType: "string"; ValueData: "URL:Hypergrid"; Flags: uninsdeletekey +Root: HKA; Subkey: "Software\Classes\x-grid-info"; ValueType: "string"; ValueName: "URL Protocol"; ValueData: "" +Root: HKA; Subkey: "Software\Classes\x-grid-info\DefaultIcon"; ValueType: "string"; ValueData: "{app}\{#MyAppExeName},0" +Root: HKA; Subkey: "Software\Classes\x-grid-info\shell\open\command"; ValueType: "string"; ValueData: """{app}\{#MyAppExeName}"" -url ""%1""" + +Root: HKA; Subkey: "Software\Classes\x-grid-location-info"; ValueType: "string"; ValueData: "URL:Hypergrid"; Flags: uninsdeletekey +Root: HKA; Subkey: "Software\Classes\x-grid-location-info"; ValueType: "string"; ValueName: "URL Protocol"; ValueData: "" +Root: HKA; Subkey: "Software\Classes\x-grid-location-info\DefaultIcon"; ValueType: "string"; ValueData: "{app}\{#MyAppExeName},0" +Root: HKA; Subkey: "Software\Classes\x-grid-location-info\shell\open\command"; ValueType: "string"; ValueData: """{app}\{#MyAppExeName}"" -url ""%1""" \ No newline at end of file diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi deleted file mode 100644 index c782c901c37..00000000000 --- a/indra/newview/installers/windows/installer_template.nsi +++ /dev/null @@ -1,868 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Second Life setup.nsi -;; 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 -;; License as published by the Free Software Foundation; -;; version 2.1 of the License only. -;; -;; This library is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; Lesser General Public License for more details. -;; -;; You should have received a copy of the GNU Lesser General Public -;; License along with this library; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -;; -;; Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA -;; -;; NSIS 3 or higher required for Unicode support -;; -;; Author: James Cook, TankMaster Finesmith, Don Kjer, Callum Prentice -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Compiler flags -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Unicode true -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 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -# This placeholder is replaced by viewer_manifest.py -%%VERSION%% - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; - language files - one for each language (or flavor thereof) -;; (these files are in the same place as the nsi template but the python script generates a new nsi file in the -;; application directory so we have to add a path to these include files) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Ansariel notes: "Under certain circumstances the installer will fall back -;; to the first defined (aka default) language version. So you want to include -;; en-us as first language file." -!include "%%SOURCE%%\installers\windows\lang_en-us.nsi" - -# Danish and Polish no longer supported by the viewer itself -##!include "%%SOURCE%%\installers\windows\lang_da.nsi" -!include "%%SOURCE%%\installers\windows\lang_de.nsi" -!include "%%SOURCE%%\installers\windows\lang_es.nsi" -!include "%%SOURCE%%\installers\windows\lang_fr.nsi" -!include "%%SOURCE%%\installers\windows\lang_ja.nsi" -!include "%%SOURCE%%\installers\windows\lang_it.nsi" -##!include "%%SOURCE%%\installers\windows\lang_pl.nsi" -!include "%%SOURCE%%\installers\windows\lang_pt-br.nsi" -!include "%%SOURCE%%\installers\windows\lang_ru.nsi" -!include "%%SOURCE%%\installers\windows\lang_tr.nsi" -!include "%%SOURCE%%\installers\windows\lang_zh.nsi" - -# *TODO: Move these into the language files themselves -##LangString LanguageCode ${LANG_DANISH} "da" -LangString LanguageCode ${LANG_GERMAN} "de" -LangString LanguageCode ${LANG_ENGLISH} "en" -LangString LanguageCode ${LANG_SPANISH} "es" -LangString LanguageCode ${LANG_FRENCH} "fr" -LangString LanguageCode ${LANG_JAPANESE} "ja" -LangString LanguageCode ${LANG_ITALIAN} "it" -##LangString LanguageCode ${LANG_POLISH} "pl" -LangString LanguageCode ${LANG_PORTUGUESEBR} "pt" -LangString LanguageCode ${LANG_RUSSIAN} "ru" -LangString LanguageCode ${LANG_TURKISH} "tr" -LangString LanguageCode ${LANG_TRADCHINESE} "zh" - -# This placeholder is replaced by viewer_manifest.py -%%INST_VARS%% - -Name ${INSTNAME} - -SubCaption 0 $(LicenseSubTitleSetup) # Override "license agreement" text - -!define MUI_ICON "%%SOURCE%%\installers\windows\install_icon.ico" -!define MUI_UNICON "%%SOURCE%%\installers\windows\uninstall_icon.ico" - -BrandingText " " # Bottom of window text -Icon "${MUI_ICON}" -UninstallIcon "${MUI_UNICON}" -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 - -# Registry key paths, ours and Microsoft's -!define LINDEN_KEY "SOFTWARE\Alchemy Development Group" -!define INSTNAME_KEY "${LINDEN_KEY}\${INSTNAME}" -!define MSCURRVER_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion" -!define MSNTCURRVER_KEY "SOFTWARE\Microsoft\Windows NT\CurrentVersion" -!define MSUNINSTALL_KEY "${MSCURRVER_KEY}\Uninstall\${INSTNAME}" - -# from http://nsis.sourceforge.net/Docs/MultiUser/Readme.html -### Highest level permitted for user: Admin for Admin, Standard for Standard -##!define MULTIUSER_EXECUTIONLEVEL Highest -!define MULTIUSER_EXECUTIONLEVEL Admin -!define MULTIUSER_MUI -### Look for /AllUsers or /CurrentUser switches -##!define MULTIUSER_INSTALLMODE_COMMANDLINE -# appended to $PROGRAMFILES, as affected by MULTIUSER_USE_PROGRAMFILES64 -!define MULTIUSER_INSTALLMODE_INSTDIR "${INSTNAME}" -# expands to !define MULTIUSER_USE_PROGRAMFILES64 or nothing -%%PROGRAMFILES%% -# should make MultiUser.nsh initialization read existing INSTDIR from registry -## SL-10506: don't -##!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY "${INSTNAME_KEY}" -##!define MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME "" -# Don't set MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY and -# MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME to cause the installer to -# write $MultiUser.InstallMode to the registry, because when the user installs -# multiple viewers with the same channel (same ${INSTNAME}, hence same -# ${INSTNAME_KEY}), the registry entry is overwritten. Instead we'll write a -# little file into the install directory -- see .onInstSuccess and un.onInit. -!include MultiUser.nsh -!include MUI2.nsh -!define MUI_BGCOLOR FFFFFF -!insertmacro MUI_FUNCTION_GUIINIT - -UninstallText $(UninstallTextMsg) -DirText $(DirectoryChooseTitle) $(DirectoryChooseSetup) -##!insertmacro MULTIUSER_PAGE_INSTALLMODE -!define MUI_PAGE_CUSTOMFUNCTION_PRE dirPre -!insertmacro MUI_PAGE_DIRECTORY -!insertmacro MUI_PAGE_INSTFILES - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Variables -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Var INSTNAME -Var INSTEXE -Var VIEWER_EXE -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 - -# 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 -!insertmacro GetParameters -!insertmacro GetOptions -!include WinVer.nsh # For OS and SP detection -!include 'LogicLib.nsh' # for value comparison -!include "x64.nsh" # for 64bit detection - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Pre-directory page callback -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function dirPre - StrCmp $SKIP_DIALOGS "true" 0 +2 - Abort - -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 -!insertmacro MULTIUSER_INIT - -%%ENGAGEREGISTRY%% - -# SL-10506: Setting MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY and -# MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME should -# read the current location of the install for this version into INSTDIR. -# However, SL-10506 complains about the resulting behavior, so the logic below -# is adapted from before we introduced MultiUser.nsh. - -# if $0 is empty, this is the first time for this viewer name -ReadRegStr $0 SHELL_CONTEXT "${INSTNAME_KEY}" "" - -# viewer with this name was installed before -${If} $0 != "" - # use the value we got from registry as install location - StrCpy $INSTDIR $0 -${EndIf} - -Call CheckCPUFlags # Make sure we have SSE2 support -Call CheckWindowsVersion # Don't install On unsupported systems - 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 SHELL_CONTEXT "${INSTNAME_KEY}" "InstallerLanguage" - IfErrors +2 0 # If error skip the copy instruction - StrCpy $LANGUAGE $0 - -# For silent installs, no language prompt, use default - IfSilent 0 +3 - StrCpy $SKIP_AUTORUN "true" - Goto lbl_return - StrCmp $SKIP_DIALOGS "true" lbl_return - - 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 SHELL_CONTEXT "${INSTNAME_KEY}" "InstallerLanguage" $LANGUAGE -lbl_return: - Pop $0 - Return - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Prep Uninstaller Section -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function un.onInit - # Save $INSTDIR -- it appears to have the correct value before - # MULTIUSER_UNINIT, but then gets munged by MULTIUSER_UNINIT?! - Push $INSTDIR - !insertmacro MULTIUSER_UNINIT - Pop $INSTDIR - - # Now read InstallMode.txt from $INSTDIR - Push $0 - ClearErrors - FileOpen $0 "$INSTDIR\InstallMode.txt" r - IfErrors skipread - FileRead $0 $MultiUser.InstallMode - FileClose $0 -skipread: - Pop $0 - -%%ENGAGEREGISTRY%% - -# Read language from registry and set for uninstaller. Key will be removed on successful uninstall - ReadRegStr $0 SHELL_CONTEXT "${INSTNAME_KEY}" "InstallerLanguage" - IfErrors lbl_end - StrCpy $LANGUAGE $0 -lbl_end: - -## MessageBox MB_OK "After restoring:$\n$$INSTDIR = '$INSTDIR'$\n$$MultiUser.InstallMode = '$MultiUser.InstallMode'$\n$$LANGUAGE = '$LANGUAGE'" - - Return - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Checks for CPU valid (must have SSE2 support) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function CheckCPUFlags - Push $1 - System::Call 'kernel32::IsProcessorFeaturePresent(i) i(10) .r1' - IntCmp $1 1 OK_SSE2 - MessageBox MB_OKCANCEL $(MissingSSE2) /SD IDOK IDOK OK_SSE2 - Quit - - 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 is set by MultiUser.nsh initialization. - -# Start with some default values. -StrCpy $INSTNAME "${INSTNAME}" -StrCpy $INSTEXE "${INSTEXE}" -StrCpy $VIEWER_EXE "${VIEWER_EXE}" -StrCpy $INSTSHORTCUT "${SHORTCUT}" - -Call CheckIfAdministrator # Make sure the user can install/uninstall -Call CloseSecondLife # Make sure Second Life not currently running - -ClearErrors - -INSTALL_FILES_START: - -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%% - -IfErrors 0 INSTALL_FILES_DONE - StrCmp $SKIP_DIALOGS "true" INSTALL_FILES_DONE - MessageBox MB_ABORTRETRYIGNORE $(ErrorSecondLifeInstallRetry) IDABORT INSTALL_FILES_CANCEL IDRETRY INSTALL_FILES_START - # MB_ABORTRETRYIGNORE does not accept IDIGNORE - Goto INSTALL_FILES_DONE - -INSTALL_FILES_CANCEL: - # We are quiting, cleanup. - # Silence warnings from RemoveProgFilesOnInst. - StrCpy $SKIP_DIALOGS "true" - Call RemoveProgFilesOnInst - MessageBox MB_OK $(ErrorSecondLifeInstallSupport) - Quit - -INSTALL_FILES_DONE: - -# 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\$VIEWER_EXE" "$SHORTCUT_LANG_PARAM" "$INSTDIR\$VIEWER_EXE" - - -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\$VIEWER_EXE" "$SHORTCUT_LANG_PARAM" "$INSTDIR\$VIEWER_EXE" -CreateShortCut "$INSTDIR\$INSTSHORTCUT.lnk" \ - "$INSTDIR\$VIEWER_EXE" "$SHORTCUT_LANG_PARAM" "$INSTDIR\$VIEWER_EXE" -CreateShortCut "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" \ - '"$INSTDIR\uninst.exe"' '' - -# Write registry -WriteRegStr SHELL_CONTEXT "${INSTNAME_KEY}" "" "$INSTDIR" -WriteRegStr SHELL_CONTEXT "${INSTNAME_KEY}" "Version" "${VERSION_LONG}" -WriteRegStr SHELL_CONTEXT "${INSTNAME_KEY}" "Shortcut" "$INSTSHORTCUT" -WriteRegStr SHELL_CONTEXT "${INSTNAME_KEY}" "Exe" "$VIEWER_EXE" -WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "Publisher" "Alchemy Development Group" -WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "URLInfoAbout" "https://alchemyviewer.org/pages/about.html" -WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "URLUpdateInfo" "https://alchemyviewer.org/pages/downloads.html" -WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "HelpLink" "https://alchemyviewer.org/" -WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "DisplayName" "$INSTNAME" -WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "UninstallString" '"$INSTDIR\uninst.exe"' -WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "DisplayVersion" "${VERSION_LONG}" -WriteRegDWORD SHELL_CONTEXT "${MSUNINSTALL_KEY}" "EstimatedSize" "0x0001D500" # ~117 MB - -# from FS:Ansariel -WriteRegStr SHELL_CONTEXT "${MSUNINSTALL_KEY}" "DisplayIcon" '"$INSTDIR\$VIEWER_EXE"' - -# 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\$VIEWER_EXE"' - -# URL param must be last item passed to viewer, it ignores subsequent params to avoid parameter injection attacks. -# MAINT-8305: On SLURL click, directly invoke the viewer, not the launcher. -WriteRegExpandStr HKEY_CLASSES_ROOT "${URLNAME}\shell\open\command" "" '"$INSTDIR\$VIEWER_EXE" -url "%1"' - -WriteRegStr HKEY_CLASSES_ROOT "x-grid-info" "(default)" "URL:Hypergrid" -WriteRegStr HKEY_CLASSES_ROOT "x-grid-info" "URL Protocol" "" -WriteRegStr HKEY_CLASSES_ROOT "x-grid-info\DefaultIcon" "" '"$INSTDIR\$VIEWER_EXE"' - -# 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\$VIEWER_EXE" -url "%1"' - -WriteRegStr HKEY_CLASSES_ROOT "x-grid-location-info" "(default)" "URL:Hypergrid" -WriteRegStr HKEY_CLASSES_ROOT "x-grid-location-info" "URL Protocol" "" -WriteRegStr HKEY_CLASSES_ROOT "x-grid-location-info\DefaultIcon" "" '"$INSTDIR\$VIEWER_EXE"' - -# 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\$VIEWER_EXE" -url "%1"' - -WriteRegStr HKEY_CLASSES_ROOT "Applications\$INSTEXE" "IsHostApp" "" -##WriteRegStr HKEY_CLASSES_ROOT "Applications\${VIEWER_EXE}" "NoStartPage" "" - -# Write out uninstaller -WriteUninstaller "$INSTDIR\uninst.exe" - -SectionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Uninstall Section -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Section Uninstall - -# Start with some default values. -StrCpy $INSTNAME "${INSTNAME}" -StrCpy $INSTEXE "${INSTEXE}" -StrCpy $VIEWER_EXE "${VIEWER_EXE}" -StrCpy $INSTSHORTCUT "${SHORTCUT}" - -# SetShellVarContext per the mode saved at install time in registry at -# MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY -# MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME -# Couldn't get NSIS to expand $MultiUser.InstallMode into the function name at Call time -${If} $MultiUser.InstallMode == 'AllUsers' -##MessageBox MB_OK "Uninstalling for all users" - Call un.MultiUser.InstallMode.AllUsers -${Else} -##MessageBox MB_OK "Uninstalling for current user" - Call un.MultiUser.InstallMode.CurrentUser -${EndIf} - -# Make sure we're not running -Call un.CloseSecondLife - -# Clean up registry keys and subkeys (these should all be !defines somewhere) -DeleteRegKey SHELL_CONTEXT "${INSTNAME_KEY}" -DeleteRegKey SHELL_CONTEXT "${MSCURRVER_KEY}\Uninstall\$INSTNAME" -# BUG-2707 Remove entry that disabled SEHOP -DeleteRegKey SHELL_CONTEXT "${MSNTCURRVER_KEY}\Image File Execution Options\$VIEWER_EXE" -DeleteRegKey HKEY_CLASSES_ROOT "Applications\$INSTEXE" -DeleteRegKey HKEY_CLASSES_ROOT "Applications\${VIEWER_EXE}" - -# 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 - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Close the program, if running. Modifies no variables. -;; Allows user to bail out of install process. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function CloseSecondLife - Push $0 - FindWindow $0 "Alchemy" "" - IntCmp $0 0 DONE - - StrCmp $SKIP_DIALOGS "true" CLOSE - MessageBox MB_OKCANCEL $(CloseSecondLifeInstMB) IDOK CLOSE IDCANCEL CANCEL_INSTALL - - CANCEL_INSTALL: - Quit - - CLOSE: - DetailPrint $(CloseSecondLifeInstDP) - SendMessage $0 16 0 0 - - LOOP: - FindWindow $0 "Alchemy" "" - IntCmp $0 0 SLEEP - Sleep 500 - Goto LOOP - - SLEEP: - # Second life window just closed, but program might not be fully done yet - # and OS might have not released some locks, wait a bit more to make sure - # all file handles were released. - # If something still isn't unlocked, it will trigger a notification from - # RemoveProgFilesOnInst - Sleep 1000 - DONE: - Pop $0 - Return - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Close the program, if running. Modifies no variables. -;; Allows user to bail out of uninstall process. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function un.CloseSecondLife - Push $0 - FindWindow $0 "Alchemy" "" - IntCmp $0 0 DONE - MessageBox MB_OKCANCEL $(CloseSecondLifeUnInstMB) IDOK CLOSE IDCANCEL CANCEL_UNINSTALL - - CANCEL_UNINSTALL: - Quit - - CLOSE: - DetailPrint $(CloseSecondLifeUnInstDP) - SendMessage $0 16 0 0 - - LOOP: - FindWindow $0 "Alchemy" "" - IntCmp $0 0 DONE - Sleep 500 - Goto LOOP - - DONE: - Pop $0 - Return - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Delete files on install if previous install exists to prevent undesired behavior -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function RemoveProgFilesOnInst - -# We do not remove whole pervious install folder on install, since -# there is a chance that viewer was installed into some important -# folder by intent or accident -# RMDir /r $INSTDIR is especially unsafe if user installed somewhere -# like Program Files - -# Set retry counter. All integers are strings. -Push $0 -StrCpy $0 0 - -ClearErrors - -PREINSTALL_REMOVE: - -# Remove old SecondLife.exe to invalidate any old shortcuts to it that may be in non-standard locations. See MAINT-3575 -Delete "$INSTDIR\$INSTEXE" -Delete "$INSTDIR\$VIEWER_EXE" - -# Remove old shader files first so fallbacks will work. See DEV-5663 -RMDir /r "$INSTDIR\app_settings\shaders" - -# Remove folders to clean up files removed during development -RMDir /r "$INSTDIR\app_settings" -RMDir /r "$INSTDIR\skins" -RMDir /r "$INSTDIR\vmp_icons" - -# Remove llplugin, plugins can crash or malfunction if they -# find modules from different versions -RMDir /r "$INSTDIR\llplugin" - -IntOp $0 $0 + 1 - -IfErrors 0 PREINSTALL_DONE - IntCmp $0 1 PREINSTALL_REMOVE #try again once - StrCmp $SKIP_DIALOGS "true" PREINSTALL_DONE - MessageBox MB_ABORTRETRYIGNORE $(CloseSecondLifeInstRM) IDABORT PREINSTALL_FAIL IDRETRY PREINSTALL_REMOVE - # MB_ABORTRETRYIGNORE does not accept IDIGNORE - Goto PREINSTALL_DONE - -PREINSTALL_FAIL: - Quit - -PREINSTALL_DONE: - -# We are no longer including release notes with the viewer, so remove them. -Delete "$SMPROGRAMS\$INSTSHORTCUT\SL Release Notes.lnk" -Delete "$INSTDIR\releasenotes.txt" - -Pop $0 - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Delete files in \Users\<User>\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 "Deleting Alchemy data files" - - StrCpy $0 0 # Index number used to iterate via EnumRegKey - - LOOP: - EnumRegKey $1 SHELL_CONTEXT "${MSNTCURRVER_KEY}\ProfileList" $0 - StrCmp $1 "" DONE # No more users - - ReadRegStr $2 SHELL_CONTEXT "${MSNTCURRVER_KEY}\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\<User>\AppData\Roaming\AlchemyNext -# Remove all settings files but leave any other .txt files to preserve the chat logs -; RMDir /r "$2\AppData\Roaming\AlchemyNext\logs" - RMDir /r "$2\AppData\Roaming\AlchemyNext\browser_profile" - RMDir /r "$2\AppData\Roaming\AlchemyNext\user_settings" - Delete "$2\AppData\Roaming\AlchemyNext\*.xml" - Delete "$2\AppData\Roaming\AlchemyNext\*.bmp" - Delete "$2\AppData\Roaming\AlchemyNext\search_history.txt" - Delete "$2\AppData\Roaming\AlchemyNext\plugin_cookies.txt" - Delete "$2\AppData\Roaming\AlchemyNext\typed_locations.txt" -# Delete files in \Users\<User>\AppData\Local\AlchemyNext - RmDir /r "$2\AppData\Local\AlchemyNext" #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 SHELL_CONTEXT "${MSCURRVER_KEY}\Explorer\Shell Folders" "Common AppData" - StrCmp $0 "" +2 - RMDir /r "$0\Alchemy" -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. -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function un.ProgramFiles - -# This placeholder is replaced by the complete list of files to uninstall by viewer_manifest.py -%%DELETE_FILES%% - -# our InstallMode.txt -Delete "$INSTDIR\InstallMode.txt" - -# Optional/obsolete files. Delete won't fail if they don't exist. -Delete "$INSTDIR\autorun.bat" -Delete "$INSTDIR\dronesettings.ini" -Delete "$INSTDIR\message_template.msg" -Delete "$INSTDIR\newview.pdb" -Delete "$INSTDIR\newview.map" -Delete "$INSTDIR\Alchemy.pdb" -Delete "$INSTDIR\Alchemy.map" -Delete "$INSTDIR\comm.dat" -Delete "$INSTDIR\*.glsl" -Delete "$INSTDIR\motions\*.lla" -Delete "$INSTDIR\trial\*.html" -Delete "$INSTDIR\newview.exe" -Delete "$INSTDIR\Alchemy.exe" - -# 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" - -Delete "$INSTDIR\uninst.exe" -RMDir "$INSTDIR" - -IfFileExists "$INSTDIR" FOLDERFOUND NOFOLDER - -FOLDERFOUND: - MessageBox MB_OK $(DeleteProgramFilesMB) /SD IDOK IDOK NOFOLDER - -NOFOLDER: - -MessageBox MB_YESNO $(DeleteRegistryKeysMB) IDYES DeleteKeys IDNO NoDelete - -DeleteKeys: - DeleteRegKey SHELL_CONTEXT "SOFTWARE\Classes\x-grid-location-info" - DeleteRegKey SHELL_CONTEXT "SOFTWARE\Classes\secondlife" - DeleteRegKey HKEY_CLASSES_ROOT "x-grid-location-info" - DeleteRegKey HKEY_CLASSES_ROOT "x-grid-info" - DeleteRegKey HKEY_CLASSES_ROOT "secondlife" - -NoDelete: - -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; After install completes, launch app -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function .onInstSuccess - Push $0 - FileOpen $0 "$INSTDIR\InstallMode.txt" w - # No newline -- this is for our use, not for users to read. - FileWrite $0 "$MultiUser.InstallMode" - FileClose $0 - Pop $0 - - Push $R0 - Push $0 - ;; MAINT-7812: Only write nsis.winstall file with /marker switch - ${GetParameters} $R0 - ${GetOptionsS} $R0 "/marker" $0 - ;; If no /marker switch, skip to ClearErrors - IfErrors +4 0 - ;; $EXEDIR is where we find the installer file - ;; Put a marker file there so VMP will know we're done - ;; and it can delete the download directory next time. - ;; http://nsis.sourceforge.net/Write_text_to_a_file - FileOpen $0 "$EXEDIR\nsis.winstall" w - FileWrite $0 "NSIS done$\n" - FileClose $0 - - ClearErrors - Pop $0 - Pop $R0 - - Call CheckWindowsServPack # Warn if not on the latest SP before asking to launch. - StrCmp $SKIP_AUTORUN "true" +2; - # Assumes SetOutPath $INSTDIR - # Run INSTEXE (our updater), passing VIEWER_EXE plus the command-line - # arguments built into our shortcuts. This gives the updater a chance - # to verify that the viewer we just installed is appropriate for the - # running system -- or, if not, to download and install a different - # viewer. For instance, if a user running 32-bit Windows installs a - # 64-bit viewer, it cannot run on this system. But since the updater - # is a 32-bit executable even in the 64-bit viewer package, the - # updater can detect the problem and adapt accordingly. - # Once everything is in order, the updater will run the specified - # viewer with the specified params. - # Quote the updater executable and the viewer executable because each - # must be a distinct command-line token, but DO NOT quote the language - # string because it must decompose into separate command-line tokens. - Exec '"$INSTDIR\$INSTEXE" precheck "$INSTDIR\$VIEWER_EXE" $SHORTCUT_LANG_PARAM' -# -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) - 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! -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;Function ClobberUserFilesTESTONLY - -;Push $0 -;Push $1 -;Push $2 -; -; StrCpy $0 0 # Index number used to iterate via EnumRegKey -; -; LOOP: -; EnumRegKey $1 SHELL_CONTEXT "${MSNTCURRVER_KEY}\ProfileList" $0 -; StrCmp $1 "" DONE # no more users -; -; ReadRegStr $2 SHELL_CONTEXT "${MSNTCURRVER_KEY}\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 SHELL_CONTEXT "${MSCURRVER_KEY}\Explorer\Shell Folders" "Common AppData" -; StrCmp $0 "" +2 -; RMDir /r "$2\Application Data\SecondLife\" -;Pop $0 -; -;FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EOF ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/indra/newview/installers/windows/lang_da.nsi b/indra/newview/installers/windows/lang_da.nsi deleted file mode 100644 index 73f23086be22efa016f61757a0246ad56a929a6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12802 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 Ke+Hi&JAVaWRi<SC diff --git a/indra/newview/installers/windows/lang_de.nsi b/indra/newview/installers/windows/lang_de.nsi deleted file mode 100644 index f67a09f84c6..00000000000 --- a/indra/newview/installers/windows/lang_de.nsi +++ /dev/null @@ -1,90 +0,0 @@ -; First is default -LoadLanguageFile "${NSISDIR}\Contrib\Language files\German.nlf" - -; Language selection dialog -LangString InstallerLanguageTitle ${LANG_GERMAN} "Installationssprache" -LangString SelectInstallerLanguage ${LANG_GERMAN} "Bitte wählen Sie die Installationssprache" - -; subtitle on license text caption (setup new version or update current one -LangString LicenseSubTitleUpdate ${LANG_GERMAN} " Update" -LangString LicenseSubTitleSetup ${LANG_GERMAN} " Setup" - -LangString MULTIUSER_TEXT_INSTALLMODE_TITLE ${LANG_GERMAN} "Installationsmodus" -LangString MULTIUSER_TEXT_INSTALLMODE_SUBTITLE ${LANG_GERMAN} "Für alle Benutzer (erfordert Administratorrechte) oder nur für den aktuellen Benutzer installieren?" -LangString MULTIUSER_INNERTEXT_INSTALLMODE_TOP ${LANG_GERMAN} "Wenn Sie dieses Installationsprogram mit Administratorrechten ausführen, können Sie auswählen, ob die Installation (beispielsweise) in c:\Programme oder unter AppData\Lokaler Ordner des aktuellen Benutzers erfolgen soll." -LangString MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS ${LANG_GERMAN} "Für alle Benutzer installieren" -LangString MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER ${LANG_GERMAN} "Nur für den aktuellen Benutzer installieren" - -; installation directory text -LangString DirectoryChooseTitle ${LANG_GERMAN} "Installations-Ordner" -LangString DirectoryChooseUpdate ${LANG_GERMAN} "Wählen Sie den Second Life Ordner für dieses Update:" -LangString DirectoryChooseSetup ${LANG_GERMAN} "Pfad in dem Second Life installiert werden soll:" - -LangString MUI_TEXT_DIRECTORY_TITLE ${LANG_GERMAN} "Installationsverzeichnis" -LangString MUI_TEXT_DIRECTORY_SUBTITLE ${LANG_GERMAN} "Wählen Sie das Verzeichnis aus, in dem Second Life installiert werden soll:" - -LangString MUI_TEXT_INSTALLING_TITLE ${LANG_GERMAN} "Second Life wird installiert..." -LangString MUI_TEXT_INSTALLING_SUBTITLE ${LANG_GERMAN} "Der Second Life Viewer wird im Verzeichnis $INSTDIR installiert" - -LangString MUI_TEXT_FINISH_TITLE ${LANG_GERMAN} "Second Life wird installiert" -LangString MUI_TEXT_FINISH_SUBTITLE ${LANG_GERMAN} "Der Second Life Viewer wurde im Verzeichnis $INSTDIR installiert." - -LangString MUI_TEXT_ABORT_TITLE ${LANG_GERMAN} "Installation abgebrochen" -LangString MUI_TEXT_ABORT_SUBTITLE ${LANG_GERMAN} "Der Second Life Viewer wird nicht im Verzeichnis $INSTDIR installiert." - -; CheckStartupParams message box -LangString CheckStartupParamsMB ${LANG_GERMAN} "Konnte Programm '$INSTNAME' nicht finden. Stilles Update fehlgeschlagen." - -; installation success dialog -LangString InstSuccesssQuestion ${LANG_GERMAN} "Second Life starten?" - -; remove old NSIS version -LangString RemoveOldNSISVersion ${LANG_GERMAN} "Überprüfe alte Version ..." - -; check windows version -LangString CheckWindowsVersionDP ${LANG_GERMAN} "Überprüfung der Windows Version ..." -LangString CheckWindowsVersionMB ${LANG_GERMAN} 'Second Life unterstützt nur Windows Vista.$\n$\nDer Versuch es auf Windows $R0 zu installieren, könnte zu unvorhersehbaren Abstürzen und Datenverlust führen.$\n$\nTrotzdem installieren?' -LangString CheckWindowsServPackMB ${LANG_GERMAN} "Wir empfehlen, das neueste Service Pack für Ihr Betriebssystem zu installieren, um Second Life auszuführen.$\nDies unterstützt die Leistung und Stabilität des Programms." -LangString UseLatestServPackDP ${LANG_GERMAN} "Bitte verwenden Sie Windows Update, um das neueste Service Pack zu installieren." - -; checkifadministrator function (install) -LangString CheckAdministratorInstDP ${LANG_GERMAN} "Überprüfung der Installations-Berechtigungen ..." -LangString CheckAdministratorInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Second Life installieren zu können.' - -; checkifadministrator function (uninstall) -LangString CheckAdministratorUnInstDP ${LANG_GERMAN} "Überprüfung der Entfernungs-Berechtigungen ..." -LangString CheckAdministratorUnInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Second Life entfernen zu können..' - -; checkifalreadycurrent -LangString CheckIfCurrentMB ${LANG_GERMAN} "Anscheinend ist Second Life ${VERSION_LONG} bereits installiert.$\n$\nWürden Sie es gerne erneut installieren?" - -; checkcpuflags -LangString MissingSSE2 ${LANG_GERMAN} "Dieses Gerät verfügt möglicherweise nicht über eine CPU mit SSE2-Unterstützung, die für Second Life ${VERSION_LONG} benötigt wird. Möchten Sie fortfahren?" - -; closesecondlife function (install) -LangString CloseSecondLifeInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..." -LangString CloseSecondLifeInstMB ${LANG_GERMAN} "Second Life kann nicht installiert oder ersetzt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um die Installation abzubrechen." -LangString CloseSecondLifeInstRM ${LANG_GERMAN} "Second Life failed to remove some files from a previous install." - -; closesecondlife function (uninstall) -LangString CloseSecondLifeUnInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Second Life ..." -LangString CloseSecondLifeUnInstMB ${LANG_GERMAN} "Second Life kann nicht entfernt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Second Life zu beenden.$\nKlicken Sie CANCEL, um abzubrechen." - -; CheckNetworkConnection -LangString CheckNetworkConnectionDP ${LANG_GERMAN} "Prüfe Netzwerkverbindung..." - -; error during installation -LangString ErrorSecondLifeInstallRetry ${LANG_GERMAN} "Second Life konnte nicht korrekt installiert werden, einige Dateien wurden eventuell nicht korrekt von der Installationroutine kopiert." -LangString ErrorSecondLifeInstallSupport ${LANG_GERMAN} "Bitte laden Sie den Viewer erneut von https://secondlife.com/support/downloads/ und versuchen Sie die Installation erneut. Sollte das Problem weiterhin bestehen, dann kontaktieren Sie unseren Support unter https://support.secondlife.com." - -; ask to remove user's data files -LangString RemoveDataFilesMB ${LANG_GERMAN} "Möchten Sie alle anderen zu Second Life gehörigen Dateien ebenfalls ENTFERNEN?$\n$\nWir empfehlen, die Einstellungen und Cache-Dateien zu behalten, wenn Sie andere Versionen von Second Life installiert haben oder eine Deinstallation durchführen, um Second Life auf eine neuere Version zu aktualisieren." - -; delete program files -LangString DeleteProgramFilesMB ${LANG_GERMAN} "Es existieren weiterhin Dateien in Ihrem SecondLife Programm Ordner.$\n$\nDies sind möglicherweise Dateien, die sie modifiziert oder bewegt haben:$\n$INSTDIR$\n$\nMöchten Sie diese ebenfalls löschen?" - -; uninstall text -LangString UninstallTextMsg ${LANG_GERMAN} "Dies wird Second Life ${VERSION_LONG} von Ihrem System entfernen." - -; ask to remove registry keys that still might be needed by other viewers that are installed -LangString DeleteRegistryKeysMB ${LANG_GERMAN} "Möchten Sie die Registrierungsschlüssel der Anwendung entfernen?$\n$\nWir empfehlen, die Registrierungsschlüssel zu behalten, wenn Sie andere Versionen von Second Life installiert haben." diff --git a/indra/newview/installers/windows/lang_en-us.nsi b/indra/newview/installers/windows/lang_en-us.nsi deleted file mode 100644 index 9d00f1b4c0c2389604174f9343cf20fccea9288f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12470 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 diff --git a/indra/newview/installers/windows/lang_es.nsi b/indra/newview/installers/windows/lang_es.nsi deleted file mode 100644 index 364cc9f67e2f9aa7b05498d848d38b56ab22e429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13790 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 diff --git a/indra/newview/installers/windows/lang_fr.nsi b/indra/newview/installers/windows/lang_fr.nsi deleted file mode 100644 index 2f34c0c87a1552dd0632baf63dd53cc9bf1edf7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14302 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 diff --git a/indra/newview/installers/windows/lang_it.nsi b/indra/newview/installers/windows/lang_it.nsi deleted file mode 100644 index 51214d3a9ce88d5a594a6ab02ea3b8f4b09af8e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13528 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 diff --git a/indra/newview/installers/windows/lang_ja.nsi b/indra/newview/installers/windows/lang_ja.nsi deleted file mode 100644 index 296703d1a3e94080fe18709d1e5ac3031887cde7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10698 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 diff --git a/indra/newview/installers/windows/lang_pl.nsi b/indra/newview/installers/windows/lang_pl.nsi deleted file mode 100644 index 299645bbb78010298d43366cfa5dd3299081a096..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13122 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 AW&i*H diff --git a/indra/newview/installers/windows/lang_pt-br.nsi b/indra/newview/installers/windows/lang_pt-br.nsi deleted file mode 100644 index 542c8654b5bffbe4d6f57a90c878c329ce7eb997..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13970 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 diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi deleted file mode 100644 index 4e53a4957d49d2cf9b11df0b1ac0849a3101dfaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13264 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 diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi deleted file mode 100644 index bae5029ad1ce56a2fd347c95de656848400c052e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13174 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 diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi deleted file mode 100644 index 7922d9df5228d652bf08955f00c0eb62b6794965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10144 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 U?+i_RFkd~!>x*zRhP6fh2g<+$NdN!< diff --git a/indra/newview/installers/windows/language_menu.nsi b/indra/newview/installers/windows/language_menu.nsi deleted file mode 100644 index 2f426a0f47c92aac0b8e17441243802da7ab79e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1464 zcma)6O>fgc6r6((fW&`TB}iOaBrXVgGf7hnrH%4&MsDf^D`^tN2?bT0EA=OE;8*b% z5E3`;h;-&{5~q!vpq1C_-M8~*<~@1-uMCF)Vhqv4jPD*2e82_gA-|t-&XD3U9zl_H zOn5S8oZb#yjJVoFaJ-ceH$ewe-X9Uitxz2<xi`f}?hT2hh);%hpNT&gn{34)GOU<) zmBVuphUb%7R-KI)p&Z)3V3ySGWn?trddxG&wUj$klgET;qJoG+2njxO-sAex(4;&j zzDG~jn01LO%{lIweYMd-4f}YG7dXbDDOoyt%G~FSl8fi$ETuy{HFhysj=3YZl}(Do za>}6_;&ei;5g)I3!jmO4uiMwr;S66GBiDUpx~#1@)LG@sD)9tYWET?gh#hcf?_<M$ zgRl2uOFUP{42Y=PrA2khg?Lp%7SknKnH`m9FQIC+$k1P)<!5)99Wi$U?+tI0SC!7p zOl4=qs|cyd{L;J5Dvy=M%=+sOogeIARU;>PR$1v=N2;+}>a<^+<(T&?kGQKaV!wo} zMO2_MqQ2O?7v|_c+^^%*@QU59n?|{x?qDaZ1{t>5Cv9qO@_Egj%~}Xk9XYdq%WvxT zJ?<DUKlEqW<?CB|;H%^_ZD#qI?Df9iY<ILpejz(d)rnZ8BCP$B>*T?_)Bo}9;e0z{ ngW8)MMKy9kB?vhVf|tRoU^|w)Y~WpCAGYw9e)ZWs$)Yy5pp)zP diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 47dad6cacf2..fb126caed38 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -471,6 +471,18 @@ def construct(self): else: self.path(src="fmod.dll", dst="fmod.dll") + # These need to be installed as a SxS assembly, currently a 'private' assembly. + # See http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx + self.path("concrt140.dll") + self.path("msvcp140.dll") + self.path("msvcp140_1.dll") + self.path("msvcp140_2.dll") + self.path("msvcp140_atomic_wait.dll") + self.path("msvcp140_codecvt_ids.dll") + self.path("vccorlib140.dll") + self.path("vcruntime140.dll") + self.path("vcruntime140_1.dll") + # SLVoice executable with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')): self.path("SLVoice.exe") @@ -614,14 +626,10 @@ def wpath(path): out_path = None for pkg_file in dest_files: rel_file = os.path.normpath(pkg_file.replace(self.get_dst_prefix()+os.path.sep,'')) - installed_dir = wpath(os.path.join('$INSTDIR', os.path.dirname(rel_file))) + installed_dir = wpath(os.path.join('{app}', os.path.dirname(rel_file))) pkg_file = wpath(os.path.normpath(pkg_file)) - if installed_dir != out_path: - if install: - out_path = installed_dir - result += 'SetOutPath ' + out_path + '\n' if install: - result += 'File ' + pkg_file + '\n' + result += 'Source: "' + pkg_file + '"; DestDir: "' + installed_dir + '"; Flags: ignoreversion \n' else: result += 'Delete ' + wpath(os.path.join('$INSTDIR', rel_file)) + '\n' @@ -653,20 +661,12 @@ def package_finish(self): 'final_exe' : self.final_exe(), 'flags':'', 'app_name':self.app_name(), - 'app_name_oneword':self.app_name_oneword() + 'app_name_oneword':self.app_name_oneword(), + 'src_dir':self.get_src_prefix() } installer_file = self.installer_base_name() + '_Setup.exe' - substitution_strings['installer_file'] = installer_file - - version_vars = """ - !define INSTEXE "SLVersionChecker.exe" - !define VERSION "%(version_short)s" - !define VERSION_LONG "%(version)s" - !define VERSION_DASHES "%(version_dashes)s" - !define VERSION_REGISTRY "%(version_registry)s" - !define VIEWER_EXE "%(final_exe)s" - """ % substitution_strings + substitution_strings['installer_file'] = self.installer_base_name() + '_Setup' if self.channel_type() == 'release': substitution_strings['caption'] = CHANNEL_VENDOR_BASE @@ -674,30 +674,21 @@ def package_finish(self): substitution_strings['caption'] = self.app_name() + ' ${VERSION}' inst_vars_template = """ - OutFile "%(installer_file)s" - !define INSTNAME "%(app_name_oneword)s" - !define SHORTCUT "%(app_name)s" - !define URLNAME "secondlife" - Caption "%(caption)s" +#define MyAppName "%(app_name)s" +#define MyAppNameShort "%(app_name_oneword)s" +#define MyAppVersion "%(version)s" +#define MyAppExeName "%(final_exe)s" +#define ViewerSrcDir "%(src_dir)s" +#define MyAppInstFile "%(installer_file)s" """ - if(self.address_size == 64): - engage_registry="SetRegView 64" - program_files="!define MULTIUSER_USE_PROGRAMFILES64" - else: - engage_registry="SetRegView 32" - program_files="" - - tempfile = "alchemy_setup_tmp.nsi" + tempfile = "alchemy_setup_tmp.iss" # the following replaces strings in the nsi template # it also does python-style % substitution - self.replace_in("installers/windows/installer_template.nsi", tempfile, { - "%%VERSION%%":version_vars, + self.replace_in("installers/windows/install_template.iss", tempfile, { "%%SOURCE%%":self.get_src_prefix(), "%%INST_VARS%%":inst_vars_template % substitution_strings, "%%INSTALL_FILES%%":self.nsi_file_commands(True), - "%%PROGRAMFILES%%":program_files, - "%%ENGAGEREGISTRY%%":engage_registry, "%%DELETE_FILES%%":self.nsi_file_commands(False)}) # If we're on a build machine, sign the code using our Authenticode certificate. JC @@ -705,33 +696,26 @@ def package_finish(self): # Unlike the viewer binary, the VMP filenames are invariant with respect to version, os, etc. for exe in ( self.final_exe(), - "SLVersionChecker.exe", "llplugin/dullahan_host.exe", ): self.sign(exe) - # Check two paths, one for Program Files, and one for Program Files (x86). - # Yay 64bit windows. - for ProgramFiles in 'ProgramFiles', 'ProgramFiles(x86)': - NSIS_path = os.path.expandvars(r'${%s}\NSIS\makensis.exe' % ProgramFiles) - if os.path.exists(NSIS_path): - break - installer_created=False - nsis_attempts=3 - nsis_retry_wait=15 - for attempt in range(nsis_attempts): + inno_path = os.path.join(self.args['build'], os.pardir, 'packages', 'innosetup', 'iscc.exe') + iscc_attempts=3 + iscc_retry_wait=15 + for attempt in range(iscc_attempts): try: - self.run_command([NSIS_path, '/V2', self.dst_path_of(tempfile)]) + self.run_command([inno_path, self.dst_path_of(tempfile)]) except ManifestError as err: - if attempt+1 < nsis_attempts: - print("nsis failed, waiting %d seconds before retrying" % nsis_retry_wait, file=sys.stderr) - time.sleep(nsis_retry_wait) - nsis_retry_wait*=2 + if attempt+1 < iscc_attempts: + print("iscc failed, waiting %d seconds before retrying" % iscc_retry_wait, file=sys.stderr) + time.sleep(iscc_retry_wait) + iscc_retry_wait*=2 else: - # NSIS worked! Done! + # ISCC worked! Done! break else: - print("Maximum nsis attempts exceeded; giving up", file=sys.stderr) + print("Maximum iscc attempts exceeded; giving up", file=sys.stderr) raise self.sign(installer_file) -- GitLab