Changes on top of my initial patch look good. Christophe On Tue, Jan 24, 2017 at 10:16:19AM +0200, Yedidyah Bar David wrote: > From: Christophe Fergeau <cfergeau@xxxxxxxxxx> > > This requires WinVer from nsis 3.01. > At the moment, the qxl-wddm-dod driver on the virtio-win ISO is not the > latest one from > https://www.spice-space.org/download/windows/qxl-wddm-dod/ > > Change-Id: I773e4b76bd896fcea074b8f32a1b0cff854841b5 > Signed-off-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> > --- > WinVer.nsh | 495 ------------------------------------------ > ovirt-guest-tools-iso.spec.in | 4 +- > win-guest-tools.nsis | 11 +- > 3 files changed, 5 insertions(+), 505 deletions(-) > delete mode 100755 WinVer.nsh > > diff --git a/WinVer.nsh b/WinVer.nsh > deleted file mode 100755 > index f7169f4..0000000 > --- a/WinVer.nsh > +++ /dev/null > @@ -1,495 +0,0 @@ > -; --------------------- > -; WinVer.nsh > -; --------------------- > -; > -; LogicLib extensions for handling Windows versions and service packs. > -; > -; IsNT checks if the installer is running on Windows NT family (NT4, 2000, XP, etc.) > -; > -; ${If} ${IsNT} > -; DetailPrint "Running on NT. Installing Unicode enabled application." > -; ${Else} > -; DetailPrint "Not running on NT. Installing ANSI application." > -; ${EndIf} > -; > -; IsServer checks if the installer is running on a server version of Windows (NT4, 2003, 2008, etc.) > -; > -; AtLeastWin<version> checks if the installer is running on Windows version at least as specified. > -; IsWin<version> checks if the installer is running on Windows version exactly as specified. > -; AtMostWin<version> checks if the installer is running on Windows version at most as specified. > -; > -; <version> can be replaced with the following values: > -; > -; 95 > -; 98 > -; ME > -; > -; NT4 > -; 2000 > -; XP > -; 2003 > -; Vista > -; 2008 > -; 7 > -; 2008R2 > -; > -; AtLeastServicePack checks if the installer is running on Windows service pack version at least as specified. > -; IsServicePack checks if the installer is running on Windows service pack version exactly as specified. > -; AtMostServicePack checks if the installer is running on Windows service version pack at most as specified. > -; > -; Usage examples: > -; > -; ${If} ${IsNT} > -; DetailPrint "Running on NT family." > -; DetailPrint "Surely not running on 95, 98 or ME." > -; ${AndIf} ${AtLeastWinNT4} > -; DetailPrint "Running on NT4 or better. Could even be 2003." > -; ${EndIf} > -; > -; ${If} ${AtLeastWinXP} > -; DetailPrint "Running on XP or better." > -; ${EndIf} > -; > -; ${If} ${IsWin2000} > -; DetailPrint "Running on 2000." > -; ${EndIf} > -; > -; ${If} ${IsWin2000} > -; ${AndIf} ${AtLeastServicePack} 3 > -; ${OrIf} ${AtLeastWinXP} > -; DetailPrint "Running Win2000 SP3 or above" > -; ${EndIf} > -; > -; ${If} ${AtMostWinXP} > -; DetailPrint "Running on XP or older. Surely not running on Vista. Maybe 98, or even 95." > -; ${EndIf} > -; > -; Warning: > -; > -; Windows 95 and NT both use the same version number. To avoid getting NT4 misidentified > -; as Windows 95 and vice-versa or 98 as a version higher than NT4, always use IsNT to > -; check if running on the NT family. > -; > -; ${If} ${AtLeastWin95} > -; ${And} ${AtMostWinME} > -; DetailPrint "Running 95, 98 or ME." > -; DetailPrint "Actually, maybe it's NT4?" > -; ${If} ${IsNT} > -; DetailPrint "Yes, it's NT4! oops..." > -; ${Else} > -; DetailPrint "Nope, not NT4. phew..." > -; ${EndIf} > -; ${EndIf} > -; > -; > -; Other useful extensions are: > -; > -; * IsWin2003R2 > -; * IsStarterEdition > -; * OSHasMediaCenter > -; * OSHasTabletSupport > -; > - > -!verbose push > -!verbose 3 > - > -!ifndef ___WINVER__NSH___ > -!define ___WINVER__NSH___ > - > -!include LogicLib.nsh > -!include Util.nsh > - > -# masks for our variables > - > -!define _WINVER_VERXBIT 0x00000001 > -!define _WINVER_MASKVMAJ 0x7F000000 > -!define _WINVER_MASKVMIN 0x00FF0000 > - > -!define _WINVER_NTBIT 0x80000000 > -!define _WINVER_NTMASK 0x7FFFFFFF > -!define _WINVER_NTSRVBIT 0x40000000 > -!define _WINVER_MASKVBLD 0x0000FFFF > -!define _WINVER_MASKSP 0x000F0000 > - > -# possible variable values for different versions > - > -!define WINVER_95_NT 0x04000000 ;4.00.0950 > -!define WINVER_95 0x04000000 ;4.00.0950 > -!define WINVER_98_NT 0x040a0000 ;4.10.1998 > -!define WINVER_98 0x040a0000 ;4.10.1998 > -;define WINVER_98SE 0x040a0000 ;4.10.2222 > -!define WINVER_ME_NT 0x045a0000 ;4.90.3000 > -!define WINVER_ME 0x045a0000 ;4.90.3000 > -;define WINVER_NT3d51 ;3.51.1057 > -!define WINVER_NT4_NT 0x84000000 ;4.00.1381 > -!define WINVER_NT4 0x04000000 ;4.00.1381 > -!define WINVER_2000_NT 0x85000000 ;5.00.2195 > -!define WINVER_2000 0x05000000 ;5.00.2195 > -!define WINVER_XP_NT 0x85010000 ;5.01.2600 > -!define WINVER_XP 0x05010000 ;5.01.2600 > -;define WINVER_XP64 ;5.02.3790 > -!define WINVER_2003_NT 0x85020000 ;5.02.3790 > -!define WINVER_2003 0x05020000 ;5.02.3790 > -!define WINVER_VISTA_NT 0x86000000 ;6.00.6000 > -!define WINVER_VISTA 0x06000000 ;6.00.6000 > -!define WINVER_2008_NT 0x86000001 ;6.00.6001 > -!define WINVER_2008 0x06000001 ;6.00.6001 > -!define WINVER_7_NT 0x86010000 ;6.01.???? > -!define WINVER_7 0x06010000 ;6.01.???? > -!define WINVER_2008R2_NT 0x86010001 ;6.01.???? > -!define WINVER_2008R2 0x06010001 ;6.01.???? > - > -# from nsis svn > -!define WINVER_8_NT 0x86020000 ;6.02.9200 > -!define WINVER_8 0x06020000 ;6.02.9200 > -!define WINVER_2012_NT 0x86020001 ;6.02.9200 > -!define WINVER_2012 0x06020001 ;6.02.9200 > -!define WINVER_8.1_NT 0x86030000 ;6.03.9600 > -!define WINVER_8.1 0x06030000 ;6.03.9600 > -!define WINVER_2012R2_NT 0x86030001 ;6.03.9600 > -!define WINVER_2012R2 0x06030001 ;6.03.9600 > - > - > - > -# use this to make all nt > 9x > - > -!ifdef WINVER_NT4_OVER_W95 > - !define __WINVERTMP ${WINVER_NT4} > - !undef WINVER_NT4 > - !define /math WINVER_NT4 ${__WINVERTMP} | ${_WINVER_VERXBIT} > - !undef __WINVERTMP > -!endif > - > -# some definitions from header files > - > -!define OSVERSIONINFOA_SIZE 148 > -!define OSVERSIONINFOEXA_SIZE 156 > -!define VER_PLATFORM_WIN32_NT 2 > -!define VER_NT_WORKSTATION 1 > - > -!define SM_TABLETPC 86 > -!define SM_MEDIACENTER 87 > -!define SM_STARTER 88 > -!define SM_SERVERR2 89 > - > -# variable declaration > - > -!macro __WinVer_DeclareVars > - > - !ifndef __WINVER_VARS_DECLARED > - > - !define __WINVER_VARS_DECLARED > - > - Var /GLOBAL __WINVERV > - Var /GLOBAL __WINVERSP > - > - !endif > - > -!macroend > - > -# lazy initialization macro > - > -!ifmacrondef __WinVer_Call_GetVersionEx > - > - !macro __WinVer_Call_GetVersionEx STRUCT_SIZE > - > - System::Call '*$0(i ${STRUCT_SIZE})' > - System::Call kernel32::GetVersionEx(ir0)i.r3 > - > - !macroend > - > -!endif > - > -!macro __WinVer_InitVars > - # variables > - !insertmacro __WinVer_DeclareVars > - > - # only calculate version once > - StrCmp $__WINVERV "" _winver_noveryet > - Return > - _winver_noveryet: > - > - # push used registers on the stack > - Push $0 > - Push $1 ;maj > - Push $2 ;min > - Push $3 ;bld > - Push $R0 ;temp > - > - # allocate memory > - System::Alloc ${OSVERSIONINFOEXA_SIZE} > - Pop $0 > - > - # use OSVERSIONINFOEX > - !insertmacro __WinVer_Call_GetVersionEx ${OSVERSIONINFOEXA_SIZE} > - > - IntCmp $3 0 "" _winver_ex _winver_ex > - # OSVERSIONINFOEX not allowed (Win9x or NT4 w/SP < 6), use OSVERSIONINFO > - !insertmacro __WinVer_Call_GetVersionEx ${OSVERSIONINFOA_SIZE} > - _winver_ex: > - > - # get results from struct > - System::Call '*$0(i.s,i.r1,i.r2,i.r3,i.s,&t128.s,&i2.s,&i2,&i2,&i1.s,&i1)' > - > - # free struct > - System::Free $0 > - > - # win9x has major and minor info in high word of dwBuildNumber - remove it > - IntOp $3 $3 & 0xFFFF > - > - # get dwOSVersionInfoSize > - Pop $R0 > - > - # get dwPlatformId > - Pop $0 > - > - # NT? > - IntCmp $0 ${VER_PLATFORM_WIN32_NT} "" _winver_notnt _winver_notnt > - IntOp $__WINVERSP $__WINVERSP | ${_WINVER_NTBIT} > - IntOp $__WINVERV $__WINVERV | ${_WINVER_NTBIT} > - _winver_notnt: > - > - # get service pack information > - IntCmp $0 ${VER_PLATFORM_WIN32_NT} _winver_nt "" _winver_nt # win9x > - > - # get szCSDVersion > - Pop $0 > - > - # copy second char > - StrCpy $0 $0 1 1 > - > - # discard invalid wServicePackMajor and wProductType > - Pop $R0 > - Pop $R0 > - > - # switch > - StrCmp $0 'A' "" +3 > - StrCpy $0 1 > - Goto _winver_sp_done > - StrCmp $0 'B' "" +3 > - StrCpy $0 2 > - Goto _winver_sp_done > - StrCmp $0 'C' "" +3 > - StrCpy $0 3 > - Goto _winver_sp_done > - StrCpy $0 0 > - Goto _winver_sp_done > - > - _winver_nt: # nt > - > - IntCmp $R0 ${OSVERSIONINFOEXA_SIZE} "" _winver_sp_noex _winver_sp_noex > - > - # discard szCSDVersion > - Pop $0 > - > - # get wProductType > - Exch > - Pop $0 > - > - # is server? > - IntCmp $0 ${VER_NT_WORKSTATION} _winver_noserver _winver_noserver "" > - IntOp $__WINVERSP $__WINVERSP | ${_WINVER_NTSRVBIT} > - _winver_noserver: > - > - # get wServicePackMajor > - Pop $0 > - > - # done with sp > - Goto _winver_sp_done > - > - _winver_sp_noex: # OSVERSIONINFO, not OSVERSIONINFOEX > - > - #### TODO > - ## For IsServer to support < NT4SP6, we need to check the registry > - ## here to see if we are a server and/or DC > - > - # get szCSDVersion > - Pop $0 > - > - # discard invalid wServicePackMajor and wProductType > - Pop $R0 > - Pop $R0 > - > - # get service pack number from text > - StrCpy $R0 $0 13 > - StrCmp $R0 "Service Pack " "" +3 > - StrCpy $0 $0 "" 13 # cut "Service Pack " > - Goto +2 > - StrCpy $0 0 # no service pack > - > -!ifdef WINVER_NT4_OVER_W95 > - IntOp $__WINVERV $__WINVERV | ${_WINVER_VERXBIT} > -!endif > - > - _winver_sp_done: > - > - # store service pack > - IntOp $0 $0 << 16 > - IntOp $__WINVERSP $__WINVERSP | $0 > - > - ### now for the version > - > - # is server? > - IntOp $0 $__WINVERSP & ${_WINVER_NTSRVBIT} > - > - # windows xp x64? > - IntCmp $0 0 "" _winver_not_xp_x64 _winver_not_xp_x64 # not server > - IntCmp $1 5 "" _winver_not_xp_x64 _winver_not_xp_x64 # maj 5 > - IntCmp $2 2 "" _winver_not_xp_x64 _winver_not_xp_x64 # min 2 > - # change XP x64 from 5.2 to 5.1 so it's still XP > - StrCpy $2 1 > - _winver_not_xp_x64: > - > - # server 2008? > - IntCmp $0 0 _winver_not_ntserver # server > - IntCmp 6 $1 "" "" _winver_not_ntserver # maj 6 > - # extra bit so Server 2008 comes after Vista SP1 that has the same minor version, same for Win7 vs 2008R2 > - IntOp $__WINVERV $__WINVERV | ${_WINVER_VERXBIT} > - _winver_not_ntserver: > - > - # pack version > - IntOp $1 $1 << 24 # VerMajor > - IntOp $__WINVERV $__WINVERV | $1 > - IntOp $0 $2 << 16 > - IntOp $__WINVERV $__WINVERV | $0 # VerMinor > - IntOp $__WINVERSP $__WINVERSP | $3 # VerBuild > - > - # restore registers > - Pop $R0 > - Pop $3 > - Pop $2 > - Pop $1 > - Pop $0 > - > -!macroend > - > -# version comparison LogicLib macros > - > -!macro _WinVerAtLeast _a _b _t _f > - !insertmacro _LOGICLIB_TEMP > - ${CallArtificialFunction} __WinVer_InitVars > - IntOp $_LOGICLIB_TEMP $__WINVERV & ${_WINVER_NTMASK} > - !insertmacro _>= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}` > -!macroend > -!macro _WinVerIs _a _b _t _f > - ${CallArtificialFunction} __WinVer_InitVars > - !insertmacro _= $__WINVERV `${_b}` `${_t}` `${_f}` > -!macroend > -!macro _WinVerAtMost _a _b _t _f > - !insertmacro _LOGICLIB_TEMP > - ${CallArtificialFunction} __WinVer_InitVars > - IntOp $_LOGICLIB_TEMP $__WINVERV & ${_WINVER_NTMASK} > - !insertmacro _<= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}` > -!macroend > - > -!macro __WinVer_DefineOSTest Test OS Suffix > - !define ${Test}Win${OS} `"" WinVer${Test} ${WINVER_${OS}${Suffix}}` > -!macroend > - > -!macro __WinVer_DefineOSTests Test Suffix > - !insertmacro __WinVer_DefineOSTest ${Test} 95 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} 98 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} ME '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} NT4 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} 2000 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} XP '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} 2003 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} VISTA '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} 2008 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} 7 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} 2008R2 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} 8 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} 2012 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} 8.1 '${Suffix}' > - !insertmacro __WinVer_DefineOSTest ${Test} 2012R2 '${Suffix}' > -!macroend > - > -!insertmacro __WinVer_DefineOSTests AtLeast "" > -!insertmacro __WinVer_DefineOSTests Is _NT > -!insertmacro __WinVer_DefineOSTests AtMost "" > - > -# version feature LogicLib macros > - > -!macro _IsNT _a _b _t _f > - !insertmacro _LOGICLIB_TEMP > - ${CallArtificialFunction} __WinVer_InitVars > - IntOp $_LOGICLIB_TEMP $__WINVERSP & ${_WINVER_NTBIT} > - !insertmacro _!= $_LOGICLIB_TEMP 0 `${_t}` `${_f}` > -!macroend > -!define IsNT `"" IsNT ""` > - > -!macro _IsServerOS _a _b _t _f > - !insertmacro _LOGICLIB_TEMP > - ${CallArtificialFunction} __WinVer_InitVars > - IntOp $_LOGICLIB_TEMP $__WINVERSP & ${_WINVER_NTSRVBIT} > - !insertmacro _!= $_LOGICLIB_TEMP 0 `${_t}` `${_f}` > -!macroend > -!define IsServerOS `"" IsServerOS ""` > - > -# service pack macros > - > -!macro _WinVer_GetServicePackLevel OUTVAR > - ${CallArtificialFunction} __WinVer_InitVars > - IntOp ${OUTVAR} $__WINVERSP & ${_WINVER_MASKSP} > - IntOp ${OUTVAR} ${OUTVAR} >> 16 > -!macroend > -!define WinVerGetServicePackLevel '!insertmacro _WinVer_GetServicePackLevel ' > - > -!macro _AtLeastServicePack _a _b _t _f > - !insertmacro _LOGICLIB_TEMP > - ${WinVerGetServicePackLevel} $_LOGICLIB_TEMP > - !insertmacro _>= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}` > -!macroend > -!define AtLeastServicePack `"" AtLeastServicePack` > - > -!macro _AtMostServicePack _a _b _t _f > - !insertmacro _LOGICLIB_TEMP > - ${WinVerGetServicePackLevel} $_LOGICLIB_TEMP > - !insertmacro _<= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}` > -!macroend > -!define AtMostServicePack `"" AtMostServicePack` > - > -!macro _IsServicePack _a _b _t _f > - !insertmacro _LOGICLIB_TEMP > - ${WinVerGetServicePackLevel} $_LOGICLIB_TEMP > - !insertmacro _= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}` > -!macroend > -!define IsServicePack `"" IsServicePack` > - > -# special feature LogicLib macros > - > -!macro _WinVer_SysMetricCheck m _b _t _f > - !insertmacro _LOGICLIB_TEMP > - System::Call user32::GetSystemMetrics(i${m})i.s > - pop $_LOGICLIB_TEMP > - !insertmacro _!= $_LOGICLIB_TEMP 0 `${_t}` `${_f}` > -!macroend > - > -!define IsWin2003R2 `${SM_SERVERR2} WinVer_SysMetricCheck ""` > -!define IsStarterEdition `${SM_STARTER} WinVer_SysMetricCheck ""` > -!define OSHasMediaCenter `${SM_MEDIACENTER} WinVer_SysMetricCheck ""` > -!define OSHasTabletSupport `${SM_TABLETPC} WinVer_SysMetricCheck ""` > - > -# version retrieval macros > - > -!macro __WinVer_GetVer var rshift mask outvar > - ${CallArtificialFunction} __WinVer_InitVars > - !if "${mask}" != "" > - IntOp ${outvar} ${var} & ${mask} > - !if "${rshift}" != "" > - IntOp ${outvar} ${outvar} >> ${rshift} > - !endif > - !else > - IntOp ${outvar} ${var} >> ${rshift} > - !endif > -!macroend > - > -!define WinVerGetMajor '!insertmacro __WinVer_GetVer $__WINVERV 24 ${_WINVER_MASKVMAJ}' > -!define WinVerGetMinor '!insertmacro __WinVer_GetVer $__WINVERV 16 ${_WINVER_MASKVMIN}' > -!define WinVerGetBuild '!insertmacro __WinVer_GetVer $__WINVERSP "" ${_WINVER_MASKVBLD}' > - > -# done > - > -!endif # !___WINVER__NSH___ > - > -!verbose pop > diff --git a/ovirt-guest-tools-iso.spec.in b/ovirt-guest-tools-iso.spec.in > index 0cd6e09..21e8bad 100644 > --- a/ovirt-guest-tools-iso.spec.in > +++ b/ovirt-guest-tools-iso.spec.in > @@ -16,7 +16,7 @@ Packager: Lev Veyde <lveyde@xxxxxxxxxx> > > BuildRequires: genisoimage > BuildRequires: rsync > -BuildRequires: mingw32-nsis >= 2.46 > +BuildRequires: mingw32-nsis >= 3.01 > > # Drop these when virtio-win includes the drivers not inside an iso. > # See comment in Makefile. > @@ -31,7 +31,7 @@ BuildRequires: mingw64-spice-vdagent >= 0.7.3 > # From http://resources.ovirt.org/pub > BuildRequires: ovirt-guest-agent-windows > BuildRequires: vcredist-x86 > -BuildRequires: nsis-simple-service-plugin > +BuildRequires: nsis-simple-service-plugin >= 1.30-2 > > # From https://fedoraproject.org/wiki/Windows_Virtio_Drivers#Yum.7CDnf_Repo > BuildRequires: virtio-win > diff --git a/win-guest-tools.nsis b/win-guest-tools.nsis > index 1951721..2092edc 100644 > --- a/win-guest-tools.nsis > +++ b/win-guest-tools.nsis > @@ -154,14 +154,7 @@ Section "install" > Push "PCI\VEN_1AF4&DEV_1001&SUBSYS_00021AF4&REV_00" > Call InstallDriver > > - ${If} ${IsWinVista} > - ${OrIf} ${IsWin2008} > - ${OrIf} ${IsWin7} > - ${OrIf} ${IsWin2008R2} > - ${OrIf} ${IsWin8} > - ${OrIf} ${IsWin2012} > - ${OrIf} ${IsWin8.1} > - ${OrIf} ${IsWin2012R2} > + ${If} ${AtLeastWinVista} > Push "vioscsi" > Push "vioscsi" > Push "PCI\VEN_1AF4&DEV_1004&SUBSYS_00081AF4&REV_00" > @@ -291,6 +284,8 @@ Function GetDriverSubdir > StrCpy $0 "$0\w8.1" > ${ElseIf} ${IsWin2012R2} > StrCpy $0 "$0\w2k12r2" > + ${ElseIf} ${IsWin10} > + StrCpy $0 "$0\w10" > ${Else} > MessageBox MB_ICONEXCLAMATION "Unsupported Windows version" > Abort ; causes installer to quit. > -- > 1.8.3.1 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel