Run Jamf Policy if An Application(s) isn't Installed

Contributor II

I have policies which install Creative Cloud apps to various labs. Using the web console, I've uploaded the packages in Settings > Computer Management > Packages. I've configured the policy by using the packages payload and put each one separately in there. I've noticed that without any rhyme or reason, some of the packages don't install on some computers. Most of the logs say they failed to download. When I run the policy a second or third time it finally will install.

Because I know inevitably there will be failures, I just end up running the policy again to the entire lab. I feel it is overkill to push the policy which will re-install all of the apps even if it's already installed on the machines. I'm looking for the best way to only install the missing apps. I've started creating SmartGroups that looks for computers that certain apps are not installed on but it just seems so time consuming and less efficient.

My initial overview strategy to resolve this is:
1. Create a policy for each package (done most of them already)
2. Leverage the command "jamf policy -id <number>" to execute needed policies
3. Use a script (using if statements?) to find the app(s) installed status and then run the "jamf policy -id <number> if it needs it. I don't have much scripting knowledge.

Any guidance would be much appreciated.


Contributor III

What we do is have a scoping smart group based on the app not being installed and a daily trigger that checks it's installed... You can have multiple criteria in the smart group to scope the apps in a sensible way.

Valued Contributor

We have smart groups (like the ones shown by @dsavageED) for all the apps we make available in the Self-Service, and we exclude the corresponding smart group from the scope of the policy that installs the app.

The same smart group we use as target for the uninstaller of an app.

As we usually update the inventory only once per week, we trigger an extra update after the install / removal to make sure users get to see the right policies.