Windows: Update our minimum version

Update our minimum Windows version in various places, including the NSIS
and WiX installers.

Fixes #19569
This commit is contained in:
Gerald Combs 2024-01-04 19:08:07 -08:00 committed by Jaap Keuter
parent 1a81a7cacf
commit 7afb54035f
8 changed files with 52 additions and 267 deletions

View File

@ -361,15 +361,15 @@
* for our needs.
* This should match the following:
* - The <compatibility><application> section in resources\wireshark.exe.manifest.in
* - The GetWindowsVersion parts of packaging\nsis\wireshark.nsi
* - The WinVer parts of packaging\nsis\wireshark.nsi
* - The VersionNT parts of packaging\wix\Prerequisites.wxi
*/
# ifndef NTDDI_VERSION
# define NTDDI_VERSION NTDDI_WIN7
# define NTDDI_VERSION NTDDI_WIN10
# endif
# ifndef _WIN32_WINNT
# define _WIN32_WINNT _WIN32_WINNT_WIN7
# define _WIN32_WINNT _WIN32_WINNT_WIN10
# endif
#endif

View File

@ -22,7 +22,6 @@ set(WIRESHARK_NSIS_GENERATED_FILES ${WIRESHARK_NSIS_GENERATED_FILES} PARENT_SCOP
set(WIRESHARK_NSIS_FILES
${CMAKE_CURRENT_SOURCE_DIR}/wireshark.nsi
${CMAKE_CURRENT_SOURCE_DIR}/wireshark-common.nsh
${CMAKE_CURRENT_SOURCE_DIR}/GetWindowsVersion.nsh
${CMAKE_CURRENT_SOURCE_DIR}/servicelib.nsh
${CMAKE_CURRENT_SOURCE_DIR}/NpcapPage.ini
${CMAKE_CURRENT_SOURCE_DIR}/USBPcapPage.ini
@ -41,7 +40,6 @@ set(LOGRAY_NSIS_FILES
logray.nsi
uninstall-logray.nsi
logray-common.nsh
GetWindowsVersion.nsh
servicelib.nsh
NpcapPage.ini
USBPcapPage.ini

View File

@ -1,190 +0,0 @@
; GetWindowsVersion 4.1.1 (2015-06-22) - alternate script with server versions
;
; https://nsis.sourceforge.io/Get_Windows_version
;
; 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
;
; Usage: ${GetWindowsVersion} $R0
;
; $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_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
;----------------- 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

View File

@ -250,11 +250,11 @@ Var WIX_DISPLAYVERSION
Var WIX_UNINSTALLSTRING
; ============================================================================
; 64-bit support
; Platform and OS version checks
; ============================================================================
!include x64.nsh
!include "GetWindowsVersion.nsh"
!include x64.nsh
!include WinVer.nsh
!include WinMessages.nsh
Function .onInit
@ -266,9 +266,6 @@ Function .onInit
${EndIf}
!endif
; Get the Windows version
${GetWindowsVersion} $R0
; This should match the following:
; - The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in
; - The <compatibility><application> section in image\wireshark.exe.manifest.in
@ -277,23 +274,13 @@ Function .onInit
; 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
StrCmp $R0 '98' lbl_winversion_unsupported
StrCmp $R0 'ME' lbl_winversion_unsupported
StrCmp $R0 'NT 4.0' lbl_winversion_unsupported
StrCmp $R0 '2000' lbl_winversion_unsupported
StrCmp $R0 'XP' lbl_winversion_unsupported
StrCmp $R0 '2003' lbl_winversion_unsupported
StrCmp $R0 'Vista' lbl_winversion_unsupported
StrCmp $R0 '2008' lbl_winversion_unsupported
Goto lbl_winversion_supported
lbl_winversion_unsupported:
${If} ${AtMostWin8.1}
${OrIf} ${AtMostWin2012R2}
MessageBox MB_OK \
"Windows $R0 is not supported." \
/SD IDOK
"Windows 10, Server 2016, and later are required." /SD IDOK
Quit
${EndIf}
lbl_winversion_supported:
!insertmacro IsLograyRunning

View File

@ -282,11 +282,11 @@ Var WIX_DISPLAYVERSION
Var WIX_UNINSTALLSTRING
; ============================================================================
; 64-bit support
; Platform and OS version checks
; ============================================================================
!include x64.nsh
!include "GetWindowsVersion.nsh"
!include x64.nsh
!include WinVer.nsh
!include WinMessages.nsh
Function .onInit
@ -309,9 +309,6 @@ Function .onInit
${EndIf}
!endif
; Get the Windows version
${GetWindowsVersion} $R0
; This should match the following:
; - The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in
; - The <compatibility><application> section in image\wireshark.exe.manifest.in
@ -320,49 +317,51 @@ Function .onInit
; 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
StrCmp $R0 '98' lbl_winversion_unsupported
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_unsupported_xp_2003
StrCmp $R0 '2003' lbl_winversion_unsupported_xp_2003
StrCmp $R0 'Vista' lbl_winversion_unsupported_vista_2008
StrCmp $R0 '2008' lbl_winversion_unsupported_vista_2008
Goto lbl_winversion_supported
lbl_winversion_unsupported:
${If} ${AtMostWinME}
MessageBox MB_OK \
"Windows $R0 is no longer supported.$\nPlease install Ethereal 0.99.0 instead." \
/SD IDOK
"Windows 95, 98, and ME are no longer supported.$\nPlease install Ethereal 0.99.0 instead." \
/SD IDOK
Quit
${EndIf}
lbl_winversion_unsupported_nt4:
${If} ${IsWinNT4}
MessageBox MB_OK \
"Windows $R0 is no longer supported.$\nPlease install Wireshark 0.99.4 instead." \
/SD IDOK
"Windows NT 4.0 is no longer supported.$\nPlease install Wireshark 0.99.4 instead." \
/SD IDOK
Quit
${EndIf}
lbl_winversion_unsupported_2000:
${If} ${IsWin2000}
MessageBox MB_OK \
"Windows $R0 is no longer supported.$\nPlease install Wireshark 1.2 or 1.0 instead." \
/SD IDOK
"Windows 2000 is no longer supported.$\nPlease install Wireshark 1.2 or 1.0 instead." \
/SD IDOK
Quit
${EndIf}
lbl_winversion_unsupported_xp_2003:
${If} ${IsWinXP}
${OrIf} ${IsWin2003}
MessageBox MB_OK \
"Windows $R0 is no longer supported.$\nPlease install ${PROGRAM_NAME} 1.12 or 1.10 instead." \
/SD IDOK
"Windows XP and Server 2003 are no longer supported.$\nPlease install ${PROGRAM_NAME} 1.12 or 1.10 instead." \
/SD IDOK
Quit
${EndIf}
lbl_winversion_unsupported_vista_2008:
${If} ${IsWinVista}
${OrIf} ${IsWin2008}
MessageBox MB_OK \
"Windows $R0 is no longer supported.$\nPlease install ${PROGRAM_NAME} 2.2 instead." \
/SD IDOK
"Windows Vista and Server 2008 are no longer supported.$\nPlease install ${PROGRAM_NAME} 2.2 instead." \
/SD IDOK
Quit
${EndIf}
${If} ${AtMostWin8.1}
${OrIf} ${AtMostWin2012R2}
MessageBox MB_OK \
"Windows 7, 8, 8.1, Server 2008R2, and Server 2012 are no longer supported.$\nPlease install ${PROGRAM_NAME} 4.0 instead." \
/SD IDOK
Quit
${EndIf}
lbl_winversion_supported:
!insertmacro IsWiresharkRunning
; Default control values.

View File

@ -17,7 +17,7 @@
<!-- This should match the following:
- The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in
- The <compatibility><application> section in image\wireshark.exe.manifest.in
- The GetWindowsVersion parts of packaging\nsis\wireshark.nsi
- The WinVer parts of packaging\nsis\wireshark.nsi
-->
<Condition Message="Windows 2000 is no longer supported. Please install $(var.WiresharkName) 1.2 or 1.0 instead.">
<![CDATA[Installed OR (VersionNT < 500) OR (VersionNT > 500)]]>
@ -35,8 +35,12 @@
<![CDATA[Installed OR (VersionNT < 600) OR (VersionNT > 600)]]>
</Condition>
<Condition Message="$(var.WiresharkName)$(var.WiresharkVersion) is only supported on Windows 7, Windows Server 2008R2, or higher.">
<![CDATA[Installed OR (VersionNT >= 601)]]>
<Condition Message="Windows 7, 8, 8.1, Server 2008R2, and Server 2012 are no longer supported. Please install $(var.WiresharkName) 4.0 instead.">
<![CDATA[Installed OR (VersionNT < 601) OR (VersionNT > 602)]]>
</Condition>
<Condition Message="$(var.WiresharkName)$(var.WiresharkVersion) is only supported on Windows 10, Windows Server 2016, or higher.">
<![CDATA[Installed OR (VersionNT >= 603)]]>
</Condition>
<!--

View File

@ -33,15 +33,8 @@
<application>
<!-- This should match the following:
- The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in
- The GetWindowsVersion parts of packaging\nsis\wireshark.nsi
- The VersionNT parts of packaging\wix\Prerequisites.wxi
- The WinVer parts of packaging\nsis\logray.nsi
-->
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 10 & 11 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>

View File

@ -33,15 +33,9 @@
<application>
<!-- This should match the following:
- The NTDDI_VERSION and _WIN32_WINNT parts of cmakeconfig.h.in
- The GetWindowsVersion parts of packaging\nsis\wireshark.nsi
- The WinVer parts of packaging\nsis\wireshark.nsi
- The VersionNT parts of packaging\wix\Prerequisites.wxi
-->
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 10 & 11 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>