fixed bug #2053642 - WinVer 95/NT4 ambiguity

also, the last huge commit was based on a patch by Anders

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@5792 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2008-11-28 20:01:18 +00:00
parent 038830677d
commit b77e8674a4

View file

@ -104,23 +104,33 @@
!define _WINVER_MASKVMIN 0x00FF0000 !define _WINVER_MASKVMIN 0x00FF0000
!define _WINVER_NTBIT 0x80000000 !define _WINVER_NTBIT 0x80000000
!define _WINVER_NTMASK 0x7FFFFFFF
!define _WINVER_NTSRVBIT 0x40000000 !define _WINVER_NTSRVBIT 0x40000000
!define _WINVER_MASKVBLD 0x0000FFFF !define _WINVER_MASKVBLD 0x0000FFFF
!define _WINVER_MASKSP 0x000F0000 !define _WINVER_MASKSP 0x000F0000
# possible variable values for different versions # possible variable values for different versions
!define WINVER_95_NT 0x04000000 ;4.00.0950
!define WINVER_95 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_98 0x040a0000 ;4.10.1998
;define WINVER_98SE 0x040a0000 ;4.10.2222 ;define WINVER_98SE 0x040a0000 ;4.10.2222
!define WINVER_ME_NT 0x045a0000 ;4.90.3000
!define WINVER_ME 0x045a0000 ;4.90.3000 !define WINVER_ME 0x045a0000 ;4.90.3000
;define WINVER_NT3d51 ;3.51.1057 ;define WINVER_NT3d51 ;3.51.1057
!define WINVER_NT4_NT 0x84000000 ;4.00.1381
!define WINVER_NT4 0x04000000 ;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_2000 0x05000000 ;5.00.2195
!define WINVER_XP_NT 0x85010000 ;5.01.2600
!define WINVER_XP 0x05010000 ;5.01.2600 !define WINVER_XP 0x05010000 ;5.01.2600
;define WINVER_XP64 ;5.02.3790 ;define WINVER_XP64 ;5.02.3790
!define WINVER_2003_NT 0x85020000 ;5.02.3790
!define WINVER_2003 0x05020000 ;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_VISTA 0x06000000 ;6.00.6000
!define WINVER_2008_NT 0x86000001 ;6.00.6001
!define WINVER_2008 0x06000001 ;6.00.6001 !define WINVER_2008 0x06000001 ;6.00.6001
# use this to make all nt > 9x # use this to make all nt > 9x
@ -218,6 +228,7 @@
# NT? # NT?
IntCmp $0 ${VER_PLATFORM_WIN32_NT} "" _winver_notnt _winver_notnt IntCmp $0 ${VER_PLATFORM_WIN32_NT} "" _winver_notnt _winver_notnt
IntOp $__WINVERSP $__WINVERSP | ${_WINVER_NTBIT} IntOp $__WINVERSP $__WINVERSP | ${_WINVER_NTBIT}
IntOp $__WINVERV $__WINVERV | ${_WINVER_NTBIT}
_winver_notnt: _winver_notnt:
# get service pack information # get service pack information
@ -338,37 +349,41 @@
# version comparison LogicLib macros # version comparison LogicLib macros
!macro _WinVerAtLeast _a _b _t _f !macro _WinVerAtLeast _a _b _t _f
!insertmacro _LOGICLIB_TEMP
${CallArtificialFunction} __WinVer_InitVars ${CallArtificialFunction} __WinVer_InitVars
!insertmacro _>= $__WINVERV `${_b}` `${_t}` `${_f}` IntOp $_LOGICLIB_TEMP $__WINVERV & ${_WINVER_NTMASK}
!insertmacro _>= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}`
!macroend !macroend
!macro _WinVerIs _a _b _t _f !macro _WinVerIs _a _b _t _f
${CallArtificialFunction} __WinVer_InitVars ${CallArtificialFunction} __WinVer_InitVars
!insertmacro _= $__WINVERV `${_b}` `${_t}` `${_f}` !insertmacro _= $__WINVERV `${_b}` `${_t}` `${_f}`
!macroend !macroend
!macro _WinVerAtMost _a _b _t _f !macro _WinVerAtMost _a _b _t _f
!insertmacro _LOGICLIB_TEMP
${CallArtificialFunction} __WinVer_InitVars ${CallArtificialFunction} __WinVer_InitVars
!insertmacro _<= $__WINVERV `${_b}` `${_t}` `${_f}` IntOp $_LOGICLIB_TEMP $__WINVERV & ${_WINVER_NTMASK}
!insertmacro _<= $_LOGICLIB_TEMP `${_b}` `${_t}` `${_f}`
!macroend !macroend
!macro __WinVer_DefineOSTest Test OS !macro __WinVer_DefineOSTest Test OS Suffix
!define ${Test}Win${OS} `"" WinVer${Test} ${WINVER_${OS}}` !define ${Test}Win${OS} `"" WinVer${Test} ${WINVER_${OS}${Suffix}}`
!macroend !macroend
!macro __WinVer_DefineOSTests Test !macro __WinVer_DefineOSTests Test Suffix
!insertmacro __WinVer_DefineOSTest ${Test} 95 !insertmacro __WinVer_DefineOSTest ${Test} 95 '${Suffix}'
!insertmacro __WinVer_DefineOSTest ${Test} 98 !insertmacro __WinVer_DefineOSTest ${Test} 98 '${Suffix}'
!insertmacro __WinVer_DefineOSTest ${Test} ME !insertmacro __WinVer_DefineOSTest ${Test} ME '${Suffix}'
!insertmacro __WinVer_DefineOSTest ${Test} NT4 !insertmacro __WinVer_DefineOSTest ${Test} NT4 '${Suffix}'
!insertmacro __WinVer_DefineOSTest ${Test} 2000 !insertmacro __WinVer_DefineOSTest ${Test} 2000 '${Suffix}'
!insertmacro __WinVer_DefineOSTest ${Test} XP !insertmacro __WinVer_DefineOSTest ${Test} XP '${Suffix}'
!insertmacro __WinVer_DefineOSTest ${Test} 2003 !insertmacro __WinVer_DefineOSTest ${Test} 2003 '${Suffix}'
!insertmacro __WinVer_DefineOSTest ${Test} VISTA !insertmacro __WinVer_DefineOSTest ${Test} VISTA '${Suffix}'
!insertmacro __WinVer_DefineOSTest ${Test} 2008 !insertmacro __WinVer_DefineOSTest ${Test} 2008 '${Suffix}'
!macroend !macroend
!insertmacro __WinVer_DefineOSTests AtLeast !insertmacro __WinVer_DefineOSTests AtLeast ""
!insertmacro __WinVer_DefineOSTests Is !insertmacro __WinVer_DefineOSTests Is _NT
!insertmacro __WinVer_DefineOSTests AtMost !insertmacro __WinVer_DefineOSTests AtMost ""
# version feature LogicLib macros # version feature LogicLib macros