How to Distribute Power Manager Settings

A guide showing how to create an installer package containing Power Manager settings.

Let’s create a tiny Installer package containing Power Manager’s settings. With this package you will have an easy way to distribute schedules, licences, and events across your computers.

Create Your Settings

The first step is to install and set up Power Manager on a single computer. On this computer, create your schedule, apply your licence, and change any other settings you want to apply to your other computers. In the next step we will copy these settings.

Prepare the Package Files

Next we prepare the files to package. The following commands create a folder on the Desktop and then copy Power Manager’s preferences into the folder:

mkdir -p ~/Desktop/pmsettings/root
cp /Library/Preferences/ ~/Desktop/pmsettings/root/.

Power Manager’s Scheduler must not be running when the preferences file is altered. Thus our package needs to stop the Scheduler, and then write the preferences file.

We can ensure the Scheduler is not running by unloading its launchd job before installing. Thus a preinstall script is needed:

mkdir ~/Desktop/pmsettings/scripts
printf "%s\\n" '#!/bin/sh' 'sudo launchctl unload /Library/LaunchDaemons/' >~/Desktop/pmsettings/scripts/preinstall
chmod +x ~/Desktop/pmsettings/scripts/preinstall

These commands create a scripts folder and a shell script. The preinstall script contains a command to unload Power Manager’s Scheduler.

Contents of preinstall:

sudo launchctl unload /Library/LaunchDaemons/

Create the Installer Package

The final step is to use macOS’s pkgbuild tool to create the Installer package:

/usr/bin/pkgbuild --identifier com.example.powermanager.settings --install-location /Library/Preferences --root ~/Desktop/pmsettings/root --scripts ~/Desktop/pmsettings/scripts --version 1.0.0 ~/Desktop/pmsettings.pkg

After running this commmand, a new pmsettings.pkg file will appear on your Desktop. This package is complete and ready to use.

You can run this package to update Power Manager’s settings and after restarting the new settings will take affect.

Use this package to distribute Power Manager’s settings across your network.

Troubleshooting and Improvements

Altering preference files on macOS is complicated by macOS’s use of a caching mechanism. Changes made directly to preference files may be ignored or overwritten by macOS. Thus this recipe relies on a restart.

Be sure to increment the version between packages with the same identifier. macOS’s uses the value passed to --version to determine upgrade/downgrade behaviour.

You should consider digitally signing your package. Do this with the /usr/bin/productsign tool.

For more sophisticated configuration, and to avoid the restart, see Power Manager’s File Configuration approach.