Mass Distro of Copiers and Drivers

TomDay
Release Candidate Programs Tester

We have 20 new Sharp copiers en route for delivery, days ahead of when they were regularly scheduled so of course I'm a little behind in deployment plans. We'll be rolling out the new copiers via Self Service of course to about 1500 clients. Question here on driver rollout. If I have say 5 different drivers that need to be installed on the clients, should I have a policy that runs to install the 5 manufacturer pkg files to all the machines, or use composer to create 1 pkg file that includes all necessary drivers? Last, install the drivers as part of the printer install policy in Self Service?

1 ACCEPTED SOLUTION

stevewood
Honored Contributor II
Honored Contributor II

I would install the 5 manufacturer pkg files as part of the Self Service policy to install the printers. I would use a shell script to add the printers to the machines in that Self Service policy, as well.

Then for machines going forward, I would add the driver files to my initial imaging workflow as well.

View solution in original post

17 REPLIES 17

stevewood
Honored Contributor II
Honored Contributor II

I would install the 5 manufacturer pkg files as part of the Self Service policy to install the printers. I would use a shell script to add the printers to the machines in that Self Service policy, as well.

Then for machines going forward, I would add the driver files to my initial imaging workflow as well.

TomDay
Release Candidate Programs Tester

Great info and thx very much for the quick response @stevewood !

ImAMacGuy
Valued Contributor II

Here's the thing I found with using casper's printer deployment via self service. We have a ton of canon printers across our campus (200+). Initially we set them up and uploaded them to C.Admin and setup the policies for SS which worked probably 80% of the time. But now we're finding that the driver files are out of date and not working with the new OS, so even if I install the new version of the driver to the machines, when the user pulls down the printer definitions, it pulls the old version since that's what was uploaded to C.Admin in the first place. Which means we need to setup all the printers again with the new version of the print driver. With apple going to a yearly update on the OS and the inevitable things that break when doing so (printing broke from 10.8.x to 10.9 for us)... we're looking at just hosting the drivers and then providing documentation for the users to manually map the printers out of AD.

pditty
New Contributor

I'd second Stevewood. Whenever possible stick with the Manufacturer's driver packages. Re-packaging to one driver package reduces flexibility if you ever want to add or remove some of the packages. Also when snapshotting there is always the chance of introducing something unintended and missing your mistake in your testing. Esp. when your running on a tight timeline like you have described.

Best of luck

GabeShack
Valued Contributor III

So with our setup,
We have the self service item install for the specific printer and since we use an apple software update server I only keep updates around that don't cause headaches (IE we don't enable firmware updates at this time through self service) but then issue a command after the printer installs ```
sudo softwareupdate -i -a
``` which then has the computer look to our software update server for the newest printer driver (as well as any other outstanding updates that we have enabled). As long as the machine runs 10.7 or later this should install the newest printer drivers that are enabled which allows me to just keep enabling new printer drivers on my SUS to keep things running smoothly.

This also helps keep our machines consistent with the same versions of things since it happens with each printer add in self service.

Of course this only works for the printer companies that work directly with apple IE: Epson, Cannon, Lexmark, (funny enough) Samsung, HP, Xerox, Brother. I've had to create custom installers for Kyrocera and OCE.

Gabe Shackney
Princeton Public Schools

Gabe Shackney
Princeton Public Schools

donmontalvo
Esteemed Contributor III

@jwojda][/url wrote:

Which means we need to setup all the printers again with the new version of the print driver.

This is why we set up these kinds of workgroup printers (Fiery/Creo RIPs) using lpadmin/lpoptions. Self Service or push via policy. If a new driver is released, update the policy, re-run the policy, the outdated printer in the users' Printers list is updated.

--
https://donmontalvo.com

rtrouton
Release Candidate Programs Tester

I just put up a post on how I'm dealing with Canon printer setups in Self Service and new drivers:

http://derflounder.wordpress.com/2014/02/06/deploying-canon-print-drivers-with-printer-setups-via-ca...

ImAMacGuy
Valued Contributor II

rtrouton - thank you! However we are using the smb printing through the windows print server, which incidentally got fixed in the 4.1.0 driver you used... theoretically that shouldn't be an issue (you're example is using lpd)?

since Casper captures the ppd when you upload the printer definition - how does that work to get it to use the 4.1.0 ppd instead of the one they were originally setup on?

ImAMacGuy
Valued Contributor II
Executing Policy Install Canon Printer Drivers for OS X 10.9... [STEP 1 of 3] Mounting Hoffman to /Volumes/CasperShare... [STEP 2 of 3] Running script Install Canon Print Drivers.sh... Script exit code: 0 Script result: Canon PS 4.1.0 Print Drivers installed [STEP 3 of 3] Copying Canon_4.1.0_PS_Installer.pkg... Installing Canon_4.1.0_PS_Installer.pkg... Successfully installed Canon_4.1.0_PS_Installer.pkg.

I verified the SS policy is set to trigger, and 4.1.0 is in parameter 4, and it's set to run before.. but it still always installs the driver...

rtrouton
Release Candidate Programs Tester

@jwojda,

Do you have one policy or two in play here? The way I have mine setup, the process of setting up a printer uses two policies that work together:

  1. The printer setup policy (one policy per printer in Self Service) - This policy sets up the printer and runs the script that checks the driver.

  2. The driver install policy - This policy is manually triggered by the script which is associated with the individual printer setup policies.

