Skip to main content
Question

Canon uniFLOW Smart Client for Mac: Creating a Useable PKG Installer

  • May 5, 2023
  • 44 replies
  • 3934 views

Show first post

44 replies

Forum|alt.badge.img+5
  • Contributor
  • January 10, 2024

Hi! As I'm fairly new to packaging apps for MacOS, I'm struggling to accomplish repackaging the uniFLOW installer with the free tool "Packages" (lacking a license for Jamf Composer). I'd be very grateful if somebody could maybe give me some guidance on that!


Hi, If you have Jamf Pro, you should be able to use Composer. You don't need to use it in this case though because it doesn't need to be repackaged. You can use the zip file in your installation policy.


Forum|alt.badge.img+3
  • New Contributor
  • January 10, 2024

Hi! As I'm fairly new to packaging apps for MacOS, I'm struggling to accomplish repackaging the uniFLOW installer with the free tool "Packages" (lacking a license for Jamf Composer). I'd be very grateful if somebody could maybe give me some guidance on that!


Thx, but I intend to use the package with Intune. I’ve also been able to repackage the app using the free application “Packages” in the meantime.


Forum|alt.badge.img+5
  • Contributor
  • January 10, 2024

Thx, but I intend to use the package with Intune. I’ve also been able to repackage the app using the free application “Packages” in the meantime.


I think you can still use the .zip file with a bash script to install it via Intune, but you may want to ask in an Intune-specific forum, or the Mac Admins #microsoft-intune-macos channel.


Forum|alt.badge.img+3
  • New Contributor
  • January 11, 2024

Once the client software is installed, my client is reporting that they are getting errors related to the size of the print jobs. The biggest job was only ~100 pages.

 

"The print job exceeds the maximum allowed file size. Try reducing the print job size, e.g., by printing fewer pages, and then try again".

 

They had to print it in ten jobs, which is insane. I'm wondering if anyone else has ran into this? The only thing related to file size that I can find, is the hard 100 MB limit on emailed jobs. These jobs are initiated from the Mac SecurePrint queue that the macOS uniFLOW Client installs. One of the rejected jobs was 298 MB.

 

I migrated from uniFLOW on-prem. They only started seeing these errors in uniFLOW Online.


Looks like we're on the same boat here... We're also quite annoyed about the artificial (?!) limitations imposed by uniFLOW Online. It's not even possible to properly scan a photo with more than 300dpi, although the Imagerunner Advance device would be able to achieve a much higher resolution...


Forum|alt.badge.img+5
  • Contributor
  • January 15, 2024

Looks like we're on the same boat here... We're also quite annoyed about the artificial (?!) limitations imposed by uniFLOW Online. It's not even possible to properly scan a photo with more than 300dpi, although the Imagerunner Advance device would be able to achieve a much higher resolution...


According to NT-Ware via my client's Canon vendor, the limitation is with Azure and cannot be modified, changed, or overridden. They offered up the drag and drop method in uniFLOW Online as an alternative, but there is a 100 MB limit there as well!

 

The following is the only workaround that I could figure out. If anyone has any other options, please let me know. This is the only documentation on this that I could find, so I am adding some detail here.

 

Use Direct Secure Printing

DSP will allow you to create a print queue pointing to one of the printers configured in uniFLOW Online and make it a sort of local print server. Jobs sent to it are held on that printer until the user prints the job from any of the printers configured in Uniflow.

 

  1. In uniFLOW Online > Extensions, add "Direct Secure Print" and set it to "Enabled".
  2. Select one of the Canon printers onsite. Make sure to use a color printer that has the features that your users use. Go to the printer's http admin page.
  3. In Settings/Registration > Network Settings > Airprint Settings, click the checkbox to enable it and change the name to remove spaces and special characters.
  4. Add the print queue to the desktops with the following command (replace <name> and <ip> with your printer info from step 2):

 

lpadmin -p <Name> -D 'Large Print Jobs' -E -v ipp://<IP>:631/ipp/print -m everywhere

 


