aboutsummaryrefslogtreecommitdiffstats
path: root/packaging
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:38:22 +0000
commita9f5d8503f85704bd6facc2de3f51f5d83f4862c (patch)
treebf78a1ec85d82cf42a4e731550cdd0eccfa489ca /packaging
parent1b32d505a59475d51d9b2bed5f0869d2d154e8b6 (diff)
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>
Diffstat (limited to 'packaging')
-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 613318b37a..a0bc298b5c 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: