VendorSetup problems on Win2k

I’m trying to write an installer for a printer driver. I need to do some
custom user interface, so I have a VendorSetup DLL and a VendorSetup
entry in my INF file. In certain cases on Win2k (only - doesn’t happen
on WinXP), having the VendorSetup line causes my installation to fail
with an error in setupapi.log that says “this operation requires an
interactive window station”. If I remove the VendorSetup line,
everything’s fine.

The driver is (currently) unsigned. I’ve tried adding InteractiveInstall
to my INF file with no effect. I’m calling SetupCopyOEMInf to install
my INF file and then letting the PnP Manager handle the install.

Anybody have any suggestions? I’m stumped.

Thanks,
Aaron


Aaron Sher
Principal Software Engineer
http://www.vanteon.com
“Embedded for Your Future”
585-248-0510 x250
585-248-0537 (fax)

I believe this problem was fixed and will not repro on XP. The problem
does not happen when the printer is being installed for the first time
and it happens only on PNP deletion and reinstallation since the files
already exist. This comes down to the DIF_ALLOW_INSTALL flag which is
documented in the DDK. An installer might fail this request if the
DI_QUIETINSTALL flag is set in the device installation parameters and
the installer needs to display UI during device installation. This
failure is rare, however, because an installer can typically supply any
UI pages in response to the DIF_NEWDEVICEWIZARD_FINISHINSTALL request.
In that case, UI does not prevent the installer from succeeding a
DIF_ALLOW_INSTALL request for which the quiet flag is set. If, however,
an installer cannot limit its UI to the finish-install case, the
installer must fail this DIF request if the DI_QUIETINSTALL flag is set.
An installer might have this restriction, for example, if it calls
third-party code that displays UI. Now this basically implies that the
DI_QUIETINSTALL flag does not need to mean “absolutely no UI”. But in
the case of ntprint.dll which is the printer class installer, we
interpret DI_QUIETINSTALL as “absolutely no UI”. The VendorSetup entry
in the printer inf allows the OEM to write the inf such that when
ntprint.dll has completed the install of the printer we will call the
dll specified in the VendorSetup entry. This is often used to display
EULAs or to install further software, etc so if DI_QUIETINSTALL is set,
we will veto the install with ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION.
This is the error that you are seeing. I believe the problem was fixed
and will not repro on XP.

Hope this helps.

  • Ashwin

This posting is provided “AS IS” with no warranties, and confers no
rights.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Aaron Sher
Sent: Thursday, November 18, 2004 11:42 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] VendorSetup problems on Win2k

I’m trying to write an installer for a printer driver. I need to do some
custom user interface, so I have a VendorSetup DLL and a VendorSetup
entry in my INF file. In certain cases on Win2k (only - doesn’t happen
on WinXP), having the VendorSetup line causes my installation to fail
with an error in setupapi.log that says “this operation requires an
interactive window station”. If I remove the VendorSetup line,
everything’s fine.

The driver is (currently) unsigned. I’ve tried adding InteractiveInstall
to my INF file with no effect. I’m calling SetupCopyOEMInf to install
my INF file and then letting the PnP Manager handle the install.

Anybody have any suggestions? I’m stumped.

Thanks,
Aaron


Aaron Sher
Principal Software Engineer
http://www.vanteon.com
“Embedded for Your Future”
585-248-0510 x250
585-248-0537 (fax)


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Thank you, Ashwin, for responding so quickly. However, I don’t think I
understand your answer. We’re not passing the DI_QUIETINSTALL flag
anywhere - is it a default? The error does not occur on XP, but
unfortunately we need to support Win2k as well. Is there something we
can change to get around the problem?

Currently, we have two INF files - one that uses the VendorSetup DLL,
and one that gets used only on Win2k when the user runs our install app
before plugging in the device (which is the case that fails). The second
one uses a coinstaller to do the work that the VendorSetup DLL should
have, but it’s complicated and not the right solution. Having two INF
files means we have to go through WHQL twice, which is a *major* pain,
so we’re really motivated to solve this.

Thanks,
Aaron


Aaron Sher
Principal Software Engineer
http://www.vanteon.com
“Embedded for Your Future”
585-248-0510 x250
585-248-0537 (fax)

Sorry for not being clear. The DI_QUIETINSTALL is something that the
print class installer (ntprint.dll) passes to SetupAPI. So you don’t
have any control on whether the flag is passed in or not. As I
mentioned, this is a known issue on W2K which was unfortunately fixed
only on XP.

Your best option might be to work with the DDK Support group within the
scope of a support incident. They will be able to work with you to
fashion a workaround that works best for your specific case. Since this
is a known bug you will probably not be charged for this incident
although that is a decision that the DDK Support group will have to
make. But if you do decide to work with them, you should mention the
details from this thread.

You can find the support options at
http://support.microsoft.com/?LN=en-us&scid=gp%3Ben-us%3Bofferprophone&x
=9&y=7.

Hope this helps.

  • Ashwin

This posting is provided “AS IS” with no warranties, and confers no
rights.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Aaron Sher
Sent: Friday, November 19, 2004 5:06 AM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] VendorSetup problems on Win2k

Thank you, Ashwin, for responding so quickly. However, I don’t think I
understand your answer. We’re not passing the DI_QUIETINSTALL flag
anywhere - is it a default? The error does not occur on XP, but
unfortunately we need to support Win2k as well. Is there something we
can change to get around the problem?

Currently, we have two INF files - one that uses the VendorSetup DLL,
and one that gets used only on Win2k when the user runs our install app
before plugging in the device (which is the case that fails). The second
one uses a coinstaller to do the work that the VendorSetup DLL should
have, but it’s complicated and not the right solution. Having two INF
files means we have to go through WHQL twice, which is a *major* pain,
so we’re really motivated to solve this.

Thanks,
Aaron


Aaron Sher
Principal Software Engineer
http://www.vanteon.com
“Embedded for Your Future”
585-248-0510 x250
585-248-0537 (fax)


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com