From ee313a978f7aa9eff8163e3f6be3a59b12e03fe0 Mon Sep 17 00:00:00 2001 From: james Date: Tue, 27 Feb 2007 23:29:17 +0000 Subject: Renamed TAP-Win32 driver from tap0801.sys to tap0901.sys to reflect the fact that Vista has blacklisted the tap0801.sys file name due to previous compatibility issues which have now been resolved. TAP-Win32 major/minor version number is now 9/1. Windows installer will delete a previously installed tap0801.sys TAP driver before installing tap0901.sys. Added code to Windows installer to fail gracefully on 64 bit installs until 64-bit TAP driver issues can be resolved. Added code to Windows installer to fail gracefully on versions of Windows which are not explicitly supported. git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@1746 e7ae566f-a301-0410-adde-c780ea21d3b5 --- install-win32/GetWindowsVersion.nsi | 109 ++++++++++++++++++++++++++++++++++++ install-win32/openvpn.nsi.in | 52 +++++++++++++---- install-win32/prebuild | 29 +++++----- 3 files changed, 167 insertions(+), 23 deletions(-) create mode 100644 install-win32/GetWindowsVersion.nsi (limited to 'install-win32') diff --git a/install-win32/GetWindowsVersion.nsi b/install-win32/GetWindowsVersion.nsi new file mode 100644 index 0000000..103caff --- /dev/null +++ b/install-win32/GetWindowsVersion.nsi @@ -0,0 +1,109 @@ +; Turn off old selected section +; GetWindowsVersion +; +; Based on Yazno's function +; Updated by Joost Verburg +; Updated for Windows 98 SE by Matthew Win Tibbals 5-21-03 +; Updated for Vista by Joe Cincotta 12-2-07 +; +; Returns on top of stack +; +; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003, VISTA) +; or +; '' (Unknown Windows Version) +; +; Usage: +; Call GetWindowsVersion +; Pop $R0 +; ; at this point $R0 is "NT 4.0" or whatnot +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Function GetWindowsVersion + + Push $R0 + Push $R1 + + ClearErrors + + 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: +;;beginning of additions to support win 98 SE + push $R0 + push "." + call strstr + pop $R0 + StrCpy $R0 $R0 "" 1 + StrCmp $R0 "10.2222" lbl_win32_98SE + StrCpy $R0 '98' ;;this line was not added + Goto lbl_done ;;this line was not added either + + lbl_win32_98SE: + StrCpy $R0 '98 SE' + Goto lbl_done +;;end of additions to support win 98 SE + lbl_win32_ME: + StrCpy $R0 'ME' + Goto lbl_done + + lbl_winnt: + + 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 + + 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 + + lbl_error: + Strcpy $R0 '' + lbl_done: + + Pop $R1 + Exch $R0 + +FunctionEnd +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/install-win32/openvpn.nsi.in b/install-win32/openvpn.nsi.in index 9a5b47a..8c24158 100755 --- a/install-win32/openvpn.nsi.in +++ b/install-win32/openvpn.nsi.in @@ -9,6 +9,7 @@ !include "MUI.nsh" !include "setpath.nsi" +!include "GetWindowsVersion.nsi" !define HOME ".." !define BIN "${HOME}\bin" @@ -16,7 +17,7 @@ !define PRODUCT_NAME "OpenVPN" !define VERSION "@VERSION@" # AUTO_VERSION -!define TAP "tap0801" +!define TAP "tap0901" !define TAPDRV "${TAP}.sys" ; something like "-DBG2" @@ -168,6 +169,8 @@ FunctionEnd Function .onInit ClearErrors + +# Verify that user has admin privs UserInfo::GetName IfErrors ok Pop $R0 @@ -177,6 +180,35 @@ Function .onInit Messagebox MB_OK "Administrator privileges required to install OpenVPN [$R0/$R1]" Abort ok: + + Call GetWindowsVersion + Pop $1 + StrCmp $1 "2000" goodwinver + StrCmp $1 "XP" goodwinver + StrCmp $1 "2003" goodwinver + StrCmp $1 "VISTA" goodwinver + + Messagebox MB_OK "Sorry, OpenVPN does not currently support Windows $1" + Abort + +goodwinver: + System::Call "kernel32::GetCurrentProcess() i .s" + System::Call "kernel32::IsWow64Process(i s, *i .r0)" + IntCmp $0 0 init32bits + + ; we are running on 64-bit windows + StrCmp $1 "VISTA" vista64bummer + + Messagebox MB_OK "Sorry, OpenVPN doesn't currently support 64-bit Windows." + Abort + +vista64bummer: + + Messagebox MB_OK "Sorry, OpenVPN doesn't currently support 64-bit Vista because Microsoft doesn't allow the installation of 64 bit unsigned drivers." + Abort + +init32bits: + FunctionEnd !define SF_SELECTED 1 @@ -290,13 +322,15 @@ Section "TAP-Win32 Virtual Ethernet Adapter" SecTAP DetailPrint "We are running on a 64-bit system." SetOutPath "$INSTDIR\bin" - File "${BIN}\ti3790-amd64\tapinstall.exe" + +; File "${BIN}\ti3790-amd64\tapinstall.exe" SetOutPath "$INSTDIR\driver" - File "${HOME}\tap-win32\amd64\OemWin2k.inf" - File "${HOME}\tap-win32\amd64\${TAPDRV}" - goto tapend +; File "${HOME}\tap-win32\amd64\OemWin2k.inf" +; File "${HOME}\tap-win32\amd64\${TAPDRV}" + +goto tapend tap-32bit: @@ -382,12 +416,10 @@ Section -post tapinstall: DetailPrint "TAP-Win32 REMOVE OLD TAP" - nsExec::ExecToLog '"$INSTDIR\bin\tapinstall.exe" remove TAP' - Pop $R0 # return value/error/timeout - DetailPrint "tapinstall remove TAP returned: $R0" - nsExec::ExecToLog '"$INSTDIR\bin\tapinstall.exe" remove TAPDEV' + + nsExec::ExecToLog '"$INSTDIR\bin\tapinstall.exe" remove TAP0801' Pop $R0 # return value/error/timeout - DetailPrint "tapinstall remove TAPDEV returned: $R0" + DetailPrint "tapinstall remove TAP0801 returned: $R0" DetailPrint "TAP-Win32 INSTALL (${TAP})" nsExec::ExecToLog '"$INSTDIR\bin\tapinstall.exe" install "$INSTDIR\driver\OemWin2k.inf" ${TAP}' diff --git a/install-win32/prebuild b/install-win32/prebuild index b4cb00b..95b93de 100755 --- a/install-win32/prebuild +++ b/install-win32/prebuild @@ -28,11 +28,10 @@ LZO=$H/lzo-2.02 # dmalloc. DMALLOC=$H/dmalloc-5.4.2 -# TAP binaries should be here: tap0801.sys and tapinstall.exe +# TAP binaries should be here: tap0901.sys and tapinstall.exe # These must be built with MS DDK. -TAPBIN=$H/tapbin-0804 -TAPBIN64=$H/tapbin64-0801 -#TAPBIN64=$H/tapbin64-0804 +TAPBIN=$H/tapbin-0901 +#TAPBIN64=$H/tapbin64-0901 # u2d.c should exist here. SCRIPTS=$IN/install-win32 @@ -86,6 +85,7 @@ mkdir $OUT/install-win32 cp $IN/install-win32/openvpn.nsi $OUT/install-win32 cp $IN/install-win32/setpath.nsi $OUT/install-win32 +cp $IN/install-win32/GetWindowsVersion.nsi $OUT/install-win32 cp $IN/images/install-whirl.bmp $OUT/install-win32 cp $IN/images/openvpn.ico $OUT/install-win32 cp $IN/INSTALL-win32.txt $OUT/install-win32 @@ -107,18 +107,17 @@ cp $IN/tap-win32/SOURCES $OUT/tap-win32 mkdir $OUT/tap-win32/i386 cp $IN/tap-win32/i386/OemWin2k.inf $OUT/tap-win32/i386 cp $IN/tap-win32/i386/tap.cat $OUT/tap-win32/i386 -cp $TAPBIN/tap0801.sys $OUT/tap-win32/i386 +cp $TAPBIN/tap0901.sys $OUT/tap-win32/i386 -mkdir $OUT/tap-win32/amd64 -cp $TAPBIN64/OemWin2k.inf $OUT/tap-win32/amd64 -#cp $IN/tap-win32/amd64/OemWin2k.inf $OUT/tap-win32/amd64 -cp $IN/tap-win32/amd64/tap.cat $OUT/tap-win32/amd64 -cp $TAPBIN64/tap0801.sys $OUT/tap-win32/amd64 +#mkdir $OUT/tap-win32/amd64 +#cp $TAPBIN64/OemWin2k.inf $OUT/tap-win32/amd64 +#cp $IN/tap-win32/amd64/tap.cat $OUT/tap-win32/amd64 +#cp $TAPBIN64/tap0901.sys $OUT/tap-win32/amd64 mkdir $OUT/bin/ti3790-i386 cp $TAPBIN/tapinstall.exe $OUT/bin/ti3790-i386 -mkdir $OUT/bin/ti3790-amd64 -cp $TAPBIN64/tapinstall.exe $OUT/bin/ti3790-amd64 +#mkdir $OUT/bin/ti3790-amd64 +#cp $TAPBIN64/tapinstall.exe $OUT/bin/ti3790-amd64 echo BUILD service-win32 @@ -133,7 +132,11 @@ cp $OUT/service-win32/service.h $OUT/service-win32/service.h.orig cp $OUT/service-win32/service.c $OUT/service-win32/service.c.orig pushd $OUT/service-win32 -patch