Caveats

  • Enabling DSP will make ALL jobs sent to any printer directly Secure Print enabled. If you have any workflows that require print jobs to print automatically, you cannot use this method.

  • Hard drive space allocated is finite (4 GB with 2 GB max for a retained job).

  • It may be confusing to users having another queue, so only deploy it where necessary and provide training.
  • The printer chosen in step 2 must be online and awake in order for it to work, so there are resiliency concerns.

  • Jobs do not appear in the user's print queue in uniFLOW Online, but they will show up when the user logs onto a printer.
  • You will need a large print jobs queue in each location.
  • Limited to 200 users and 2,000 jobs per device.

More info on notes and limitations can be found here:
https://www.nt-ware.com/uniflowonline/doc/eu/contexthelp/#/home/114151/en/help:~:text=Direct%20Secure%20Print-,Direct%20Secure%20Print,In%20this%20section%7C,-The%20Direct%20Secure


Forum|alt.badge.img+3
  • New Contributor
  • June 10, 2024

@andymason , the above presentations is awesome and when we try to implement this package with a post install script via pre-stage enrolment we are not getting the app installed once the enrolement is completed but we see the policy is completed. any thoughts on this ? i suspect that the POST install script does not run on the pre-stage as the mac reboots the moment it completes the enrolment.

 


Forum|alt.badge.img+2
  • New Contributor
  • June 11, 2024

@andymason , the above presentations is awesome and when we try to implement this package with a post install script via pre-stage enrolment we are not getting the app installed once the enrolement is completed but we see the policy is completed. any thoughts on this ? i suspect that the POST install script does not run on the pre-stage as the mac reboots the moment it completes the enrolment.

 


Is there anyway to hide the uniFLOW Smart Client icon from the system tray? I can't seem to find a plist where I can set this setting.


Forum|alt.badge.img+1
  • New Contributor
  • July 11, 2024

Thx, but I intend to use the package with Intune. I’ve also been able to repackage the app using the free application “Packages” in the meantime.


Can you explain how you did it with "Packages" for Intune?


ejadadic
Forum|alt.badge.img+10
  • Contributor
  • August 20, 2024

For some reason this does install but it never runs the uniFlow app.. I don't see it in the system bar or in the Monitor tool. Any suggestion?


Forum|alt.badge.img
  • New Contributor
  • August 26, 2024

For some reason this does install but it never runs the uniFlow app.. I don't see it in the system bar or in the Monitor tool. Any suggestion?


Hey Emir,

Thanks for the time today and expressing the issues with the deployment of the macOS SmartClient.  If Jamf Now will allow me to test these deployment methods the community has created out in my lab, I'll see what I can come up with for you guys.  I'll also see what I can do in aiding our support team here at NT-ware as well.

Regards,

Jeremy


Forum|alt.badge.img+5
  • Contributor
  • August 26, 2024

@andymason , the above presentations is awesome and when we try to implement this package with a post install script via pre-stage enrolment we are not getting the app installed once the enrolement is completed but we see the policy is completed. any thoughts on this ? i suspect that the POST install script does not run on the pre-stage as the mac reboots the moment it completes the enrolment.

 


It's probably not a good idea to install this in your prestage enrollment. Reserve that for things that you absolutely need during the initial enrollment, then put this in a policy with an 'on enrollment' trigger, or leverage DEPNotify or similar to install the software in the order you need.


Forum|alt.badge.img+3
  • New Contributor
  • August 28, 2024

Deploying uniFLOW is really a pain in the a**... I've managed to get the initial installation via Intune to show up on the devices, but no luck with later updates so far...


Forum|alt.badge.img+1
  • New Contributor
  • September 2, 2024

Deploying uniFLOW is really a pain in the a**... I've managed to get the initial installation via Intune to show up on the devices, but no luck with later updates so far...


Can you explain how you did it for Intune?


  • New Contributor
  • August 18, 2025

