summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2015-11-19 14:34:39 -0800
committerPascal Quantin <pascal.quantin@gmail.com>2015-11-26 08:39:50 +0000
commita92137d46a00d9b3066ba8b59ce2eecd9bb77647 (patch)
tree6615da044ad8894185ddfbff2f351738dca756de
parenta9b4be98e90521e6c741eaf38716b3dc33192e11 (diff)
downloadwireshark-a92137d46a00d9b3066ba8b59ce2eecd9bb77647.tar.gz
NSIS: refuse to install on Windows XP or Server 2003
Warn the user when installing on Windows Server 2003 along with XP. CMake builds are not targeting them, and their support was officially dropped with Wireshark 1.12. Update our copy of GetWindowsVersion.nsh with "Alternate Script With Server Versions" from http://nsis.sourceforge.net/Get_Windows_version. Change-Id: I762859ea13e1ecd91757eeab360a39d1e6116144 Reviewed-on: https://code.wireshark.org/review/11972 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> (cherry picked from commit a9f5d8503f85704bd6facc2de3f51f5d83f4862c) Reviewed-on: https://code.wireshark.org/review/12173
-rw-r--r--packaging/nsis/GetWindowsVersion.nsh176
-rw-r--r--packaging/nsis/wireshark.nsi17
2 files changed, 146 insertions, 47 deletions
diff --git a/packaging/nsis/GetWindowsVersion.nsh b/packaging/nsis/GetWindowsVersion.nsh
index 49e9e95a63..a0106ed015 100644
--- a/packaging/nsis/GetWindowsVersion.nsh
+++ b/packaging/nsis/GetWindowsVersion.nsh
@@ -1,94 +1,190 @@
-; GetWindowsVersion
+; GetWindowsVersion 4.1.1 (2015-06-22) - alternate script with server versions
;
-; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
-; Updated by Joost Verburg
+; http://nsis.sourceforge.net/Get_Windows_version
;
-; Returns on top of stack
+; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
+; Update by Joost Verburg
+; Update (Macro, Define, Windows 7 detection) - John T. Haller of PortableApps.com - 2008-01-07
+; Update (Windows 8 detection) - Marek Mizanin (Zanir) - 2013-02-07
+; Update (Windows 8.1 detection) - John T. Haller of PortableApps.com - 2014-04-04
+; Update (Windows 2008, 2008R2, 2012 and 2012R2 detection) - Francisco SimoƵes Filho franksimoes@gmail.com - 2014-08-25
+; Update (Windows 10 TP detection) - John T. Haller of PortableApps.com - 2014-10-01
+; Update (Windows 10 TP4 and 2016 detection, and added include guards) - Kairu - 2015-06-22
;
-; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003, Vista, Windows 7)
-; or
-; '' (Unknown Windows Version)
+; Usage: ${GetWindowsVersion} $R0
;
-; Usage:
-; Call GetWindowsVersion
-; Pop $R0
-; ; at this point $R0 is "NT 4.0" or whatnot
-
+; $R0 contains: 95, 98, ME, NT x.x, 2000, XP, 2003, Vista, 2008, 7, 2008R2,
+; 8, 2012, 8.1, 2012R2, 10.0, 2016 or '' (for unknown)
+
+!ifndef __GET_WINDOWS_VERSION_NSH
+!define __GET_WINDOWS_VERSION_NSH
+
Function GetWindowsVersion
-
+
Push $R0
Push $R1
-
+ Push $R2
+
ClearErrors
-
+
+ ; check if Windows NT family
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:
-
+
+ ; check if Windows is Client or Server.
+ ReadRegStr $R2 HKLM \
+ "SOFTWARE\Microsoft\Windows NT\CurrentVersion" InstallationType
+
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
- StrCmp $R1 '6.0' lbl_winnt_vista lbl_error
-
+ StrCmp $R1 '6.0' lbl_winnt_vista_2008
+ StrCmp $R1 '6.1' lbl_winnt_7_2008R2
+ StrCmp $R1 '6.2' lbl_winnt_8_2012
+ StrCmp $R1 '6.3' lbl_winnt_81_2012R2
+ StrCmp $R1 '6.4' lbl_winnt_10_2016 ; the early Windows 10 tech previews used version 6.4
+
+ StrCpy $R1 $R0 4
+
+ StrCmp $R1 '10.0' lbl_winnt_10_2016
+ Goto 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_winnt_vista:
- Strcpy $R0 'Vista'
- Goto lbl_done
-
+
+ ;----------------- Family - Vista / 2008 -------------
+ lbl_winnt_vista_2008:
+ StrCmp $R2 'Client' go_vista
+ StrCmp $R2 'Server' go_2008
+
+ go_vista:
+ Strcpy $R0 'Vista'
+ Goto lbl_done
+
+ go_2008:
+ Strcpy $R0 '2008'
+ Goto lbl_done
+ ;-----------------------------------------------------
+
+ ;----------------- Family - 7 / 2008R2 -------------
+ lbl_winnt_7_2008R2:
+ StrCmp $R2 'Client' go_7
+ StrCmp $R2 'Server' go_2008R2
+
+ go_7:
+ Strcpy $R0 '7'
+ Goto lbl_done
+
+ go_2008R2:
+ Strcpy $R0 '2008R2'
+ Goto lbl_done
+ ;-----------------------------------------------------
+
+ ;----------------- Family - 8 / 2012 -------------
+ lbl_winnt_8_2012:
+ StrCmp $R2 'Client' go_8
+ StrCmp $R2 'Server' go_2012
+
+ go_8:
+ Strcpy $R0 '8'
+ Goto lbl_done
+
+ go_2012:
+ Strcpy $R0 '2012'
+ Goto lbl_done
+ ;-----------------------------------------------------
+
+ ;----------------- Family - 8.1 / 2012R2 -------------
+ lbl_winnt_81_2012R2:
+ StrCmp $R2 'Client' go_81
+ StrCmp $R2 'Server' go_2012R2
+
+ go_81:
+ Strcpy $R0 '8.1'
+ Goto lbl_done
+
+ go_2012R2:
+ Strcpy $R0 '2012R2'
+ Goto lbl_done
+ ;-----------------------------------------------------
+
+ ;----------------- Family - 10 / 2016 -------------
+ lbl_winnt_10_2016:
+ StrCmp $R2 'Client' go_10
+ StrCmp $R2 'Server' go_2016
+
+ go_10:
+ Strcpy $R0 '10.0'
+ Goto lbl_done
+
+ go_2016:
+ Strcpy $R0 '2016'
+ Goto lbl_done
+ ;-----------------------------------------------------
+
lbl_error:
Strcpy $R0 ''
lbl_done:
-
+
+ Pop $R2
Pop $R1
Exch $R0
-
+
FunctionEnd
+
+!macro GetWindowsVersion OUTPUT_VALUE
+ Call GetWindowsVersion
+ Pop `${OUTPUT_VALUE}`
+!macroend
+
+!define GetWindowsVersion '!insertmacro "GetWindowsVersion"'
+
+!endif
diff --git a/packaging/nsis/wireshark.nsi b/packaging/nsis/wireshark.nsi
index 2d37a77d3c..d48ce15c53 100644
--- a/packaging/nsis/wireshark.nsi
+++ b/packaging/nsis/wireshark.nsi
@@ -228,8 +228,10 @@ Function .onInit
!endif
; Get the Windows version
- Call GetWindowsVersion
- Pop $R0 ; Windows Version
+ ${GetWindowsVersion} $R0
+
+ ; Uncomment to test.
+ ; MessageBox MB_OK "You're running Windows $R0."
; Check if we're able to run with this version
StrCmp $R0 '95' lbl_winversion_unsupported
@@ -237,7 +239,8 @@ Function .onInit
StrCmp $R0 'ME' lbl_winversion_unsupported
StrCmp $R0 'NT 4.0' lbl_winversion_unsupported_nt4
StrCmp $R0 '2000' lbl_winversion_unsupported_2000
- StrCmp $R0 'XP' lbl_winversion_warn_xp
+ StrCmp $R0 'XP' lbl_winversion_unsupported_xp_2003
+ StrCmp $R0 '2003' lbl_winversion_unsupported_xp_2003
Goto lbl_winversion_supported
lbl_winversion_unsupported:
@@ -258,10 +261,10 @@ lbl_winversion_unsupported_2000:
/SD IDOK
Quit
-lbl_winversion_warn_xp:
- MessageBox MB_YESNO|MB_ICONINFORMATION \
- "This version of ${PROGRAM_NAME} may not work on Windows $R0.$\nWe recommend ${PROGRAM_NAME} 1.10 instead.$\nDo you want to continue?" \
- /SD IDYES IDYES lbl_winversion_supported
+lbl_winversion_unsupported_xp_2003:
+ MessageBox MB_OK \
+ "Windows $R0 is no longer supported.$\nPlease install ${PROGRAM_NAME} 1.12 or 1.10 instead." \
+ /SD IDOK
Quit
lbl_winversion_supported: