[WINOF] Svr 2003 cleanup enhanced to remove from %windir%\lastgood\. Use 'dpinst...
authorstansmith <stansmith@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Tue, 26 May 2009 22:31:24 +0000 (22:31 +0000)
committerstansmith <stansmith@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Tue, 26 May 2009 22:31:24 +0000 (22:31 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2198 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

WinOF/WIX/CustomActions.vbs

index 4895ecf..7baa403 100644 (file)
 '\r
 ' $Id$\r
 \r
+' VersionNT values\r
 Const WindowsXP                        ="501"\r
-Const WindowsLongHorn  ="600"\r
-Const Windows7                 ="700"\r
+Const WindowsSvr2003   ="502"\r
+Const WindowsVista             ="600"\r
+Const WindowsSvr2008   ="600"\r
+Const Windows7                 ="601"\r
+\r
+Const UseDPinst                        = "600" ' use DPinst.exe to install drivers for\r
+                                                               ' Windows VersionNT >= this value.\r
 \r
 ' Global debug flag: Session.Property from msiexec.exe cmd line DBG=1\r
 Dim sDBG\r
@@ -95,7 +101,7 @@ Sub WinOF_setup
        ' Replace default InfiniHost HCA driver with ConnectX HCA driver if\r
        ' requested 'HCA=cx' or add ConnectX '+cx'.\r
 \r
-       If VersionNT < WindowsLongHorn Then\r
+       If VersionNT < UseDPinst Then\r
                use_this_HCA = Session.Property("HCA")\r
                If use_this_HCA <> "" Then\r
                        ' down-case if required.\r
@@ -218,7 +224,7 @@ Sub DriverFileDelete(fso,WshShell,filename,VersionNT)
                ' allow continuation after 'permission denied' error\r
            On Error Resume Next \r
                ' unlock the driver file by deleting PnPLocked reg entry.\r
-               If VersionNT >= WindowsLongHorn Then\r
+               If VersionNT >= UseDPinst Then\r
                        base = "reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles /v "\r
                        Return = WshShell.Run (base & filename & " /f", 0, true)\r
                End If\r
@@ -318,7 +324,9 @@ Sub RemoveDriverFiles(fso,WshShell,VersionNT)
     DriverFileDelete fso,WshShell,sDRIVERS & "mlx4_bus.sys",VersionNT\r
     DriverFileDelete fso,WshShell,sDRIVERS & "mlx4_hca.sys",VersionNT\r
     DriverFileDelete fso,WshShell,sDRIVERS & "winverbs.sys",VersionNT\r
+    DriverFileDelete fso,WshShell,sDRIVERS & "winverbsd.sys",VersionNT\r
     DriverFileDelete fso,WshShell,sDRIVERS & "winmad.sys",VersionNT\r
+    DriverFileDelete fso,WshShell,sDRIVERS & "winmadd.sys",VersionNT\r
     DriverFileDelete fso,WshShell,sDRIVERS & "ipoib.sys",VersionNT\r
     DriverFileDelete fso,WshShell,sDRIVERS & "ibiou.sys",VersionNT\r
     DriverFileDelete fso,WshShell,sDRIVERS & "ibsrp.sys",VersionNT\r
@@ -372,17 +380,42 @@ Sub RemoveDriverFiles(fso,WshShell,VersionNT)
        End If\r
 \r
        If fso.FolderExists(Win & "lastgood" ) Then\r
+       FileDeleteQ fso,Win & "lastgood\system32\ibal.dll"\r
+       FileDeleteQ fso,Win & "lastgood\system32\ibald.dll"\r
+       FileDeleteQ fso,Win & "lastgood\system32\complib.dll"\r
+       FileDeleteQ fso,Win & "lastgood\system32\complibd.dll"\r
+       FileDeleteQ fso,Win & "lastgood\system32\winverbs.dll"\r
+       FileDeleteQ fso,Win & "lastgood\system32\winverbsd.dll"\r
+       FileDeleteQ fso,Win & "lastgood\system32\winmad.dll"\r
+       FileDeleteQ fso,Win & "lastgood\system32\winmadd.dll"\r
+\r
+       FileDeleteQ fso,Win & "lastgood\system32\ibndprov.dll"\r
+       FileDeleteQ fso,Win & "lastgood\system32\ndinstall.exe"\r
        FileDeleteQ fso,Win & "lastgood\system32\ibwsd.dll"\r
+\r
+       FileDeleteQ fso,Win & "lastgood\SysWOW64\ibndprov.dll"\r
        FileDeleteQ fso,Win & "lastgood\SysWOW64\ibwsd.dll"\r
        FileDeleteQ fso,Win & "lastgood\SysWOW64\mthcau.dll"\r
        FileDeleteQ fso,Win & "lastgood\SysWOW64\mthcaud.dll"\r
+       FileDeleteQ fso,Win & "lastgood\SysWOW64\mlx4u.sys"\r
+       FileDeleteQ fso,Win & "lastgood\SysWOW64\mlx4ud.sys"\r
+\r
        FileDeleteQ fso,Win & "lastgood\system32\mthcau.dll"\r
        FileDeleteQ fso,Win & "lastgood\system32\mthcaud.dll"\r
+\r
+       FileDeleteQ fso,Win & "lastgood\system32\drivers\ipoib.sys"\r
+       FileDeleteQ fso,Win & "lastgood\system32\drivers\ibbus.sys"\r
        FileDeleteQ fso,Win & "lastgood\system32\drivers\mthcau.dll"\r
        FileDeleteQ fso,Win & "lastgood\system32\drivers\mthcaud.dll"\r
        FileDeleteQ fso,Win & "lastgood\system32\drivers\mthca.sys"\r
+       FileDeleteQ fso,Win & "lastgood\system32\drivers\mlx4u.sys"\r
+       FileDeleteQ fso,Win & "lastgood\system32\drivers\mlx4ud.sys"\r
+       FileDeleteQ fso,Win & "lastgood\system32\drivers\mlx4_bus.sys"\r
+       FileDeleteQ fso,Win & "lastgood\system32\drivers\mlx4_hca.sys"\r
        FileDeleteQ fso,Win & "lastgood\system32\drivers\winverbs.sys"\r
+       FileDeleteQ fso,Win & "lastgood\system32\drivers\winverbsd.sys"\r
        FileDeleteQ fso,Win & "lastgood\system32\drivers\winmad.sys"\r
+       FileDeleteQ fso,Win & "lastgood\system32\drivers\winmadd.sys"\r
        End If\r
 \r
     FileDeleteQ fso,Win & "winverbs.lib"\r
@@ -1188,7 +1221,7 @@ Function DriverInstall()
        ' Use DPINST.EXE for Svr 2008 & Vista Driver Install (Windows LongHorn)\r
        ' otherwise use devman.\r
 \r
-       If VersionNT >= WindowsLongHorn Then\r
+       If VersionNT >= UseDPinst Then\r
            DriverInstall = dpinst_install(WshShell,sInstalldir,localSM,IPOIB,_\r
                                                                                VNIC,SRP)\r
        Else\r
@@ -1197,6 +1230,30 @@ Function DriverInstall()
        End If\r
 \r
        If DriverInstall <> 0 Then\r
+               DriverUninstall\r
+               If VersionNT >= UseDPinst Then\r
+                       ' dpinst.exe removes from the 'Driver Store'\r
+               dpinst = "cmd.exe /c cd /d " & sInstalldir & "IBcore & dpinst.exe "\r
+                       If VNIC then\r
+                               find_remove_INF_file WshShell,dpinst,"netvnic.cat"\r
+                       End If\r
+\r
+                       If SRP then\r
+                               find_remove_INF_file WshShell,dpinst,"ib_srp.cat"\r
+                       End If\r
+                       find_remove_INF_file WshShell,dpinst,"ib_iou.cat"\r
+                       find_remove_INF_file WshShell,dpinst,"ipoib.cat"\r
+                       find_remove_INF_file WshShell,dpinst,"mthca.cat"\r
+                       find_remove_INF_file WshShell,dpinst,"mlx4"\r
+               End If\r
+\r
+               If VNIC then\r
+                       find_remove_INF_file WshShell,devman,"netvnic.cat"\r
+               End If\r
+\r
+               If SRP then\r
+                       find_remove_INF_file WshShell,devman,"ib_srp.cat"\r
+               End If\r
                find_remove_INF_file WshShell,devman,"ib_iou.cat"\r
                find_remove_INF_file WshShell,devman,"ipoib.cat"\r
                find_remove_INF_file WshShell,devman,"mthca.cat"\r
@@ -1544,7 +1601,7 @@ Sub       Uninstall_IOU(fso,WshShell,devList,sInstalldir,VersionNT)
 \r
        devman = "cmd.exe /c cd /d " & sInstalldir & "IBcore & devman.exe "\r
 \r
-       If VersionNT >= WindowsLongHorn Then\r
+       If VersionNT >= UseDPinst Then\r
                ' use dpinst.exe instead of devman.exe for Windows LongHorn++\r
                tool = replace(devman,"devman","dpinst")\r
        Else\r
@@ -1589,7 +1646,7 @@ Sub Uninstall_VNIC(fso,WshShell,devices,sInstalldir,VersionNT)
            End if\r
        Next\r
 \r
-       If VersionNT >= WindowsLongHorn Then\r
+       If VersionNT >= UseDPinst Then\r
                ' use dpinst.exe instead of devman.exe for Windows LongHorn++\r
                tool = replace(devman,"devman","dpinst")\r
        Else\r
@@ -1649,7 +1706,7 @@ Sub Uninstall_SRP(fso,WshShell,devices,sInstalldir,VersionNT)
                Next\r
        Next\r
 \r
-       If VersionNT >= WindowsLongHorn Then\r
+       If VersionNT >= UseDPinst Then\r
                ' use dpinst.exe instead of devman.exe for Windows LongHorn++\r
                tool = replace(devman,"devman","dpinst")\r
        Else\r
@@ -1703,7 +1760,7 @@ Sub RemoveDevice(fso,WshShell,sInstalldir,devList,DeviceTag,VersionNT)
                Exit Sub\r
        End If\r
 \r
-       If VersionNT >= WindowsLongHorn Then\r
+       If VersionNT >= UseDPinst Then\r
                ' use dpinst.exe instead of devman.exe for Windows LongHorn++\r
                tool = replace(devman,"devman","dpinst")\r
        Else\r
@@ -1730,7 +1787,7 @@ Sub remove_all_HCA_devices(fso,WshShell,sInstalldir,VersionNT)
        ' VEN_15B3 covers devices: mthca & mlx4_bus\r
        RemoveDevice fso,WshShell,sInstalldir,Null,"PCI\VEN_15B3",VersionNT\r
 \r
-       If VersionNT >= WindowsLongHorn Then\r
+       If VersionNT >= UseDPinst Then\r
                ' use dpinst.exe instead of devman.exe for Windows LongHorn++\r
                tool = "cmd.exe /c cd /d " & sInstalldir & "IBcore & dpinst.exe "\r
        Else\r
@@ -2195,7 +2252,7 @@ Function InstallChanged
 \r
        ' Flag Windows LongHorn Install (aka Vista | Server 2008)\r
        VersionNT = Session.Property("VersionNT")\r
-       If VersionNT >= WindowsLongHorn Then\r
+       If VersionNT >= UseDPinst Then\r
                WLH = 1\r
        Else\r
                WLH = 0\r