Anthony’s Mac Labs Blog

📦 Next Level AutoPkg Workshop at X World

Posted 2024 May 23

It’s been over two weeks since I had the pleasure of co-presenting with James “Sorry James” Smith a half-day workshop on AutoPkg at X World in Melbourne, Australia. I have finally recovered enough from the trip (and a cold!) to gather up the slides and post them here. While this workshop did leverage some of the content Elliot Jordan and I developed for the workshop we gave at the Mac Admins Conference in 2023, there was a lot of new content surrounding recipe reading and writing pkg recipes.

James and Anthony presenting in front of two large displays
Photo: Jon Rhoades

Since the bulk of the workshop involved asking participants to try to read recipes without running them, you can do the same exercise by going through the slides here. I have provided the “key” below (no peeking!) so that you can better understand why each recipe was chosen for examination and what each recipe does.

Recipe Reading Key

  1. smithjw-recipes: Docker.download (YAML, one signature type, path inside dmg)
    • Sidebar: Versioning — might happen in download recipe explicitly, implicitly, or not at all
  2. jazzace-recipes: MacadminsPython.download (plist, GitHub, other signature type, when full pkg downloaded)
  3. (no repo): YAML override of above recipe (command to build w/YAML shown)
  4. recipes: MSTeams2.download (Recipe that changes default input variables)
  5. smithjw-recipes: Webstorm.pkg (uses AppPkgCreator)
    • Sidebar: Processor arguments and processor-info verb
    • Sidebar: Variables — 4 ways to set, can be used once in the environment (this simple child recipe uses all 4)
  6. jazzace-recipes: FinalCutProContent.pkg (extracts existing pkg from dmg and renames)
  7. smithjw-recipes: Zoom_IT.pkg (unpacking for version info, cleanup, shared processors)
    • Sidebar: Custom and Shared Processors (see also Noteworthy Processors in the wiki)
  8. Take-Home Exercise: smithjw-recipes Zoom_IT.pkg vs. jazzace-recipes Zoom-forIT.pkg (Short Answer: Patch)
  9. smithjw-recipes: FrendlyPathDeleter.recipe.yaml (stub for previous recipe; Anthony’s is Processors.stub.recipe)
  10. Advanced Example:
    • smithjw-recipes: GitHub_Desktop-Universal.download (multiple downloads)
    • smithjw-recipes: GitHub_Desktop-Universal.pkg (making a Universal installer out of platform-specific ones, FileCreator for post-install script)
  11. Take-Home Exercises: jazzace-recipes AbletonLiveSassafras.pkg (automate manual vendor instructions), rtouton-recipes any MSOffice recipe (Input variable default change, deconstructing to version)