Package: macos-pkg-builder
macOS-Pkg-BuilderPython module for creating macOS packages more easily through native tooling (pkgbuild). Primarily developed as an alternative toWhiteBox's Packagesfor easier CI/CD integration.GitHubPyPiUsageInstallation:pip3 install macos-pkg-builderSample invocation:importmacos_pkg_builderpkg_obj=macos_pkg_builder.Packages(pkg_output="Sample.pkg",pkg_bundle_id="com.myapp.installer",pkg_preinstall_script="Samples/MyApp/MyPreinstall.sh",pkg_postinstall_script="Samples/MyApp/MyPostinstall.sh",pkg_file_structure={"Samples/MyApp/MyApp.app":"/Applications/MyApp.app","Samples/MyApp/MyLaunchDaemon.plist":"/Library/LaunchDaemons/com.myapp.plist",},)pkg_obj.build()Format ofPackagesconstructor:"""pkg_output:             Path to where the package will be saved.pkg_bundle_id:          Bundle ID of the package.pkg_version:            Version of the package.Default: 1.0.0pkg_install_location:   Location where the package will be installed.Default: /Optional.pkg_allow_relocation:   Allow the embedded application to be installed where the user has an existing copy (outside expected install location)Requires a valid bundle to be provided in 'pkg_file_structure' (ex. app, plugin, etc.)Default: Truepkg_file_structure:     File structure of the package.Configured as a dictionary, where the key is the source file and the value is the destination.Default: NoneOptional if preinstall or postinstall scripts are provided.pkg_preinstall_script:  Path to the preinstall script.Default: NoneOptional.pkg_postinstall_script: Path to the postinstall script.Default: NoneOptional.pkg_script_resources:   List of additional scripts to be included in the package.This is primarily for pre/postinstall scripts that need additional resources present next to them.ex. Shipping 'desktoppr' with a wallpaper, and have the postinstall script set the wallpaper.pkg_signing_identity:   Signing identity to use when signing the package.If missing, no signing will be performed.pkg_as_distribution:    Convert the package to a product archive.Default: FalseFile Structure:{# Source: Destination"~/Developer/MyApp.app": "/Applications/MyApp.app","~/Developer/MyLaunchDaemon.plist": "/Library/LaunchDaemons/com.myapp.plist",}"""Additional Supported Use CasesBuilding single-use packages that don't leave tooling behindUseful for scenarios where you need to ship additional tools, but don't want to run any additional cleanup scripts to remove them.Below is how to set a wallpaper using Scripting OS X'sdesktoppr:Packages(pkg_output="Sample-Wallpaper.pkg",pkg_bundle_id="com.myapp.wallpaper",pkg_file_structure={"Samples/MyWallpaperConfigurator/Snow Leopard Server.jpg":"/Library/Desktop Pictures/Snow Leopard Server.jpg",},pkg_preinstall_script="Samples/MyWallpaperConfigurator/PrepareDirectory.sh",pkg_postinstall_script="Samples/MyWallpaperConfigurator/SetWallpaper.sh",pkg_script_resources=["Samples/MyWallpaperConfigurator/desktoppr",],),Building a simple uninstallerUseful for when you have a single script you need to execute to remove your application:Packages(pkg_output="Sample-Uninstall.pkg",pkg_bundle_id="com.myapp.uninstaller",pkg_preinstall_script="Samples/MyUninstaller/MyPreinstall.sh",),