Creating Printer Driver installs for SCCM deployment


Printer Drivers cannot be injected into SCCM’s drivers catalog and hence a driver package cannot be created for them . One option to get them installed is to package them into an MSI file and use this in conjunction with the DIFxApp merge module. There’s some information on DIFxApp here.

The following guide shows how I packaged the drivers for a Canon iR5075 printer which I was then able to deploy as an application in SCCM.

Download the following tools to achieve this:

Install the Windows 7 Driver Kit

Extract the GRMWDK_EN_7600_1.ISO file and run the KitSetup.exe file. Install all components

printerdriver001

printerdriver002

Once installed click Finish.

Install Orca

Run the orca.msi file. Click Next.

printerdriver003

Accept the licence agreement and click Next.

printerdriver004

Choose a Complete install

printerdriver005

Click Install.

printerdriver006

Click Finish to complete the installation.

printerdriver007

Install Advanced Installer

Run the Advinstl.msi setup file. Click Next.

printerdriver008

Click Next to accept the default install location.

printerdriver009

Accept the licence agreement and click Next.

printerdriver010

Click Install

printerdriver011

printerdriver012

Click Finish to launch the Advanced Installer.

printerdriver013

Create the MSI install

Download any printer drivers and extract to the .inf files.

In Advanced Installer choose a Simple template.

printerdriver014

Enter any product details for the drivers. Note that details here will appear in Add/Remove Programs applet.

printerdriver015

Click the Files and Folders menu on the left hand pane.

printerdriver016

Click the Files icon in the Files and Folders menu.

printerdriver017

Navigate to your extracted drivers folder and then click Open.

printerdriver018

Click the Home menu and choose Build.  Enter a project name and Save.

printerdriver019

Click Ok once the MSI has been built.

printerdriver022

Open Orca and open the created MSI file.  Click Tools>Merge Module.

printerdriver025

Click Browse.

image026

Import the x64 DIFxApp merge module from the directory C:\WinDDK\7600.16385.1\redist\DIFx\DIFxApp\MergeModule\amd64. Click Open then click Ok.

Note that I am using the x64 DIFxApp, the x86 version is located in the folder C:\WinDDK\7600.16385.1\redist\DIFx\DIFxApp\MergeModule\x86

printerdriver027

Click Accept to any merge failures.

printerdriver028

In the File table, find the row containing the driver’s .inf file and copy the value from the Component_ column.

printerdriver029

Click the MsiDriverPackages table and click Add Row

printerdriver031

In the component field paste in the component copied earlier, in this instance aussdrv.dl_

printerdriver022

In the Flags field enter the value 4. Save the MSI file.

printerdriver033

Installing the MSI file.

Run the final MSI file. Click Next.

printerdriver034

Click Next.

printerdriver035

Click Install.

printerdriver036

printerdriver037

Click Ok at the end of the installation.

printerdriver038

Click Finish to complete the installation.

printerdriver039

To silently install the software run the MSI file with the following switches.

“<filename>.msi” /qn

17 comments

  1. I am attempting to use this process for deploying Ricoh universal print drivers. I have followed the process but when I run the finished installer I receive the Following error:
    Could not locate cabinet in stream: disk1.cab.

    1. Same issue here. Does seem to work without modifying the MSI with Orca and DIFxApp though. What is the need for this (other than it reduces the file size)?

      1. Sorted. If you get the error You MUST copy the MSI and not overwrite the original and work with that.

        AWESOME Blogpost btw!

  2. I have searched for information outlining the procedure for installing network printers that use an AD print server. Group policy deployment is not an option because our structure does not allow that much granularity so I need to deploy to collections.

    Is it as simple as creating a 2012R2 package to call:
    rundll32 printui.dll,PrintUIEntry /ga /n”\\OurPrintServer\SomePrinterName”
    or is there something that I am missing?

    1. Jim

      The blog entry defines how to create a printer driver package to deploy to devices. I haven’t used the command you have mentioned to create the printer entry on the device as I would normally use GPP for printer creation. Give it a go and let me know if it was a success or not. Cheers Paul.

  3. I just tried to create one for the Xerox Global and HP Universal Drivers and neither will work. The Xerox one says “The installation package could be opened. Verify that the package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer package.” It works before Orca. The HP one acts like it’s working but encounters an error before completing. Also works before Orca.

  4. NIce Post, i need to know do you have an update tutorial about it for the windows 10 compatible driver? since the windows 10 Driver kits didnt include DIfxApp, so i missing the step in orca .
    thanks

    1. I haven’t looked at this since, apart from another implementation about 6 months ago. I’m not sure at this stage what can be done to assist you with this problem.

      1. same issue as SLAX – I installed a whole load of SDK items in the promise that the difxAPP.msm was available it is not. I did create a Windows 10 compatible driver using the stated method though. Nice job on the post btw! Helped a lot.

  5. HI Paul,

    Thanks for this. I ran through the whole process w/o a single error. The MSI works in that when you run it there are no errors and the driver installs flawlessly but doesn’t seem to install quietly.. For the benefit of many the driver we installed is a SHARP PCL6 driver MX4060. It would be immensely helpful if you could explain some of the steps you have taken ( eg adding the row in ORCA and the why the values you added etc). Thanks again.

    1. I’m surprised this still even works, I assume you are doing this for Win 7? It’s 5 years since I did this, I do not know why the setting is 4 if I am honest.

      1. Hi Paul,
        Thanks. This works on W10! So the question is where did you pick up that value? I know I am asking too much here for you to go back 5 years.

        At least if I know why you used the driver kit what it does in your process that will be useful.

        We always come across the odd driver that needs to be pushed out and this seems like a perfect vehicle for that purpose.

        Thanks.

      2. Details on the msidriverpackage custom table are located here https://technet.microsoft.com/en-us/ff549362(v=vs.96). Value 4 means ‘By default, DIFxApp adds an entry to Programs and Features in Control Panel for the driver package that this component represents. This flag configures DIFxApp so that it does not create a Programs and Features entry for the component.’

        Installing the driver kit is required as you need to use the DIFxApp merge module. This module manages the association between the msidriverpackage and the application that installs the driver package, amongst other operations.

Leave a reply to SCCMentor Cancel reply