testtoolsconn/wintap/driver/wintap.configure.nsh
changeset 0 3da2a79470a7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testtoolsconn/wintap/driver/wintap.configure.nsh	Mon Mar 08 15:04:18 2010 +0800
@@ -0,0 +1,99 @@
+
+DetailPrint "Checking if wintap is installed..."
+
+!ifndef ClassGUID
+!define ClassGUID "{4d36e972-e325-11ce-bfc1-08002be10318}"
+!endif
+  
+push $0
+push $1
+push $2
+push $4
+
+${GetParameters} $1
+
+${If} $1 =~ "/NOWINTAP"
+  DetailPrint "Wintap installation overridden - skipping installation..."
+  GoTo end
+${EndIf}
+
+;checking if wintap is installed
+#IntOp $0 $0 & 0
+ClearErrors
+/*next:
+  IntFmt $1 "%04d" $0
+  ReadRegStr $2 HKLM "SYSTEM\CurrentControlSet\Control\Class\${ClassGUID}\$1" "NetCfgInstanceId"
+  ReadRegStr $4 HKLM "SYSTEM\CurrentControlSet\Control\Class\${ClassGUID}\$1" "DriverDesc"
+  StrCmp "TAP-Win32 Adapter V8" $4 found
+  IntOp $0 $0 + 1
+*/
+
+StrCpy $0 0
+StrCpy $7 0 
+/*loop:
+  
+  StrCmp $1 "" notfound
+  ReadRegStr $2 HKLM "SYSTEM\CurrentControlSet\Control\Class\${ClassGUID}\$1" "NetCfgInstanceId"
+  ReadRegStr $4 HKLM "SYSTEM\CurrentControlSet\Control\Class\${ClassGUID}\$1" "DriverDesc"
+  StrCmp "TAP-Win32 Adapter V8" $4 found
+  StrCpy $6 $1
+  IntOp $6 $6 + 1 
+  IntOp $0 $0 + 1
+  GoTo loop
+done:*/
+
+EnumRegKey $1 HKLM "SYSTEM\CurrentControlSet\Control\Class\${ClassGUID}" $0
+IntOp $6 $1 + 1 
+${While} $1 != ""
+  ReadRegStr $2 HKLM "SYSTEM\CurrentControlSet\Control\Class\${ClassGUID}\$1" "NetCfgInstanceId"
+  ReadRegStr $4 HKLM "SYSTEM\CurrentControlSet\Control\Class\${ClassGUID}\$1" "DriverDesc"
+  StrCmp "TAP-Win32 Adapter V8" $4 found
+  IntOp $0 $0 + 1
+  EnumRegKey $1 HKLM "SYSTEM\CurrentControlSet\Control\Class\${ClassGUID}" $0
+  IntFmt $7 "%04d" $6
+  ${If} "$7" == "$1" 
+      IntOp $6 $6 + 1 
+  ${EndIf}
+${EndWhile}
+GoTo notfound
+;an error means that we trie to browse through not existing keys 
+;- search was finished, wintap is not there
+#IfErrors notfound next
+
+;if found skipping installation
+found:
+  DetailPrint "Wintap found - skipping installation..."
+  GoTo end
+  
+;if not found we install it
+notfound:
+  DetailPrint "Wintap not found - starting installation. Please wait."
+
+  ;a variable to contain the next entry that will be created by the driver installer
+  #IntOp $0 $6
+  IntFmt $0 "%04d" $6
+  
+  ;launch the tapinstall (devcon) or do something to install the driver
+  SetOutPath "$INSTDIR\driver" ;working directory must be tap installer directory
+  nsExec::ExecToLog "$INSTDIR\driver\tapinstaller"
+  
+  ;rename network connection to TAP-Win32
+  ReadRegStr $3 HKLM "SYSTEM\CurrentControlSet\Control\Class\${ClassGUID}\$0" "NetCfgInstanceId"
+  WriteRegStr HKLM "SYSTEM\CurrentControlSet\Control\Network\${ClassGUID}\$3\Connection" "Name" "TAP-Win32"
+
+  ;message to wait, as the following step takes a stupid amount of time
+  ;and it seems that the PC is doing nothing
+  DetailPrint "Configuring TAP-Win32 Adapter..."
+  DetailPrint "The process will take a while, please wait..."
+
+  ;set TAP-Win32 ip's using netsh
+  nsExec::ExecToLog "netsh interface ip set address TAP-Win32 static 192.168.0.1 255.255.255.0"
+  
+  DetailPrint "Wintap installation completed..."
+  
+end:
+  pop $4
+  pop $2
+  pop $1
+  pop $0
+  DetailPrint "========================================="