Munki 7.0.3 Official Release
This is the official release of Munki 7.0.3, a bug-fix update to the Munki tools.
In Munki 7, the command-line tools and their helpers, previously written in Python and requiring a Python interpreter with PyObjC available, have all been rewritten in Swift and are compiled executables.
Supported OSes
- The Munki 7 command-line tools are built with a deployment target of macOS 10.15. That means the code runs on 10.15+, but little testing has been done on OSes prior to macOS 14. Munki 7 drops support for macOS 10.13 and 10.14.
- Managed Software Center has been updated to adopt the new look for macOS 26 (when built using Xcode 26, and when running on macOS 26). It runs as far back as macOS 10.15.
Build info
-
This release was built with Xcode 26.0.1 (17A400) on macOS 26.0.1 (25A362) via a GitHub Actions workflow here: https://github.com/macadmins/munki-builds. It has been signed and notarized by MacAdmins Open Source.
-
You can build this with Xcode 16, but the Managed Software Center application will not adopt all the new macOS 26-specific behavior/appearance.
-
The distribution package now contains a new/additional component package:
com.googlecode.munki.libs. On macOS 10.15 and macOS 11, this package installs a Swift runtime dynamic library needed for some of the Munki command-line tools. In a Munki pkginfo for this release, you should mark that receipt as optional. -
Distribution package version: 7.0.3.5357
- Components:
- com.googlecode.munki.core 7.0.3.5357
- com.googlecode.munki.admin 7.0.3.5357
- com.googlecode.munki.app 7.0.1.5334
- com.googlecode.munki.app_usage 7.0.3.5357
- com.googlecode.munki.launchd 7.0.0.5320
- com.googlecode.munki.pythonlibs 6.7.0.5293
- com.googlecode.munki.libs 5.5
- Components:
Changes/fixes in v7.0.3:
- Fixes for
stage_os_installer:- A fix for an issue that prevented Managed Software Center from launching the macOS installer app https://github.com/munki/munki/commit/7ee04f1435459735faf3e8e55d3fa7fd91e29570
- If the macOS installer app is already staged, don't check for sufficient disk space to download it https://github.com/munki/munki/commit/f91c63a5603d0fd10bee21c92b92c39c6ff71c9d
- A fix for sporadic timeout issues for custom condition scripts, postflight and preflight scripts https://github.com/munki/munki/commit/80754b57a783a754ab2054749c58f6ec46ed1325 Thanks to @MagerValp and @sphen13
munkiimport: Improved warning message when choosing a subdirectory that does not exist or is empty https://github.com/munki/munki/commit/069e7e45dab351707257effbdcddb19674cf43c3- More careful logic when using libedit/readline and inserting default text https://github.com/munki/munki/commit/b08b5800bded2ea9da189794f0e575e99cd871c1
A complete list of changes from the 7.0.2 release is here: https://github.com/munki/munki/compare/v7.0.2...v7.0.3
New features in Munki 7:
- Managed Software Center now supports customization of the sidebar. See https://github.com/munki/munki/wiki/Customizing-Managed-Software-Center-sidebar for details. Thanks to @SteveKueng for the initial implementation.
version_script: pkginfo items may now contain the keyversion_script. The expected value for this key is a string, containing a script that outputs the version number of a currently-installed version of the software, or an empty string (or exits non-zero) if the software is not currently installed. This is a new mechanism Munki can use to determine whether or not an item needs to be installed (or updated). Since it returns a version number, and Munki can use its existing version number logic, in most cases using aversion_scriptwill be superior to using aninstallcheck_script.- During bootstrapping, if on A/C power or battery level is greater than 50% on Intel or greater than 30% on Apple silicon, the status app will prevent the display from going to sleep so that bootstrap progress is displayed. Thanks to @chrisgrande. (See #1215)
Munki 7 removed features:
Some features and capabilities supported by previous versions of Munki are no longer supported:
-
The
startosinstallinstaller_type, used to install macOS major upgrades on Intel Macs is no longer supported. Thestage_os_installerinstaller_type works on both Intel and Apple silicon, and is supported in Munki 7. -
Installation of Apple software updates. Munki 6 does not install Apple updates on Apple silicon, but instead prompts the user to use Apple tools (System Settings app; softwareupdate) to do so. Munki 7 extends this behavior to Intel Macs as well.
-
Apple update metadata (https://github.com/munki/munki/wiki/Pkginfo-For-Apple-Software-Updates) The installer_type
apple_update_metadatais no longer supported. -
The following Adobe installer_types are no longer supported:
- AdobeSetup
- AdobeUberInstaller
- AdobeAcrobatUpdater
- AdobeCS5AAMEEPackage
- AdobeCS5PatchInstaller
- AdobeCCPInstaller
-
Additionally, the following uninstall_methods are no longer supported:
- AdobeSetup
- AdobeUberUninstaller
- AdobeCS5AAMEEPackage
- AdobeCCPUninstaller
-
To use Munki 7 to install Adobe software, use the Adobe admin console to create Apple installer packages (that Munki can install via its support for Apple installer packages).
-
The installer_type
profileis no longer supported. Munki 7 has no support for the installation or removal of configuration profiles, and additionally, support for configuration profile "emulation" has been removed as well. Admins should be using an MDM solution to manage configuration profiles on macOS. -
The
appdmginstaller_type is no longer supported (this has been deprecated for well over a decade): https://github.com/munki/munki/wiki/App-Dmg-Package-Notes -
The
suppress_bundle_relocationpkginfo key is no longer supported. This only ever worked for bundle-style packages. -
The
repochecktool in the attached files ("Assets") is a basic proof-of-concept tool to analyze your Munki repo for pkginfo items that contain things no longer supported by Munki 7. There are currently no options -- it will scan whatever repo your currentmunkiimportpreferences points to.
Middleware:
- Python middleware compatible with Munki 6 will not work with Munki 7. Several popular middleware modules have been ported to Swift using Munki 7's middleware protocol, and are believed to work:
- https://github.com/munki/DemoMiddleware
- https://github.com/munki/AzureStorageMiddleware
- https://github.com/munki/BunnyNetMiddleware
- https://github.com/munki/CloudFrontMiddleware
- https://github.com/munki/GCSMiddleware
- https://github.com/munki/S3Middleware
- Though these ported middleware modules are believed to work, they are not officially supported at this time. My preference would be for others who actually use the modules to take over development, support, and maintenance.
Repo plugins:
- Python repo plugins compatible with Munki 6 will not work with Munki 7. A Swift repo plugin protocol is available, and the MWA2APIRepo plugin was ported to Swift, largely as a proof-of-concept so that vendors who have incorporated Munki into their products and have written repo plugins have example code to follow.
- https://github.com/munki/MWA2APIRepo
Preparing for Munki 7 deployment
There are likely things you as a Munki admin will need to do to prepare for deploying Munki 7 in your organization. Be sure to consult the wiki for information on how you might need to deal with the changes in Munki 7:
https://github.com/munki/munki/wiki/Munki-7-Introduction
Other notes:
- The installer package for this release contains a component package that installs the Python libraries used by Munki 6.7 (aka "munkilib"). This is intended as a transition aid. (We use Sal where I work and some of the Sal reporting scripts import code from inside munkilib). The intention would be for Munki admins to identify these sorts of dependencies and work to eliminate them.
- Installing the Munki 7 package over an existing Munki 6.x install will leave the munki-python symlink and Munki's Python.framework in place. This might be helpful while transitioning, but might also make it easier to miss dependencies on that Python. You might consider removing Munki 6's included Python to see what breaks.