UltraVNC Mirror Driver 1.00.22: Packaging with DIFxApp / DPInst / Devcon
Having fun trying to package the UltraVNC Mirror Driver 1.00.22 for use with UltraVNC 22.214.171.124. I downloaded the driver from http://sc.uvnc.com/drivers.zip. Inside the 'xp\driver' folder path (XP is the target platform I'm repackaging for), there are 4 files:
The .cat, .dll and .sys files are signed by a GlobalSign issued certificate -- not Microsoft. I guess this means it has not passed "Windows Logo" testing, which is why during installation it generates the annoying Hardware Installation or Software Installation (depending on what you use) prompt:
The vendor (UltraVNC) uses a nasty setupdrv.exe file that performs unattended driver installation and prompt suppression by automatically pressing "Continue Anyway" for you -- you can see this momentarily pop up on the screen and then disappear. This is not ideal for an unattended enterprise wide deployment.
I have tried using DIFxApp, DPInst, and Devcon to perform driver installation, but they're not giving me the results I'm after.
I followed Screenbert's article, https://www-secure.symantec.com/connect/articles/how-package-signed-device-driver-using-wise-package-studio, which explains how to package a signed device driver. Both an interactive or unatteded installation generates the Hardware Installation/Software Installation prompt as above ;(
However, even if I was able to somehow suppress this (e.g., I just manually clicked "Continue Anyway" for my testing), the 4 driver files get dropped into [INSTALLDIR] and %SystemRoot%\system32\DRVSTORE\mv2_51D59933D8D3C8E541AD493D042293BA1BECE904. This is different from the vendor installer (setupdrv.exe) which drops mv2.dll into %SystemRoot%\system32 and mv2.sys into %SystemRoot%\system32\drivers (which I can see configured in the mv2.inf file).
(Q1) Is this normal behaviour for DIFxApp? (i.e., it does not observe the [DestinationDirs] section in the .inf).
Additionally, what is more concerning is that the mirror driver virtual device itself, "mv video hook driver2", does not appear in the Device Manager. The vendor's installer results in the following entry under "Display adapters" but DIFxApp doesn't do the same!
(Q2) Any ideas why not? Is it because this a virtual device?
Next, I thought about using DIFxApp as a Custom Action. Running it from the Command Prompt as a test gave me an error about the certificate being inappropriate for the requested usage. Here's the output:
C:\>DPInst.exe /Q /C /PATH C:\.
INFO: Option set: dumping log info to console.
INFO: Current working directory: 'C:\'
INFO: Running on path 'C:\'
INFO: No valid 'dpinst.xml' file provided.
INFO: Install option set: Running in quiet mode. Suppressing Wizard and OS popups.
INFO: Found driver package: 'C:\\mv2.inf'.
INFO: Preinstalling 'c:\\mv2.inf' ...
INFO: ENTER: DriverPackagePreinstallW
INFO: mv2.inf: checking signature with catalog 'c:\mv2.cat' ...
INFO: Driver package 'mv2.inf' is Authenticode signed.
INFO: Copied 'mv2.inf' to driver store...
INFO: Copied 'mv2.cat' to driver store...
INFO: Commiting queue...
INFO: Copied file: 'c:\mv2.sys' -> 'C:\WINDOWS\system32\DRVSTORE\mv2_51D59933D8D3C8E541AD493D042293BA1BECE904\mv2.sys'.
INFO: Copied file: 'c:\mv2.dll' -> 'C:\WINDOWS\system32\DRVSTORE\mv2_51D59933D8D3C8E541AD493D042293BA1BECE904\mv2.dll'.
ERROR: Invalid signature. Possibly rejected by user. (Error code 0x800B0110: The certificate is not valid for the requested usage.)
INFO: Removed driver package from store.
INFO: RETURN: DriverPackagePreinstallW (0x800B0110)
INFO: Returning with code 0x80010000
(Q3) I inspected the vendor's certificate inside the .cat, .sys and .dll files -- they refer to one and the same certificate issued by GlobalSign. The vendor's issued certificate also has "Digital Signature (80)" under the Key Usage section. Is DPInst.exe expecting something else?
Onto Devcon next, I tried executing "devcon.exe install mv2.inf mv_hook_display_driver2" from a Command Prompt window to test it out -- I still get the dreaded Hardware Installation prompt. However, if I do hit "Continue Anyway", the virtual device, "mv video hook driver2", does appear under "Display adapters" in the Device Manager! The mirror driver also works with UltraVNC!
(Q4) What's going on here? Why does Devcon.exe populate Device Manager, yet DIFxApp does not?
Still, I have the original problem of the Hardware Installation/Software Installation prompts! Thanks for the help in advance!