From 359083fb4b5816943b17fcde63e477a78a957c93 Mon Sep 17 00:00:00 2001 From: Tank_Master Date: Thu, 6 Dec 2012 18:46:30 -0800 Subject: Update windows installer to use newer OS detection code, and warn if the service pack is not up to date. Now, also block if trying to install on XP SP1 or lower. Also added missing SSE2 strings in several languages. --- .../installers/windows/installer_template.nsi | 157 +++++---------------- 1 file changed, 38 insertions(+), 119 deletions(-) (limited to 'indra/newview/installers/windows/installer_template.nsi') diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 8a6114f0d5..4815c1a538 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -125,11 +125,13 @@ Var DO_UNINSTALL_V2 ; If non-null, path to a previous Viewer 2 installation !include "FileFunc.nsh" ; For GetParameters, GetOptions !insertmacro GetParameters !insertmacro GetOptions +!include WinVer.nsh ; for OS and SP detection ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 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 StrCmp $SKIP_DIALOGS "true" label_launch @@ -161,26 +163,38 @@ Function dirPre FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Make sure we're not on Windows 98 / ME +; Make sure we are not on a verion of windows older than XP SP2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function CheckWindowsVersion - DetailPrint "Checking Windows version..." - Call GetWindowsVersion - Pop $R0 - ; Just get first two characters, ignore 4.0 part of "NT 4.0" - StrCpy $R0 $R0 2 - ; Blacklist certain OS versions - StrCmp $R0 "95" win_ver_bad - StrCmp $R0 "98" win_ver_bad - StrCmp $R0 "ME" win_ver_bad - StrCmp $R0 "NT" win_ver_bad - Return -win_ver_bad: - StrCmp $SKIP_DIALOGS "true" +2 ; If skip_dialogs is set just install - MessageBox MB_YESNO $(CheckWindowsVersionMB) IDNO win_ver_abort - Return -win_ver_abort: - Quit + ${IfNot} ${AtLeastWin2000} + ${OrIf} ${IsWinXP} + ${AndIfNot} ${AtLeastServicePack} 1 + ${OrIf} ${IsWin2003} + ${AndIfNot} ${AtLeastServicePack} 1 + MessageBox MB_OK $(CheckWindowsVersionMB) + Quit + ${EndIf} +FunctionEnd + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Recommend Upgrading Service Pack +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function CheckWindowsServPack + ${If} ${IsWinXP} + ${AndIfNot} ${IsServicePack} 3 + ${OrIf} ${IsWin2003} + ${AndIfNot} ${IsServicePack} 2 + ${OrIf} ${IsWinVista} + ${AndIfNot} ${IsServicePack} 2 + ${OrIf} ${IsWin2008} + ${AndIfNot} ${IsServicePack} 2 + ${OrIf} ${IsWin7} + ${AndIfNot} ${IsServicePack} 1 + ${OrIf} ${IsWin2008R2} + ${AndIfNot} ${IsServicePack} 1 + MessageBox MB_OK $(CheckWindowsServPackMB) + DetailPrint $(UseLatestServPackDP) + ${EndIf} FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -231,17 +245,13 @@ FunctionEnd ; Checks for CPU valid (must have SSE2 support) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function CheckCPUFlags - Call GetWindowsVersion - Pop $R0 - StrCmp $R0 "2000" OK_SSE ; sse check not available on win2k. - Push $1 System::Call 'kernel32::IsProcessorFeaturePresent(i) i(10) .r1' - IntCmp $1 1 OK_SSE - MessageBox MB_OKCANCEL $(MissingSSE2) /SD IDOK IDOK OK_SSE + IntCmp $1 1 OK_SSE2 + MessageBox MB_OKCANCEL $(MissingSSE2) /SD IDOK IDOK OK_SSE2 Quit - OK_SSE: + OK_SSE2: Pop $1 Return FunctionEnd @@ -758,103 +768,13 @@ Call un.ProgramFiles SectionEnd ; end of uninstall section - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; (From the NSIS documentation, JC) -; GetWindowsVersion -; -; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/ -; Updated by Joost Verburg -; -; Returns on top of stack -; -; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003) -; or -; '' (Unknown Windows Version) -; -; Usage: -; Call GetWindowsVersion -; Pop $R0 -; ; at this point $R0 is "NT 4.0" or whatnot -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function GetWindowsVersion - - Push $R0 - Push $R1 - - ReadRegStr $R0 HKLM \ - "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion - - IfErrors 0 lbl_winnt - - ; we are not NT - ReadRegStr $R0 HKLM \ - "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber - - StrCpy $R1 $R0 1 - StrCmp $R1 '4' 0 lbl_error - - StrCpy $R1 $R0 3 - - StrCmp $R1 '4.0' lbl_win32_95 - StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98 - - lbl_win32_95: - StrCpy $R0 '95' - Goto lbl_done - - lbl_win32_98: - StrCpy $R0 '98' - Goto lbl_done - - lbl_win32_ME: - StrCpy $R0 'ME' - Goto lbl_done - - lbl_winnt: - - StrCpy $R1 $R0 1 - - StrCmp $R1 '3' lbl_winnt_x - StrCmp $R1 '4' lbl_winnt_x - - StrCpy $R1 $R0 3 - - StrCmp $R1 '5.0' lbl_winnt_2000 - StrCmp $R1 '5.1' lbl_winnt_XP - StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error - - lbl_winnt_x: - StrCpy $R0 "NT $R0" 6 - Goto lbl_done - - lbl_winnt_2000: - Strcpy $R0 '2000' - Goto lbl_done - - lbl_winnt_XP: - Strcpy $R0 'XP' - Goto lbl_done - - lbl_winnt_2003: - Strcpy $R0 '2003' - Goto lbl_done - - lbl_error: - Strcpy $R0 '' - lbl_done: - - Pop $R1 - Exch $R0 - -FunctionEnd - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 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 if on Windows XP SP1 or older (do to XP x64 only having SP2 and no SP3) Push $0 ${GetParameters} $COMMANDLINE ; get our command line @@ -924,13 +844,12 @@ StrCpy $INSTPROG "${INSTNAME}" StrCpy $INSTEXE "${INSTEXE}" StrCpy $INSTSHORTCUT "${SHORTCUT}" -Call CheckWindowsVersion ; warn if on Windows 98/ME -Call CheckCPUFlags ; Make sure we have SSE2 support +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 CheckWillUninstallV2 ; See if a V2 install exists and will be removed. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; StrCmp $DO_UNINSTALL_V2 "" PRESERVE_DONE -- cgit v1.2.3 From 65a47d388c587199d28176fa8ca87260ede47c1d Mon Sep 17 00:00:00 2001 From: Tank_Master Date: Mon, 10 Mar 2014 12:13:48 -0700 Subject: Improve Windows 32bit installer logic for blocking old OSs, add XP x64 detection as well --- .../installers/windows/installer_template.nsi | 40 ++++++++++++++++------ 1 file changed, 29 insertions(+), 11 deletions(-) (limited to 'indra/newview/installers/windows/installer_template.nsi') diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index fefec31df3..77a23ac26c 100755 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -116,7 +116,8 @@ Var DO_UNINSTALL_V2 ; If non-null, path to a previous Viewer 2 installation !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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; After install completes, launch app @@ -154,16 +155,33 @@ Function dirPre FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Make sure we are not on a verion of windows older than XP SP2 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function CheckWindowsVersion - ${IfNot} ${AtLeastWin2000} - ${OrIf} ${IsWinXP} - ${AndIfNot} ${AtLeastServicePack} 1 - ${OrIf} ${IsWin2003} - ${AndIfNot} ${AtLeastServicePack} 1 - MessageBox MB_OK $(CheckWindowsVersionMB) +; 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 @@ -784,7 +802,7 @@ SectionEnd ; end of uninstall section ;; entry to the language ID selector below ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function .onInit -Call CheckWindowsVersion ; Don't install if on Windows XP SP1 or older (do to XP x64 only having SP2 and no SP3) +Call CheckWindowsVersion ; Don't install On unsupported systems Push $0 ${GetParameters} $COMMANDLINE ; get our command line -- cgit v1.2.3 From 20d486b52fb8ecefc03eb63a93e4447513d704d2 Mon Sep 17 00:00:00 2001 From: Tank_Master Date: Mon, 10 Mar 2014 12:31:48 -0700 Subject: correct line ending to previous comit --- .../installers/windows/installer_template.nsi | 44 +++++++++++----------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'indra/newview/installers/windows/installer_template.nsi') diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 77a23ac26c..85fa160bb9 100755 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -116,7 +116,7 @@ Var DO_UNINSTALL_V2 ; If non-null, path to a previous Viewer 2 installation !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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -155,33 +155,33 @@ Function dirPre FunctionEnd ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Make sure this computer meets the minimum system requirements. -; Currently: Windows 32bit XP SP3, 64bit XP SP2 and Server 2003 SP2 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function CheckWindowsVersion +; 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) + MessageBox MB_OK $(CheckWindowsVersionMB) Quit - ${EndIf} - - ${If} ${IsWinXP} - ${AndIfNot} ${RunningX64} + ${EndIf} + + ${If} ${IsWinXP} + ${AndIfNot} ${RunningX64} ${AndIfNot} ${IsServicePack} 3 - MessageBox MB_OK $(CheckWindowsVersionMB) + MessageBox MB_OK $(CheckWindowsVersionMB) Quit - ${EndIf} - - ${If} ${IsWinXP} - ${AndIf} ${RunningX64} + ${EndIf} + + ${If} ${IsWinXP} + ${AndIf} ${RunningX64} + ${AndIfNot} ${IsServicePack} 2 + MessageBox MB_OK $(CheckWindowsVersionMB) + Quit + ${EndIf} + + ${If} ${IsWin2003} ${AndIfNot} ${IsServicePack} 2 - MessageBox MB_OK $(CheckWindowsVersionMB) + MessageBox MB_OK $(CheckWindowsVersionMB) Quit - ${EndIf} - - ${If} ${IsWin2003} - ${AndIfNot} ${IsServicePack} 2 - MessageBox MB_OK $(CheckWindowsVersionMB) - Quit ${EndIf} FunctionEnd -- cgit v1.2.3 From a04ad99064006322af2bc78848554df4267b0468 Mon Sep 17 00:00:00 2001 From: Tank_Master Date: Thu, 13 Mar 2014 20:08:15 -0700 Subject: Open-154 Better service pack detection for Vista and Server 2008 --- .../installers/windows/installer_template.nsi | 28 +++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'indra/newview/installers/windows/installer_template.nsi') diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 85fa160bb9..8b3a9a8372 100755 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -189,20 +189,32 @@ FunctionEnd ;Recommend Upgrading Service Pack ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Function CheckWindowsServPack - ${If} ${IsWinXP} - ${AndIfNot} ${IsServicePack} 3 - ${OrIf} ${IsWin2003} - ${AndIfNot} ${IsServicePack} 2 - ${OrIf} ${IsWinVista} + ${If} ${IsWinVista} ${AndIfNot} ${IsServicePack} 2 - ${OrIf} ${IsWin2008} + MessageBox MB_OK $(CheckWindowsServPackMB) + DetailPrint $(UseLatestServPackDP) + Return + ${EndIf} + + ${If} ${IsWin2008} ${AndIfNot} ${IsServicePack} 2 - ${OrIf} ${IsWin7} + MessageBox MB_OK $(CheckWindowsServPackMB) + DetailPrint $(UseLatestServPackDP) + Return + ${EndIf} + + ${If} ${IsWin7} ${AndIfNot} ${IsServicePack} 1 - ${OrIf} ${IsWin2008R2} + MessageBox MB_OK $(CheckWindowsServPackMB) + DetailPrint $(UseLatestServPackDP) + Return + ${EndIf} + + ${If} ${IsWin2008R2} ${AndIfNot} ${IsServicePack} 1 MessageBox MB_OK $(CheckWindowsServPackMB) DetailPrint $(UseLatestServPackDP) + Return ${EndIf} FunctionEnd -- cgit v1.2.3