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:
- An MSI authoring program – in this instance Advanced Installer (http://www.advancedinstaller.com/download.html)
- The Orca MSI editor – available from http://www.technipages.com/download-orca-msi-editor.html
- The DIFxApp merge module available from the Windows 7 driver kit – http://www.microsoft.com/en-us/download/details.aspx?id=11800
Install the Windows 7 Driver Kit
Extract the GRMWDK_EN_7600_1.ISO file and run the KitSetup.exe file. Install all components
Once installed click Finish.
Install Orca
Run the orca.msi file. Click Next.
Accept the licence agreement and click Next.
Choose a Complete install
Click Install.
Click Finish to complete the installation.
Install Advanced Installer
Run the Advinstl.msi setup file. Click Next.
Click Next to accept the default install location.
Accept the licence agreement and click Next.
Click Install
Click Finish to launch the Advanced Installer.
Create the MSI install
Download any printer drivers and extract to the .inf files.
In Advanced Installer choose a Simple template.
Enter any product details for the drivers. Note that details here will appear in Add/Remove Programs applet.
Click the Files and Folders menu on the left hand pane.
Click the Files icon in the Files and Folders menu.
Navigate to your extracted drivers folder and then click Open.
Click the Home menu and choose Build. Enter a project name and Save.
Click Ok once the MSI has been built.
Open Orca and open the created MSI file. Click Tools>Merge Module.
Click Browse.
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
Click Accept to any merge failures.
In the File table, find the row containing the driver’s .inf file and copy the value from the Component_ column.
Click the MsiDriverPackages table and click Add Row
In the component field paste in the component copied earlier, in this instance aussdrv.dl_
In the Flags field enter the value 4. Save the MSI file.
Installing the MSI file.
Run the final MSI file. Click Next.
Click Next.
Click Install.
Click Ok at the end of the installation.
Click Finish to complete the installation.
To silently install the software run the MSI file with the following switches.
“<filename>.msi” /qn
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.
Sounds like an issue with the Advanced Installer. Have you tried their knowledge base?
I have the same issue, did you figure out the problem?
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)?
Sorted. If you get the error You MUST copy the MSI and not overwrite the original and work with that.
AWESOME Blogpost btw!
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?
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.
Looks awesome, thanks!
Cheers Roel. I actually used my own blog post the other day and even though Advanced Installer has updated since I wrote it it still works a treat.
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.
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
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.
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.
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.
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.
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.
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.