Same here, pushing the latest pkg from uniflow online server… installs ok but  disappears after restart in the menu bar. .. and if it’s not in the menu bar then it won’t send it to the printer.


tcam
Forum|alt.badge.img+7
  • Contributor
  • October 11, 2025

@sjalski 

I don’t think their post install script takes into account what user the script is running as. 
I’m currently testing with a post script of

#!/bin/bash

/bin/launchctl bootstrap system /Library/LaunchDaemons/com.ntware.UpdaterDaemon.plist
/bin/launchctl bootstrap system /Library/LaunchAgents/com.ntware.PostUpdateLaunchAgent.plist
/bin/launchctl kickstart system/com.ntware.UpdaterDaemon
/bin/launchctl kickstart system/com.ntware.PostUpdateLaunchAgent
/bin/launchctl bootstrap system /Library/LaunchAgents/com.ntware.SmartClient.plist
/bin/launchctl kickstart system/com.ntware.SmartClient

PROCUSER=$(/bin/ls -l /dev/console | /usr/bin/awk '{ print $3 }')
#su -m $PROCUSER -c 'launchctl load /Library/LaunchAgents/com.ntware.SmartClient.plist'
su -m $PROCUSER -c 'launchctl bootstrap /Library/LaunchAgents/com.ntware.SmartClient.plist'

exit 0

I think it would work with just a post install script of 

#!/bin/bash

PROCUSER=$(/bin/ls -l /dev/console | /usr/bin/awk '{ print $3 }')
su -m $PROCUSER -c 'launchctl bootstrap /Library/LaunchAgents/com.ntware.SmartClient.plist'

exit 0

But I haven’t tested that yet. I’m going to talk to canon on monday. to see if I can give nt-ware feedback on this. 


tcam
Forum|alt.badge.img+7
  • Contributor
  • October 11, 2025

@sjalski 

If your not already doing so,

 

With macOS 13.0 onward you would also want to approve uniFlow to run at sartup, and login by deploying a configuration profile for Managed Login Items. If your already deploying a profile for Managed Login Items, you can just add NT-Ware by Apple Developer TeamIdentifier 4M6FV5A8E6 .

 

But if you don’t already have a configuration profile to deploy Managed Login Items. Here is an example to approve NT-Ware by Apple Developer TeamIdentifier 4M6FV5A8E6 for Managed Login Items on macOS 13.0 or greater.

 

Create a smart group of macOS >= 13.0.0

  1. in Jamf Pro Admin goto computers > Smart Groups > + New button
  2. In the Computer Group Tab Set the Smart Group Name to macOS >= 13.0.0
  3. Click on the Criteria Tab
  4. Click + Add buttton
  5. Click Show Advanced Criteira button
  6. Use commad + F to search Operating System Version, Click the Choose button to the right of Operating System Version
  7. Change Operator to greater then or equal to
  8. Set value to 13.0.0
  9. Click Save Button

Create Confgiuration Profile to Approve NT-Ware by Apple Developer TeamIdentifier 4M6FV5A8E6 for Login and Startup Items

  1. in Jamf Pro Admin goto computers > configuration profiles > + New button
  2. Set Name to Login Item NT-Ware Uniflow
  3. In the left column of the profile, scroll down to, and click on Managed Login Items
  4. For the right column of the profile, in the Managed Login Items, click + Add
  5. Set Rule type to Team Identifier
  6. Set Rule value to 4M6FV5A8E6
  7. Set Note value to NT-Ware for Uniflow
  8. Click on the scope tab
  9. In Selected Deployment Targets click +Add
  10. In Deployment Targets, Click on Computer Group tab
  11. search for macOS >= 13.0.0
  12. click on Add to the right of the search results macOS >= 13.0.0 
  13. ciick Save

 

Using team identifier is more secure then using path. It also coveres all their startup, and login items that use the team identifier, without you needing to know what they are, or where they are. 


tcam
Forum|alt.badge.img+7
  • Contributor
  • October 13, 2025

