Skip to content

What Xolo Does

Chris Lasell edited this page Oct 3, 2025 · 3 revisions

What Xolo actually does

These are the objects one would have to create and maintain in the Title Editor and Jamf Pro GUI WebApps to manage Xolo titles and versions manually. Xolo merely provides command-line-based automation and standardized names and processes for these actions. This makes doing so feasible at the scale of hundreds of titles, many of which are updated daily by developer workflows.

In the Title Editor, Xolo just maintains the titles and versions as defined.

In Jamf Pro, it maintains:

  • 4 objects for Xolo itself
  • 4-9 objects for each title
  • 4-6 objects for each version of a title

Note that while Xolo maintains titles and versions in the Title Editor, and packages, patches, and policies in Jamf Pro , it doesn't manage everything that might exist in them. Xolo only knows about a title or a version if it's been created using xadm.

In the Title Editor, the Xolo 'title' is the 'id' of the SoftwareTitle, and its Display Name is shown in the web-UI.

Everything that Xolo maintains in Jamf Pro has a meaningful name that starts with 'xolo-'


In the Title Editor

Titles and versions (called 'patches' in the Title Editor) are maintained as-is based on the options provided with xadm.

For each Title:

  • title/id
    • named 'xolo-[title]'
  • display name, publisher, description
  • Extension Attribute (version-script) if needed
  • requirement criteria (identifying macs with any version installed)
    • based on App bundle info or Extension Attribute
  • A 'stub' version '0.0.0x0' which is never installed anywhere
    • It is used to 'activate' the title in Jamf Pro immediately when created, before any 'real'versions are added.
    • This makes the functioning of Xolo much more stable, due to the disconnect between Jamf Pro and the Title Editor

For each Version/Patch:

  • version, order, release date, minimum os, reboot, standalone
  • killapps - identifying apps that must be quit in order to install this version
  • component criteria - identifying macs with this version installed
  • capability criteria - identifying macs that can run/install this version

In Jamf Pro

Xolo maintains many objects in Jamf Pro in order to provide both manual and automatic tasks related to deploying and maintaining software.

For Xolo as a whole

  • A Jamf Package object that installs a JSON file of data about all known Xolo titles and versions, for use by xolo on managed Macs

    • Named 'xolo-client-data', filename 'xolo-client-data.pkg'
    • The .pkg is updated and re-deployed whenever a title or version changes
    • xolo uses this for access to title and version info without having to reach out to a server (which requires credentials)
  • Two policies that install the package of client data

    • One named 'xolo-client-data'
      • Runs at least daily on all computers, or soon after any title or version changes
    • One named 'xolo-client-data-manual'
      • Runs 'ongoing' with manual trigger 'update-xolo-client-data'
  • One category 'xolo'

    • Everything maintained by xolo which can have an assigned category is assigned to this one.
    • If a title appears in Self Service, the category in which is is displayed is defined separately.

For each Title

If the title uses a "version script"/Extension Attribute to identify installed versions

  • Auto-accepts (optionally) the Patch Extension Attribute (version script) from the Title Editor
  • Creates a 'normal' Extension Attribute identical to the PatchExtension Attribute, named 'xolo-title-installed-version'
    • This is needed because Patch EAs cannot be used as criteria in normal smart groups, they can only be used by the Patch Management system.

A smart group of Macs with any version installed

  • Named 'xolo-title-installed'
  • Used as a scope exclusion for initial install policies
  • Uses either the "normal" EA created above, or the app-name and app-bundle-id, depending on the title definition

A static group of Macs where the title is frozen

  • Named 'xolo-title-frozen'
  • Used as a scope exclusion for all normal & patch policies for all versions.

A normal policy for manual or Self-service (re-)install of the currently-released version, if there is one

  • Named 'xolo-title-install',
  • The custom trigger is the same.
  • Excluded for:
    • Macs in any of the excluded groups
    • Macs in the server's "forced_exclusions" groups
    • Macs that are frozen for the title

If the title is uninstallable

  • An uninstall script named 'xolo-title-uninstall'
    • Either a custom script, or one based on the pkgutil file data
  • A policy named 'xolo-title-uninstall' that runs that script
    • With a custom trigger of the same name
    • Targets: Macs with the title installed
    • Exclusions: Macs in any excluded group, or in the server's "forced_exclusions" group

If the title is expirable

  • A policy named 'xolo-title-expire' that runs xolo expire _title_ on the clients daily
    • With a custom trigger of the same name
    • Targets: Macs with the title installed
    • Exclusions: Macs in any excluded group, or in the server's "forced_exclusions" group

For each Version

A Jamf package object that installs the version

  • Named 'xolo-title-version', filename is 'xolo-title-version.pkg'
    • The filename uploaded via xadm doesn't matter, it will be renamed on its way.

A normal policy for automated initial-installs

  • Named 'xolo-title-version-auto-install'
  • Trigger: checkin, frequency once-per-computer, retry on fail at next checkin up to 5 times
  • Excluded for
    • Macs with the title already installed
    • Macs in any of the excluded groups
    • Macs in the server's "forced_exclusions" groups
    • Macs that are frozen for the title

A normal policy for manual installs/re-installs

  • Named 'xolo-title-version-manual-install'
  • Excluded for
    • Macs in any of the excluded groups
    • Macs in the server's "forced_exlusions" groups
    • Macs that are frozen for the title
  • NOT excluded for Macs with the title installed
    • Allows re-installation and one-off pilot installation

A smart-group of macs with this version installed, if needed

This group is only created if the .pkg for the version is re-uploaded with a newer one. See below.

  • Named 'xolo-title-version-installed'
  • Used as the scope targets for the auto-re-install policy
  • Uses either the "normal" EA created above, or the app-name and app-bundle-id, whichever is used by the title

A normal policy for automatic re-installs, if needed

This policy is only created when a new pkg is re-uploaded for a version. It allows automated re-installs when the .pkg has changed but the version has not (meaning that the Patch Policy won't re-install it)

  • Named 'xolo-title-version-auto-reinstall'
  • Targets: all Macs with this version installed
  • Trigger: checkin, frequency once-per-computer, retry on fail at next checkin up to 5 times
  • Excluded for
    • Macs in any of the excluded groups
    • Macs in the server's "forced_exlusions" groups
    • Macs that are frozen for the title

A Patch Policy for automated updates to this version.

  • Named 'xolo-title-version'
  • Excluded for
    • Macs in any of the excluded groups
    • Macs in the server's "forced_exlusions" groups
    • Macs that are frozen for the title

Clone this wiki locally