To answer your earlier question, I needed to capture and upload a fresh set of printer definitions. As of this week, all of the Canon printers in my shop's Self Service are using the 4.1.0 PPD.

ImAMacGuy
Valued Contributor II

@rtrouton you're right, I had the policies messed up, looked at it again with fresh eyes and found the error of my ways (it's what I get for doing it late on a friday after a long week).

I added the jamf helper messages to each of the criteria so I can get an idea of what it's doing...

That being said, the logic seems off still when I do the testing on it's own. on my system it returns determines my version is > than 4.1.0 and returns that logic (it should be showing = to 4.1.0).

I tried it on a 10.9.1 system w/o any driver, and it returned that it's = to 4.1.0 - even though the logs on casper show that it's not installed.

xecuting Policy Check Canon Printer driver version... [STEP 1 of 1] Running script Install Canon Print Drivers.sh... Script exit code: 0 Script result: 2014-02-10 07:16:07.445 defaults[28844:507] The domain/default pair of (/Library/Printers/Canon/CUPSPS2/Utilities/Canon CUPS PS Printer Utility.app/Contents/Info, CFBundleVersion) does not exist Canon PS Print Drivers installed

finally, on a system that had version 4.0.0 installed, it displayed that it had the current version.

Executing Policy Check Canon Printer driver version... [STEP 1 of 1] Running script Install Canon Print Drivers.sh... Script exit code: 0 Script result: Canon PS 4.0.0 Print Drivers installed

rtrouton
Release Candidate Programs Tester

@jwojda

In that case, the best fix will be to update the script to check and see if /Library/Printers/Canon/CUPSPS2/Utilities/Canon CUPS PS Printer Utility.app exists. If it doesn't, install the drivers.

I'll update my script to take that into account.

rtrouton
Release Candidate Programs Tester

@jwojda,

I just went back and double-checked running my script against a machine that didn't have /Library/Printers/Canon/CUPSPS2/Utilities/Canon CUPS PS Printer Utility.app and got the following result:

Script result: 2014-02-10 11:02:09.202 defaults[6327:903] 
The domain/default pair of (/Library/Printers/Canon/CUPSPS2/Utilities/Canon CUPS PS Printer Utility.app/Contents/Info, CFBundleVersion) does not exist
Canon PS 4.1.0 Print Drivers not installed. Installing Canon PS 4.1.0 Print Drivers
Checking for policies triggered by "companycanondrivers"...
Gathering Policy Information from https://casper.server.here:8443//...
Executing Policy Push Canon Printer Drivers to Mac...
Downloading BOM for Canon PS 4.1.0 Installer.pkg...
This Apple Package did not have a valid index.bom file. Assuming it is a flat file package.
Downloading http://casper.server.here:80/casper/Packages//Canon PS 4.1.0 Installer.pkg...
Installing Canon PS 4.1.0 Installer.pkg...
Successfully installed Canon PS 4.1.0 Installer.pkg.
Submitting log to https://casper.server.here:8443//...

Can you paste your script somewhere? As is, it appears that the script as written should be able to accomodate the fact that drivers aren't installed.

ImAMacGuy
Valued Contributor II

I have it marked up some to display what it's doing so I could determine which logic is being used at for each scenario.

#!/bin/bash

# Check /Library/Printers/Canon/CUPSPS2/Utilities/Canon CUPS PS Printer Utility.app/Contents/Info.plist
# for the CFBundleVersion key value. It should match the version of the installed drivers.

installed_driver=$(defaults read "/Library/Printers/Canon/CUPSPS2/Utilities/Canon CUPS PS Printer Utility.app/Contents/Info" CFBundleVersion)

# Specify the current driver version
# by setting parameter 4 in the script
# on the JSS

driver_version="$4"

if [[ ${installed_driver} > ${driver_version} ]]; then
  echo "Canon PS $installed_driver Print Drivers installed"
    jamf displayMessage -message "The needed Canon printer drivers have been detected. Canon PS $installed_driver is current, no update necessary."
fi

if [[ ${installed_driver} == ${driver_version} ]]; then
  echo "Canon PS $driver_version Print Drivers installed"
  jamf displayMessage -message "The needed Canon printer drivers have been detected. No update necessary1."
fi

if [[ ${installed_driver} < ${driver_version} ]]; then
  echo "Canon PS $driver_version Print Drivers not installed. Installing Canon PS $driver_version Print Drivers"
  jamf displayMessage -message "The needed Canon printer drivers have not been detected. Installing Canon PS $driver_version Print Drivers before adding the requested printer."
 jamf policy -trigger companycanondrivers
fi

rtrouton
Release Candidate Programs Tester

@jwojda,

Your script looks the same as the one I'm using, so I'm not sure why you're getting different results. Are you running Casper 9.x? I'm running 8.73.

ImAMacGuy
Valued Contributor II

im on 9.23 (whichever one came out last week).

ImAMacGuy
Valued Contributor II

I think I figured out what's wrong. When I changed the $4 from the script (and replaced it with 4.1.0) and removed it from the script options, i re-ran it on a system and found that it correctly identified that the driver was missing.

# Specify the current driver version
# by setting parameter 4 in the script
# on the JSS

driver_version="4.1.0"

when I re-ran the version check it properly identified that 4.1.0 was installed then. Maybe that's the bug in 9.2x and why you didn't see it in 8.73.