On uniflow 2025.3.0, 

 

If your re-install over an existing installation, i’ve noticed that a manual install doesn’t always. Doesn’t always restart the SmartClient App. As in goto the menu bar, choose about, and it may still show the old install information. If you quit and re-open it seems to show the correct information. 

If your seeing the issue during deployment. You migth want quit and re-open the SmartClient. 

#!/bin/bash

#quit smartClient
killall SmartClient

/bin/launchctl bootstrap system /Library/LaunchDaemons/com.ntware.UpdaterDaemon.plist
/bin/launchctl bootstrap system /Library/LaunchAgents/com.ntware.PostUpdateLaunchAgent.plist
/bin/launchctl kickstart system/com.ntware.UpdaterDaemon
/bin/launchctl kickstart system/com.ntware.PostUpdateLaunchAgent
/bin/launchctl bootstrap system /Library/LaunchAgents/com.ntware.SmartClient.plist
/bin/launchctl kickstart system/com.ntware.SmartClient

PROCUSER=$(/bin/ls -l /dev/console | /usr/bin/awk '{ print $3 }')
#su -m $PROCUSER -c 'launchctl load /Library/LaunchAgents/com.ntware.SmartClient.plist'
su -m $PROCUSER -c 'launchctl bootstrap /Library/LaunchAgents/com.ntware.SmartClient.plist'

exit 0

 

If you have silent registaration enable. After install, registered client can popup.
It will list the current user, and the option to registered. The only way not to register, is to close the window, quick cloes the smartclient, which then has to be manully re-opened. 

I’m also seeing the same behavior if I run the uniflow uninstall script, before installing uniflow.

/etc/smartclient/uninstall-smartclient.bash

 


tcam
Forum|alt.badge.img+7
  • Contributor
  • October 14, 2025

With Jamf Pro, You can also deploy uniflow without building a re packaging the pkg.

 

Create a script in jamf pro > settings > scripts.
Copy/paste this script into a new blank script. 
It wil be used to create the .tenantcfg.plist in /Library/Application\ Support/JAMF/Waiting\ Room/ 

#!/bin/bash

#quit smartClient
killall SmartClient

#uninstall client
#/etc/smartclient/uninstall-smartclient.bash

#remove old plist
rm /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist

/usr/libexec/PlistBuddy -c "Add :InstallerId string \"YOUR_InstallerId_HERE\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :InstallerName string \"YOUR_InstallerName_HERE\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :ProductVersion string \"YOUR_ProductVersion_HERE\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :PackageVersion string \"YOUR_PackageVersion_HERE\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :UFOTenantDomain string \"YOUR_UFOTenantDomain_HERE\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :SCStartOption string \"direct\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :UseIPP string \"YOUR_UseIPP_HERE\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :SecurePrintQueueName string \"YOUR_SecurePrintQueueName_HERE\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :IgnoreSystemLoginInformation string \"YOUR_IgnoreSystemLoginInformation_HERE\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :UsePublicPrintMode string \"false\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :SupportFinishingOptions string \"YOUR_SupportFinishingOptions_HERE\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist
/usr/libexec/PlistBuddy -c "Add :SilentUserRegistration string \"YOUR_SilentUserRegistration_HERE\"" /Library/Application\ Support/JAMF/Waiting\ Room/.tenantcfg.plist


If you have your uniflow iso mounted, you can read the plist using the terminal command

defaults read /Volumes/SmartClientMac/.tenantcfg.plist

You will need to replace YOUR_*_HERE with the values from the .tenantcfg on the ios created from uniflow.

 

One you uploaded the PKG, For your policy 

Add your uniflow PKG, set to cache

add your uniflow pkg again, set to install cache

attach the above script to the policy set to run before

 


DanTaylor
Forum|alt.badge.img+3
  • New Contributor
  • January 2, 2026

This was extremely helpful, wondering if anyone found a way to set the uniflow smart client printer as default on users Mac via Jamf Pro?