From: eveilleux on
1- using dpinst /sa does not suppress the Add/Remove program entry.
Look at this extract from Dpinst.log:


INFO: ****************************************
INFO: 04/11/2007 11:00:07
INFO: Product Version 2.1.0.0.
INFO: Version: 5.1.2600 Service Pack 2
INFO: Platform ID: 2 (NT)
INFO: Service Pack: 2.0
INFO: Suite: 0x0100, Product Type: 1
INFO: Architecture: X86.
INFO: Interactive Windows Station
INFO: Command Line: 'dpinst /sa'
INFO: DPInst is not multi-lingual.
INFO: ****************************************
INFO: Current working directory: 'Z:\TDMF\debug\Driver Package'
INFO: Running on path 'Z:\TDMF\debug\Driver Package'
INFO: No valid 'dpinst.xml' file provided.
INFO: Install option set: Suppress Add or Remove Programs entries.
INFO: Found driver package: 'Z:\TDMF\debug\Driver Package\dtcblock.inf'.
INFO: Preinstalling 'z:\tdmf\debug\driver package\dtcblock.inf' ...
INFO: ENTER: DriverPackagePreinstallW
ERROR: Preinstall is not a supported operation for driver type 5
INFO: RETURN: DriverPackagePreinstallW (0x1)
INFO: ENTER: DriverPackageGetPathW
INFO: No driver store entry for z:\tdmf\debug\driver package\dtcblock.inf
found. (Error code 0xE0000302.)
INFO: RETURN: DriverPackageGetPathW (0xE0000302)
INFO: ENTER: DriverPackageInstallW
INFO: dtcblock.inf: checking signature with catalog 'z:\tdmf\debug\driver
Package\dtcblock.cat' ...
INFO: Driver package 'dtcblock.inf' is Authenticode signed.
INFO: Copied 'dtcblock.inf' to driver store...
INFO: Copied 'dtcblock.cat' to driver store...
INFO: Commiting queue...
INFO: Copied file: 'z:\tdmf\debug\driver package\dtclogmsg.dll' ->
'C:\WINDOWS\system32\DRVSTORE\dtcblock_79FB86867C5AB70D5EA90B6FA9796CCB21BC40DE\dtclogmsg.dll'.
INFO: Copied file: 'z:\tdmf\debug\driver package\i386\dtcblock.sys' ->
'C:\WINDOWS\system32\DRVSTORE\dtcblock_79FB86867C5AB70D5EA90B6FA9796CCB21BC40DE\i386\dtcblock.sys'.
INFO: Installing INF file
"C:\WINDOWS\system32\DRVSTORE\dtcblock_79FB86867C5AB70D5EA90B6FA9796CCB21BC40DE\dtcblock.inf" of Type 5.
INFO: installing class filter
'C:\WINDOWS\system32\DRVSTORE\dtcblock_79FB86867C5AB70D5EA90B6FA9796CCB21BC40DE\dtcblock.inf'
INFO:
'C:\WINDOWS\system32\DRVSTORE\dtcblock_79FB86867C5AB70D5EA90B6FA9796CCB21BC40DE\dtcblock.inf' requires a reboot.
INFO: The Stopping of device
'STORAGE\VOLUME\1&30A96598&0&SIGNATUREE679E679OFFSET6A829A600LENGTH40390800'
was vetoed by
'STORAGE\Volume\1&30a96598&0&SignatureE679E679Offset6A829A600Length40390800'
(veto type 16858448)
INFO: The Stopping of device
'STORAGE\VOLUME\1&30A96598&0&SIGNATUREE679E679OFFSET7E00LENGTH3A9DFF400' was
vetoed by
'STORAGE\Volume\1&30a96598&0&SignatureE679E679Offset7E00Length3A9DFF400'
(veto type 16858496)
INFO: The Stopping of device
'STORAGE\VOLUME\1&30A96598&0&SIGNATUREE679E679OFFSET820AFA600LENGTHFA087E00'
was vetoed by
'STORAGE\Volume\1&30a96598&0&SignatureE679E679Offset820AFA600LengthFA087E00'
(veto type 16858448)
INFO: The Stopping of device
'STORAGE\VOLUME\1&30A96598&0&SIGNATUREE679E679OFFSET91AB8A200LENGTH65F1C00'
was vetoed by
'STORAGE\Volume\1&30a96598&0&SignatureE679E679Offset91AB8A200Length65F1C00'
(veto type 16858448)
SUCCESS:Installation completed with code 0x0.
INFO: RETURN: DriverPackageInstallW (0x0)
INFO: ENTER: DriverPackageGetPathW
SUCCESS:Found driver store entry.
INFO: RETURN: DriverPackageGetPathW (0x0)
INFO: Successfull installation of 'z:\tdmf\debug\driver
package\dtcblock.inf'.
INFO: Created entry in Add or Remove Programs for
'C:\WINDOWS\system32\DRVSTORE\dtcblock_79FB86867C5AB70D5EA90B6FA9796CCB21BC40DE\dtcblock.inf'.
INFO: Machine will have to be rebooted to complete installation.
INFO: Returning with code 0x40000001
INFO: 04/11/2007 11:00:50


2- it is impossible to uninstall, and then reinstall without
rebooting, as the driver service created by the INF is not created in the
registry. We assume that it is because the service key is marked for
deletion on the next reboot and thus cannot be recreated before that happens.
Is there a way to bypass that? Or at least if dpinst would fail the
installation, we could indicate to the user that it did not work. Now,
everything seems fine and when the user reboots after the installation, a
blue screen occurs because Upperfilters contains our service, but the service
does not exist.



3- When integrated with our current IS7 project, the uninstall does
not remove the service and UpperFilters registry entries. It works fine when
installed standalone, but it seems like it thinks that another component is
using the driver and so does not want to remove it. Is there a way to get
more info on what is going on, besides dpinst.log and setupapi.log? Does
dpinst track all the accesses to the driver service key and then decides that
the driver package is not the sole owner of the driver?