diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 429bc80c0f..776f93d1d6 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -2129,11 +2129,8 @@ if (WINDOWS) ) if( ND_BUILD64BIT_ARCH ) - if( PACKAGE AND NOT FS_UPGRADECODES ) - message( FATAL_ERROR "No Upgradecodes specified") - endif( PACKAGE AND NOT FS_UPGRADECODES ) set( VIEWERMANIFEST_FLAGS --m64 --copy_artwork ) - set( VIEWERMANIFEST_PACKAGE_FLAGS --m64 --upgradecodes="${FS_UPGRADECODES}") + set( VIEWERMANIFEST_PACKAGE_FLAGS --m64 ) else( ND_BUILD64BIT_ARCH ) set( VIEWERMANIFEST_FLAGS "" ) set( VIEWERMANIFEST_PACKAGE_FLAGS ) diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index fd582f5e3c..15eefca1b4 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -94,8 +94,10 @@ SetOverwrite on # Overwrite 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\The Phoenix Firestorm Project\${INSTNAME}" "" +;;InstallDir "$PROGRAMFILES\${INSTNAME}" +;;InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\The Phoenix Firestorm Project\${INSTNAME}" "" +InstallDir "$%%INSTALL_DIR%%\${INSTNAME}" +InstallDirRegKey HKEY_LOCAL_MACHINE "%%INSTALL_DIR_REGKEY%%" "" UninstallText $(UninstallTextMsg) DirText $(DirectoryChooseTitle) $(DirectoryChooseSetup) @@ -128,6 +130,7 @@ Var NO_STARTMENU # Optional start menu entry !insertmacro GetParameters !insertmacro GetOptions !include WinVer.nsh # For OS and SP detection +!include "x64.nsh" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Pre-directory page callback @@ -163,6 +166,13 @@ FunctionEnd Function .onInit Call CheckCPUFlags # Make sure we have SSE2 support Call CheckWindowsVersion # Don't install On unsupported systems + + ${If} ${RunningX64} + ${AndIf} ${FS64BIT} == "1" + ${DisableX64FSRedirection} + SetRegView 64 + ${EndIf} + Push $0 ${GetParameters} $COMMANDLINE # Get our command line @@ -230,6 +240,11 @@ FunctionEnd ;; Prep Uninstaller Section ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function un.onInit + ${If} ${RunningX64} + ${AndIf} ${FS64BIT} == "1" + ${DisableX64FSRedirection} + ${EndIf} + # 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 diff --git a/indra/newview/installers/windows_x64/CheckProcess.dll b/indra/newview/installers/windows_x64/CheckProcess.dll deleted file mode 100755 index 0dc1e181dc..0000000000 Binary files a/indra/newview/installers/windows_x64/CheckProcess.dll and /dev/null differ diff --git a/indra/newview/installers/windows_x64/ExtractCab.dll b/indra/newview/installers/windows_x64/ExtractCab.dll deleted file mode 100644 index 10a3e14a86..0000000000 Binary files a/indra/newview/installers/windows_x64/ExtractCab.dll and /dev/null differ diff --git a/indra/newview/installers/windows_x64/build.bat b/indra/newview/installers/windows_x64/build.bat deleted file mode 100644 index 71e94ec409..0000000000 --- a/indra/newview/installers/windows_x64/build.bat +++ /dev/null @@ -1,68 +0,0 @@ -rem @echo off -setlocal - -del /F /Q build_MSI\* -rmdir build_MSI -md build_MSI -cd build_MSI - -set VIEWER_BUILDDIR=%1 -set PROGRAM_NAME=Firestorm_x64 -set CHANNEL_NAME=%2 -set SETTINGS_FILE=%4 -set PROGRAM_FILE=Firestorm-bin.exe -set PROGRAM_VERSION=%2 -set PLUGIN_SOURCEDIR=%VIEWER_BUILDDIR% -set OUTPUT_FILE=%5 - -set MAJOR=%6 -set MINOR=%7 -set HGCHANGE=%9 - -set PATH=%PATH%;%1\..\..\packages\bin\wix - -set WIX_SOURCE_DIR=%~dp0 - -shift -shift -shift -shift -shift -shift -shift -shift -shift - -set UPGRADECODE=%1 -set UPGRADECODE2=%2 -set CHANSUFFIX=%3 - - -heat dir %VIEWER_BUILDDIR%\character -gg -cg fs_character -var var.BUILDDIR -dr INSTALLDIR -out character.wxs -heat dir %VIEWER_BUILDDIR%\fonts -gg -cg fs_fonts -var var.BUILDDIR -dr INSTALLDIR -out fonts.wxs -heat dir %VIEWER_BUILDDIR%\fs_resources -gg -cg fs_fsres -var var.BUILDDIR -dr INSTALLDIR -out fs_resources.wxs - -python %WIX_SOURCE_DIR%\compress_assets.py %VIEWER_BUILDDIR%\skins %VIEWER_BUILDDIR%\skins -python %WIX_SOURCE_DIR%\compress_assets.py %VIEWER_BUILDDIR%\app_settings %VIEWER_BUILDDIR%\app_settings - -candle -dBUILDDIR=%VIEWER_BUILDDIR%\character character.wxs -candle -dBUILDDIR=%VIEWER_BUILDDIR%\fonts fonts.wxs -candle -dBUILDDIR=%VIEWER_BUILDDIR%\fs_resources fs_resources.wxs - -candle -dPLUGIN_SOURCEDIR=%PLUGIN_SOURCEDIR% %WIX_SOURCE_DIR%\llplugin.wxs -candle -dPROGRAM_FILE=%PROGRAM_FILE% -dMAJOR=%MAJOR% -dMINOR=%MINOR% -dHGCHANGE=%HGCHANGE% -dBUILDDIR=%VIEWER_BUILDDIR%\ -dWIX_SOURCEDIR=%WIX_SOURCE_DIR% -dUPGRADECODE=%UPGRADECODE% -dCHANNEL_SUFFIX=%CHANSUFFIX% %WIX_SOURCE_DIR%\firestorm.wxs -candle -dPROGRAM_FILE=%PROGRAM_FILE% -dPROGRAM_VERSION=%PROGRAM_VERSION% -dCHANNEL_NAME=%CHANNEL_NAME% -dSETTINGS_FILE=%SETTINGS_FILE% -dPROGRAM_NAME=%PROGRAM_NAME% -dBUILDDIR=%VIEWER_BUILDDIR%\ -dCHANNEL_SUFFIX=%CHANSUFFIX% %WIX_SOURCE_DIR%\registry.wxs - -light -sval -ext WixUIExtension -cultures:en-us -out %VIEWER_BUILDDIR%\%OUTPUT_FILE%.msi firestorm.wixobj character.wixobj fonts.wixobj fs_resources.wixobj llplugin.wixobj registry.wixobj - -signtool.exe sign /n Phoenix /d Firestorm /du http://www.phoenixviewer.com /t http://timestamp.verisign.com/scripts/timstamp.dll %VIEWER_BUILDDIR%\%OUTPUT_FILE%.msi - -candle -dMAJOR=%MAJOR% -dMINOR=%MINOR% -dHGCHANGE=%HGCHANGE% -dWIX_SOURCEDIR=%WIX_SOURCE_DIR% -dFS_MSI_FILE=%VIEWER_BUILDDIR%\%OUTPUT_FILE%.msi -dUPGRADECODE=%UPGRADECODE2% -dCHANNEL_SUFFIX=%CHANSUFFIX% -ext WixBalExtension %WIX_SOURCE_DIR%\installer.wxs -light -sval -ext WixBalExtension -out %VIEWER_BUILDDIR%\%OUTPUT_FILE%.exe installer.wixobj - -insignia -ib %VIEWER_BUILDDIR%\%OUTPUT_FILE%.exe -o engine.exe -signtool.exe sign /n Phoenix /d Firestorm /du http://www.phoenixviewer.com /t http://timestamp.verisign.com/scripts/timstamp.dll engine.exe -insignia -ab engine.exe %VIEWER_BUILDDIR%\%OUTPUT_FILE%.exe -o %VIEWER_BUILDDIR%\%OUTPUT_FILE%.exe - -signtool.exe sign /n Phoenix /d Firestorm /du http://www.phoenixviewer.com /t http://timestamp.verisign.com/scripts/timstamp.dll %VIEWER_BUILDDIR%\%OUTPUT_FILE%.exe -echo "Done" \ No newline at end of file diff --git a/indra/newview/installers/windows_x64/compress_assets.py b/indra/newview/installers/windows_x64/compress_assets.py deleted file mode 100644 index 221b421529..0000000000 --- a/indra/newview/installers/windows_x64/compress_assets.py +++ /dev/null @@ -1,89 +0,0 @@ -from os import walk -from os.path import join, dirname -import sys - -import md5 - -from locale import getdefaultlocale - -def asUTF8( aString ): - sLocale = "iso-8859-15" - if getdefaultlocale()[1] != None: - sLocale = getdefaultlocale()[1] - - return aString.decode( sLocale ).encode( "UTF-8" ) - -from msilib import FCICreate -totalFiles = 0 - -hHashes = {} - -cabNames = [] -linkNames = [] - -searchPath = sys.argv[1].replace( "/", "\\" ) - -if searchPath[ len( searchPath ) -1 ] != "\\": - searchPath += "\\" - -for root, dirs, files in walk( sys.argv[1] ): - totalFiles += len( files ) - for curFile in files: - fullPath = join( root, curFile ) - strippedPath = fullPath[ len( searchPath ): ] - data = open( fullPath, "rb" ).read() - md5Hash = md5.new(data).hexdigest() - writeFile = True - if hHashes.has_key( md5Hash ): - hHashes[ md5Hash ][0] += 1 - writeFile = False - else: - hHashes[ md5Hash ] = [1,len(data), strippedPath ] - - if writeFile: - cabNames.append( ( fullPath, - str( len( cabNames )+1 ) - ) ) - else: - linkNames.append( (hHashes[ md5Hash ][2], strippedPath) ) - -FCICreate( sys.argv[2] + ".cab", cabNames ) -fDir = open( sys.argv[2] + ".cabdir", "wt" ) - -dirNames = [] -for cabEntry in cabNames: - dirPath = cabEntry[0] - dirPath = dirname( dirPath ) - dirPath = dirPath[ len(searchPath): ] - subDirs = dirPath.split( "\\" ) - if 0 == len( subDirs[ -1 ] ): - subDirs = subDirs[ :-1] - - curDir = "" - for subDir in subDirs: - curDir = join( curDir, subDir ); - dirNames.append( "d:" + curDir ) - -for linkName in linkNames: - subDirs = dirname( linkName[1] ).split( "\\" ) - if 0 == len( subDirs[ -1 ] ): - subDirsTree = subDirsTree[ :-1] - - curDir = "" - for subDir in subDirs: - curDir = join( curDir, subDir ); - dirNames.append( "d:" + curDir ) - - -dirNames = list( set( dirNames ) ) -dirNames.sort() -for dirName in dirNames: - fDir.write( asUTF8( dirName ) + "\n" ) - -for cabEntry in cabNames: - dirPath = cabEntry[0] - dirPath = dirPath[ len(searchPath): ] - fDir.write( "f:" + asUTF8( cabEntry[1] ) + ":" + asUTF8( dirPath ) + "\n" ) - -for linkName in linkNames: - fDir.write( "l:" + asUTF8( linkName[0] ) + ":" + asUTF8( linkName[1] ) + "\n" ) diff --git a/indra/newview/installers/windows_x64/firestorm.wxs b/indra/newview/installers/windows_x64/firestorm.wxs deleted file mode 100644 index b716ab2f92..0000000000 --- a/indra/newview/installers/windows_x64/firestorm.wxs +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - = 601) OR (VersionNT64 = 600 AND ServicePackLevel = 2)]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Not Installed - Not Installed - REMOVE - REMOVE - - Not Installed - Not Installed - REMOVE - REMOVE - - - - - - - diff --git a/indra/newview/installers/windows_x64/installer.wxs b/indra/newview/installers/windows_x64/installer.wxs deleted file mode 100644 index 394c167e8b..0000000000 --- a/indra/newview/installers/windows_x64/installer.wxs +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/indra/newview/installers/windows_x64/llplugin.wxs b/indra/newview/installers/windows_x64/llplugin.wxs deleted file mode 100644 index eb90517d1e..0000000000 --- a/indra/newview/installers/windows_x64/llplugin.wxs +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/indra/newview/installers/windows_x64/msvcp100.dll b/indra/newview/installers/windows_x64/msvcp100.dll deleted file mode 100755 index 26ac137ded..0000000000 Binary files a/indra/newview/installers/windows_x64/msvcp100.dll and /dev/null differ diff --git a/indra/newview/installers/windows_x64/msvcp120.dll b/indra/newview/installers/windows_x64/msvcp120.dll new file mode 100644 index 0000000000..4ea1efa734 Binary files /dev/null and b/indra/newview/installers/windows_x64/msvcp120.dll differ diff --git a/indra/newview/installers/windows_x64/msvcr100.dll b/indra/newview/installers/windows_x64/msvcr100.dll deleted file mode 100755 index 329b111495..0000000000 Binary files a/indra/newview/installers/windows_x64/msvcr100.dll and /dev/null differ diff --git a/indra/newview/installers/windows_x64/msvcr120.dll b/indra/newview/installers/windows_x64/msvcr120.dll new file mode 100644 index 0000000000..d711c92232 Binary files /dev/null and b/indra/newview/installers/windows_x64/msvcr120.dll differ diff --git a/indra/newview/installers/windows_x64/registry.wxs b/indra/newview/installers/windows_x64/registry.wxs deleted file mode 100644 index 05d55174a7..0000000000 --- a/indra/newview/installers/windows_x64/registry.wxs +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/indra/newview/installers/windows_x64/vcredist2010_x64.exe b/indra/newview/installers/windows_x64/vcredist2010_x64.exe deleted file mode 100644 index 6ae64fb4fe..0000000000 Binary files a/indra/newview/installers/windows_x64/vcredist2010_x64.exe and /dev/null differ diff --git a/indra/newview/installers/windows_x64/vcredist2010_x86.exe b/indra/newview/installers/windows_x64/vcredist2010_x86.exe deleted file mode 100644 index 57e15c0bc7..0000000000 Binary files a/indra/newview/installers/windows_x64/vcredist2010_x86.exe and /dev/null differ diff --git a/indra/newview/installers/windows_x64/vcredist2013_x64.exe b/indra/newview/installers/windows_x64/vcredist2013_x64.exe deleted file mode 100755 index 5473640945..0000000000 Binary files a/indra/newview/installers/windows_x64/vcredist2013_x64.exe and /dev/null differ diff --git a/indra/newview/installers/windows_x64/vcredist2013_x86.exe b/indra/newview/installers/windows_x64/vcredist2013_x86.exe deleted file mode 100755 index b79557817f..0000000000 Binary files a/indra/newview/installers/windows_x64/vcredist2013_x86.exe and /dev/null differ diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index a0b6b0abeb..dbbaa2a4cb 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -666,6 +666,17 @@ class Windows_i686_Manifest(ViewerManifest): self.path(src='../win_crash_logger/%s/windows-crash-logger.exe' % self.args['configuration'], dst="win_crash_logger.exe") + + if self.fs_is_64bit_build(): + if self.prefix(src=os.path.join(os.pardir, '..', 'indra', 'newview', 'installers', 'windows_x64'), dst="llplugin"): + self.path("msvcp120.dll") + self.path("msvcr120.dll") + self.end_prefix() + if self.prefix(src=os.path.join(os.pardir, '..', 'indra', 'newview', 'installers', 'windows_x64'), dst=""): + self.path("msvcp120.dll") + self.path("msvcr120.dll") + self.end_prefix() + if not self.is_packaging_viewer(): self.package_file = "copied_deps" @@ -735,7 +746,9 @@ class Windows_i686_Manifest(ViewerManifest): # substitution_strings['installer_file'] = installer_file - + substitution_strings['fs64bit'] = ( 1 if self.fs_is_64bit_build() else 0 ) + + version_vars = """ !define INSTEXE "%(final_exe)s" !define VERSION "%(version_short)s" @@ -753,35 +766,44 @@ class Windows_i686_Manifest(ViewerManifest): !define INSTNAME "%(app_name_oneword)s" !define SHORTCUT "%(app_name)s" !define URLNAME "secondlife" + !define FS64BIT "%(fs64bit)d" Caption "%(caption)s" """ tempfile = "secondlife_setup_tmp.nsi" + + install_dir = "PROGRAMFILES" + install_dir_regkey = "SOFTWARE\\The Phoenix Firestorm Project\\${INSTNAME}" "" + + if self.fs_is_64bit_build(): + install_dir += "64" + install_dir_regkey = "WOW3264Node\\SOFTWARE\\The Phoenix Firestorm Project\\${INSTNAME}" "" self.fs_sign_win_binaries() # Sign files, step one. Sign compiled binaries - if not self.fs_is_64bit_build(): - # the following replaces strings in the nsi template - # it also does python-style % substitution - self.replace_in("installers/windows/installer_template.nsi", tempfile, { + # 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, "%%SOURCE%%":self.get_src_prefix(), "%%INST_VARS%%":inst_vars_template % substitution_strings, "%%INSTALL_FILES%%":self.nsi_file_commands(True), + "%%INSTALL_DIR%%": install_dir, + "%%INSTALL_DIR_REGKEY%%": install_dir_regkey, "%%DELETE_FILES%%":self.nsi_file_commands(False)}) - # We use the Unicode version of NSIS, available from - # http://www.scratchpaper.com/ - # Check two paths, one for Program Files, and one for Program Files (x86). - # Yay 64bit windows. - NSIS_path = os.path.expandvars('${ProgramFiles}\\NSIS\\Unicode\\makensis.exe') - if not os.path.exists(NSIS_path): - NSIS_path = os.path.expandvars('${ProgramFiles(x86)}\\NSIS\\Unicode\\makensis.exe') + # We use the Unicode version of NSIS, available from + # http://www.scratchpaper.com/ + # Check two paths, one for Program Files, and one for Program Files (x86). + # Yay 64bit windows. + NSIS_path = os.path.expandvars('${ProgramFiles}\\NSIS\\Unicode\\makensis.exe') + if not os.path.exists(NSIS_path): + NSIS_path = os.path.expandvars('${ProgramFiles(x86)}\\NSIS\\Unicode\\makensis.exe') - installer_created=False - nsis_attempts=3 - nsis_retry_wait=15 - while (not installer_created) and (nsis_attempts > 0): + installer_created=False + nsis_attempts=3 + nsis_retry_wait=15 + while (not installer_created) and (nsis_attempts > 0): try: nsis_attempts-=1; self.run_command('"' + NSIS_path + '" /V2 ' + self.dst_path_of(tempfile)) @@ -794,21 +816,8 @@ class Windows_i686_Manifest(ViewerManifest): else: print >> sys.stderr, "Maximum nsis attempts exceeded; giving up" raise - # self.remove(self.dst_path_of(tempfile)) - else: - installer_file = "Phoenix-%(app_name)s-%(version_dashes)s_Setup.msi" % substitution_strings - createMSI = "installers/windows_x64/build.bat" - createMSI = self.dst_path_of( "../../../indra/newview/" + createMSI) - settingsFile = "settings_%s_v4.xml" % self.app_name() + # self.remove(self.dst_path_of(tempfile)) - substitution_strings['installer_file'] = installer_file - - channelSuffix = self.channel().replace( CHANNEL_VENDOR_BASE, "" ).strip() - - self.run_command('"' + createMSI + '" ' + self.dst_path_of( "" ) + - " " + self.channel() + " " + substitution_strings[ 'version' ] + - " " + settingsFile + " " + installer_file[:-4] + " " + " ".join( substitution_strings[ 'version' ].split(".") ) + - " " + self.args['upgradecodes'].split(",")[0] + " " + self.args['upgradecodes'].split(",")[1] + " " + channelSuffix ) self.fs_sign_win_installer( substitution_strings ) # Sign files, step two. Sign installer. self.fs_save_windows_symbols( substitution_strings )