none
Generating a PSCRIPT Minidriver

    Question

  • Dear Forum,

    I'd like to generate a PSCRIPT Minidriver based off the example below (different name & PPD). In doing so,

    would the driver need to be signed to avoid the warning dialogue on installation -- in spite of it using

    primarily inbox Windows components?

    Any help would be greatly appreciated!

    -John

    [Manufacturer] "ABC Printers" [ABC Printers] "ABC Printer 100 PS" = ABC100.PPD, ABC_Printer_100_PS [ABC100.PPD] CopyFiles=@ABC100.ppd ; PPD file. DataSection=PSCRIPT_DATA ; PSCRIPT Data Section DataFile=ABC100.ppd Include=NTPRINT.INF ; Include NTPRINT.INF. Needs=PSCRIPT.OEM ; Install PSCRIPT.

    Monday, April 16, 2018 7:31 PM

Answers

  • Hi Alan,

    Thanks for the help. On Windows 10, the setupapi.dev.log reveals:

    !!!  sig:           Driver package does not contain a catalog file, and Code Integrity is enforced.
    !!!  sig:           Driver package failed signature validation. Error = 0xE000022F

    which explains why the files can't be copied. I don't think I want to go through the gymnastics of rebooting the PC in a mode that bypasses the integrity check ...You would think the user would have the right to install unsigned drivers.

    If I do WHQL the driver, and I'm able to install/copy it into the driver store, would subsequent installs with different contents (PPD changes) succeed because the driver is already in the driver store?

    It would be nice if someone would write a generic Windows driver that has a real IPP backend, wouldn't need PPDs. IPP Everywhere! :-)

    I found some powershell scripts, that you may have authored, which could allow me to change basic capabilities: colormodel, default media size, etc.

    Thanks again,

    -John

    • Marked as answer by jkaye501 Saturday, May 05, 2018 1:24 PM
    Wednesday, May 02, 2018 12:10 AM

All replies

  • Make the driver PackageAware

    Do NOT use 2003 Needs and includes methods, they are no longer supported

    Include=NTPRINT.INF ; Include NTPRINT.INF. Needs=PSCRIPT.OEM ; Install PSCRIPT.

    Get the driver signed by Microsoft if you are using this in a Point and Print shared printer scenario.

    There is not a cost to Microsoft for WHQL signatures but there is a cost for the linked 3rd party certificate.


    Alan Morris formerly with Windows Printing Team

    Monday, April 16, 2018 7:58 PM
    Answerer
  • You can use the PaperCut Global PostScript driver as an example.

    https://www.papercut.com/products/ng/download/

    Download the current version.  The driver is under 

    C:\Program Files\PaperCut NG\providers\print\drivers\global\win\PC-Global-Print-Driver

    Copy the driver to a different location, then you can uninstall the software.

    Feel free to use the driver in your environment.  You can check out the certificate from MS.


    Alan Morris formerly with Windows Printing Team

    Monday, April 16, 2018 8:03 PM
    Answerer
  • Alan,

    Thank you. Your response was very helpful. I successfully installed the PaperCut driver on my Windows 7 laptop.

    What I would ideally like to do is this: If I have 3 different printers, I would like to generate a unique printer driver instance for each that is derived from a signed core driver (with just the PPD and model name being different); however, when I do that I get a warning dialogue when I attempt to install. I can just change the PPD file without an issue, but that won't give me a unique -installable- instance.

    If I use the PaperCut driver, can I create unique instances of it for each printer I want to install? What options do I have? I assume I can install each printer using the PaperCut driver and then modify the capabilities of the win32_printer instance for each printer ...

    Thanks for your help.

    -John

    Tuesday, April 17, 2018 3:30 AM
  • Hi,  have you determine how you are doing this?

    Any modifications to the INF or the PPD file will result in a failure when Windows compares the CAT file during the installation.

    You can add the drivers and printers to the registry with a modified PPD file and restart the spooler to work around the valid certificate check but I do not know if it is worth those steps.


    Alan Morris formerly with Windows Printing Team

    Wednesday, April 25, 2018 2:16 PM
    Answerer
  • Hi,

    Was your issue resolved? If you resolved it using our solution, please "mark it as answer" to help other community members find the helpful reply quickly.

    If you resolve it using your own solution, please share your experience and solution here. It will be very beneficial for other community members who have similar questions. If no, please reply and tell us the current situation in order to provide further help.

    Best Regards,

    Wendy


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    Friday, April 27, 2018 7:10 AM
    Moderator
  • Sorry for the late response.

    What I did was dynamically generate an INF file based on the printers discovered. I am willing to accept the unsigned driver notification, as long as the driver is installed. The INF file I generated works great on Windows 7; but on Windows 10, I get a Copy Error (Setup cannot copy the file) even though the file does exist at the location specified.

    I presume this is due to the driver not being signed? I'll try test signing the driver to see if I can get past the copy error. Any other issues that would cause the copy error? I am willing to accept the unsigned driver error  -- is there a registry setting that would allow installation on W10?

    I'm running printui through powershell to do the install. It may be worthwhile to restart the spooler to work around certificate checks. How would I do it?

    Thanks,

    -John

    Sunday, April 29, 2018 7:37 PM
  • Hi John,

    You are hitting a failure long before the spooler can install the driver.

    The first part of the process is that the system gets to install the driver to the System32\DriverStore directory.  A spooler restart will have zero impact since it's not the process preventing the driver install.

    Once the driver is staged in the driverstore, the spooler can add the driver to be loaded by the spooler.

    Check the c:\windows\inf\setupapi.dev.log file for errors.  Search for !!!.  You should see where the driver is copied to a temp folder and where the certificate check fails.

    Compare the setupapi.dev.log files from Windows 7 for hints with regard to differences in the log file.


    Alan Morris formerly with Windows Printing Team

    Tuesday, May 01, 2018 7:04 AM
    Answerer
  • Hi Alan,

    Thanks for the help. On Windows 10, the setupapi.dev.log reveals:

    !!!  sig:           Driver package does not contain a catalog file, and Code Integrity is enforced.
    !!!  sig:           Driver package failed signature validation. Error = 0xE000022F

    which explains why the files can't be copied. I don't think I want to go through the gymnastics of rebooting the PC in a mode that bypasses the integrity check ...You would think the user would have the right to install unsigned drivers.

    If I do WHQL the driver, and I'm able to install/copy it into the driver store, would subsequent installs with different contents (PPD changes) succeed because the driver is already in the driver store?

    It would be nice if someone would write a generic Windows driver that has a real IPP backend, wouldn't need PPDs. IPP Everywhere! :-)

    I found some powershell scripts, that you may have authored, which could allow me to change basic capabilities: colormodel, default media size, etc.

    Thanks again,

    -John

    • Marked as answer by jkaye501 Saturday, May 05, 2018 1:24 PM
    Wednesday, May 02, 2018 12:10 AM