- Collin (@dosdude1) has the most user-friendly and reliable patch tool. Julian (@0403979) has an alternate implementation (he recreated Collin's work but with shell scripts) that requires more knowledge but works better in some cases. Both are open source now! It's really just a matter of personal preference.
Open source is good because I can see what it's doing, which is nice. One strange thing I see in the source is that the post installer and the updater do patches differently.
1) The post installer patches are all inside the post installer and use code in the executable to install the patches.
2) The updater patches are downloaded from elsewhere (the source code has the url) and use a shell script inside each downloaded patch to install the patch.
Is there a reason the post installer can't use scripts like the updater? Maybe something about the installer environment makes it not possible?
There are some patches that are unique to the post installer. I don't know why these couldn't be included in the updater.
- "APFS Patch"
- "Platform Check Patch"
There are some updates that are unique to the updater. Why aren't they included in the post installer? Because they are not necessary for boot, and writing scripts to install these is easier than writing Objective-C?
- "Partial Trackpad/Keyboard Patch"
- "IOHIDFamily Stall Patch"
- "Night Shift Patch"
- "Backlight Control Patch"
There are some discrepancies between the post installer and the updater.
- Post installer says "Install Patch Updater" but updater says "Patch Updater".
- Patch IDs mismatch for "Broadcom BCM4321 WiFi Support Patch" (bcm94321Patch/bcm94321). This might be a bug which causes the updater to reinstall the patch even if it's installed by the post installer. This happens only once though because the updater remembers the ids of its patches. My '/Library/Application Support/macOS Catalina Patcher/installedPatches.plist' has both IDs : bcm94321Patch from post installer and bcm94321 from the updater.
The updater has descriptions for each of its patches, but these are only ever displayed once when first installed or when there's an update? It would be useful for the description to appear when a patch is selected. The post installer doesn't have descriptions for its patches so the user might wonder what they are for.
There is some other duplication of information between the post installer and the updater. The post installer has a macmodels.plist file which is a list of Mac models and their recommended set of patches. Conversely, the updater has a updates.plist file (not in the source) which is a list of patches and the Mac models that are supported for each patch. I did not check to see if the info in the two plists matches for the common patches (does recommended = supported?). Since they are different files, there is a chance for discrepancies. If the post installer used the same plist as the updater, then it could read version and name from the plist instead of duplicating the info in source code.