Skip to content

Deploying xolo

Chris Lasell edited this page Sep 30, 2025 · 3 revisions

Deploying xolo to all managed Macs

These instructions are pretty barebones to start with. They'll be expanded as more folks install and use Xolo.

The xolo command-line tool is used on managed Macs to access some of the extra features of xolo.

It is a single-file zsh script, and is mostly a wrapper around various jamf policy commands.

Because Xolo sits on top of Jamf's own deployment and patch management, you can use Xolo to install xolo

Here's how!

(this is also a simple tutorial for deploying anything with Xolo)

Get a copy of the xolo zsh script

  • You can get it by running xadm save-client
    • It will be saved to /tmp/xolo
    • Its version is the same as the xadm that saved it
      • /tmp/xolo --version will display it
      • xadm --version will display it

Create a 'version-script' so Jamf knows what version is installed

Save this in a file somewhere, make adjustments as needed. It will become an Extension Attribute in Jamf Pro (two, actually)

#!/bin/zsh
[[ -x /usr/local/bin/xolo ]] && res=$(/usr/local/bin/xolo --version)
echo "<result>$res</result>"

Add it as a title to Xolo

It is probably unwise to call it xolo since everything xolo-related in Jamf is prefixed with xolo-. At Pixar, we call this title xoloclient

xadm add-title xoloclient \
  --display-name 'Xolo Client' \
  --publisher 'Pixar Animation Studios' \
  --version-script '/path/to/script/saved/above' \
  --release-groups all \
  --contact-email '[email protected]' \
  --description 'Command-line tool for working with xolo titles and versions on managed Macs.'

Package it up

Since we want to be able to deploy it via MDM using xadm, we need to make a 'distribution` package, which contains a 'component' package.

Create a 'root' folder

This folder represents the boot drive of the mac where the .pkg is installed. We'll be installing xolo into /usr/local/bin

mkdir -p '/path/to/new/root/folder/usr/local/bin'

Move Xolo into the root folder

mv /tmp/xolo '/path/to/new/root/folder/usr/local/bin/'

Build the component package

If you have an installer signing certificate installed in your keychain, add the --sign option

/usr/bin/pkgbuild \
  --root '/path/to/new/root/folder' \
  --identifier 'com.pixar.xoloclient' \
  --version $(xadm --version) \
  --install-location / \
  /tmp/xoloclient-component.pkg

Build the distribuition package

If you have an installer signing certificate installed in your keychain, add the --sign option

If your xoloserver is configured to sign packages, it will sign this one, but not the embedded components

/usr/bin/productbuild \
  --component /tmp/xoloclient-component.pkg \
  --identifier 'com.pixar.xoloclient' \
  --version $(xadm --version) \
  --install-location / \
  /tmp/xoloclient.pkg 

Add the version to Xolo

This will use all default values. See xadm help add-version for more info.

xadm add-version xoloclient $(xadm --version) \
  --pkg-to-upload /tmp/xoloclient.pkg

Pilot on a few machines

  • Wait a few minutes for everything to propagate and update
  • Idenfity a few Macs to install it on

Install via MDM from your machine

xadm deploy xoloclient $(xadm --version) computer-1 computer-2

Install remotely using ssh and jamf binary

ssh user@computer-1 sudo jamf policy -trigger xolo-xoloclient-$(xadm --version)-manual-install

Test it on those machines

Running which xolo and xolo help should be enough to show it works

Release it

xadm release xoloclient $(xadm --version)

Since the title is configured with the release-groups as all it will automatically be installed on all managed macs (except any exclusions you added to the title) the next time they check in.

Clone this wiki locally