Where is macOS's incompatible apps blacklist stored?
TinkerTool 5's System Maintenance pane has an app blacklist tab:
https://www.bresink.com/osx/300644207-2/Docs-en/pgs/0110-Info.html
In this menu is a list of apps Finder will refuse to launch, because Apple thinks they're incompatible with the newest version of macOS. Apple is sometimes wrong—some of these apps will (mostly) work if launched via the Terminal. (One prominent example was iMovie HD in macOS Yosemite)
Where in the file system is this blacklist actually stored? Could a SIP-disabled machine make changes to it?
Solution 1:
On Catalina, the incompatible apps are likely determined programmatically when they reference any 32 bit libraries, so that’s an easy check. During installation and migration, the package that contains the blacklist is downloaded:
- When I upgrade from 10.12 to 10.13 High Sierra - where do incompatible items go?
I’m not finding any remnants of that file left around - com.apple.pkg.CompatibilityUpdate but you can see things that are moved to the Incompatible Software folder at the root.
Also, for Catalina, there are efforts to package just enough libraries to run old favorite apps even though Apple isn’t shipping the libraries needed.
- https://tidbits.com/2019/09/18/moving-to-catalina-keep-your-32-bit-mac-apps-running-with-parallels/
- https://www.parallels.com/blogs/catalina-32-bit-apps/
- https://www.dpreview.com/news/1439854984/this-app-can-modify-aperture-and-iphoto-so-they-will-continue-to-work-with-macos-catalina
- https://github.com/cormiertyshawn895/Retroactive
Since Retrocative is open source, there’s hope interested people can log apps they want, contribute or fund people that are able to generate the code needed for preserving vintage bits on more modern OS.
Solution 2:
At least on High Sierra, the blacklist is stored in /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Exceptions.plist
And, yes, it can be edited, provided that System Integrity Protection is disabled. On Catalina, you will probably need to also remount the root filesystem as read write.
-
Make a backup of Exceptions.plist. Always backup system files before making changes!
-
Convert the file from a binary to an xml plist, so it can be edited. Easiest method is to run in Terminal:
sudo plutil -convert xml1 /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Exceptions.plist
-
Open Exceptions.plist in a text editor and find the bundle identifier of the app you want to run. Underneath the identifier should be a
hardDisabled
key which is set totrue
. Change the value tofalse
, and save the file.
Your change will not take effect immediately, and I do not understand what causes it to eventually work. Deleting the app and re-copying it from an installation—if applicable—appears to be the most effective method.
This process was tested in High Sierra with an old version of Final Cut (specifically version 10.1.4).