Nose Goes Mac OS
If a prospective customer downloads your software onto Mac OS X 10.8 and it hasn’t been signed, they will see a scary warning:
![Mac Mac](https://gfkdsgn.files.wordpress.com/2019/05/imac-popart-icare-big-brother-apple-os-x-prism-darwin-privacy-award.jpg?w=960&h=500&crop=1)
Not good. To run unsigned software they need to go into Mac OS X Preferences>Security & Privacy>General and change Allow applications downloaded from Mac App store and identified developers to Anywhere:
Or they need to right/Ctrl click and see another scary warning. Double plus not good. This is the new Mac Gatekeeper system in action. Apple being Apple, Gatekeeper defaults to only allowing users to run software they have downloaded off the Internet if it has been signed. This could have a big effect on your conversion rate on Mac. So if you are shipping software for the Mac, you really need to sign it.
Apple fanboys will tell this is a sensible way for Apple to control software quality. A valid certificate shows that your software hasn’t been tampered with and, if it turns out to be malware, Apple can revoke your certificate. The more cynical might see it as a way for Apple to exert even greater control over Mac developers than it already does, while simultaneously extorting $99 per year from each and every one of them. Make your own mind up on that one.
Combine this with Mac OS X Leopard and iLife ’08, and it’s more all-in-one than ever. Or up to 200 hours of video or any combination wherever you go. Nothing is worse than surfing the Internet and suddenly the connection goes down. Try these tips when your Mac has wifi connection problems.
I have now managed to sign my table planner software, ready for its next release. I should have done it months ago. But I expected the process to be so tedious that it has taken me this long to get around to it. And it was every bit as mind-numbingly tedious as I expected trying to find a few useful nuggets amongst the acres of Apple documentation. I found some useful stuff in blogs, but it was quite fragmented. So I have thrown together these notes in the hope that it saves someone else a few hours going round in circles. Note that I am not currently submitting my software to the Mac App Store, so I don’t cover that here. Also my software is developed in C++/Qt using Qt Creator, rather than Objective-C/Cocoa using XCode, and my approach reflects that.
1. Sign up for Apple Developer Connection ($99 per year). Doesn’t matter if you already paid through the nose for a Windows authenticode certificate. Gatekeeper only accepts Apple certificates, so you have no choice. On the plus side, you do get other benefits, including downloading new OS upgrades for free.
2. You need Mac OS X 10.8 so you can test that your signing works. If you have an Apple Developer Connection subscription, you can download 10.8 for free (get a code from the ADC downloads area and using it in the Mac App Store). I found the upgrade from 10.6 to 10.8 was surprisingly painless (Microsoft eat your heart out).
3. Request your Apple certificates and install them into your Keychain. You can do this from Xcode (instructions here). You may need to upgrade Xcode to a recent version.
4. Use the codesign command line tool to sign:
Tag archive for Mac OS X.
- Every framework in your .app bundle
- Every plugin in your .app bundle
- Your .app file
I believe you can do this as part of your Xcode build. But I prefer a shell script. For example:
echo --sign frameworks --
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Frameworks/QtNetwork.framework/Versions/4/QtNetwork
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Frameworks/QtSql.framework/Versions/4/QtSql
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Frameworks/QtXml.framework/Versions/4/QtXml
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Frameworks/Qt3Support.framework/Versions/4/Qt3Support
Nose Goes Mac Os X
echo --sign plugins--
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Plugins/accessible/libqtaccessiblecompatwidgets.dylib
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Plugins/accessible/libqtaccessiblewidgets.dylib
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Plugins/bearer/libqcorewlanbearer.dylib
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Plugins/bearer/libqgenericbearer.dylib
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Plugins/codecs/libqcncodecs.dylib
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Plugins/codecs/libqjpcodecs.dylib
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Plugins/codecs/libqkrcodecs.dylib
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Plugins/codecs/libqtwcodecs.dylib
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Plugins/graphicssystems/libqtracegraphicssystem.dylib
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app/Contents/Plugins/imageformats/libqjpeg.dylib
echo --sign app--
codesign --force --verify --verbose --sign 'Developer ID Application: <yourID>' <yourApp>.app
I do this in a build shell script that automates the whole process of creating a .dmg for download. I’m not sure if the order you sign the components in is important.
Note that:
- <yourID> is the ID on your certificate (in my case “Oryx Digital Ltd”).
- For frameworks you sign the folder, not the file.
- Any changes to the .app bundle after signing may invalidate the signature (that is kind of the point).
5. Verify the signing of the .app file. For example:
codesign -vvv -d <yourApp>.app
6. Package your .app into a .dmg, .zip, .pkg or whatever other format you use to install it (I believe .pkg files might require additional signing with a different certificate).
7. Make sure your Mac OS X 10.8 machine is set to the default Gatekeeper setting.
8. Download your software onto Mac OS X 10.8 and check if the scary warning has gone away.
9. Pray that Apple doesn’t decide to revoke your certificate at some point for an infraction, real or imagined.
Until you have released a signed version you can put up a warning with some simple Javascript, for example:
Further reading:
Qt related:
Java related:
Thanks to Jonathan of DeepTrawl and Stephane of LandlordMax for some useful pointers.
************** Update **************
Things have changed again for Mac OS X 10.9/10.10. See this post for an update.
Nose Goes Mac Os Pro
The classic OS X 10.12, or rather macOS upgrade, introduced tons of features anyone would still want on their Mac. Why? Because, it's well-tested and secure. Now we'll take a quick look at the legendary macOS Sierra upgrade. (In case you want to upgrade your Mac to macOS 10.13 High Sierra, check out this guide.)
Interestingly, it first brought Siri to your Mac. This is great news for everyone who’s already used to her help on iOS. Then, there’s Watch unlocking for Mac, there’s one-click Apple Pay, tabs in apps, and cross-device copypasting. Just to name a few.
So, if you were on the fence about upgrading to Sierra, and in fact, any newer OS, go right ahead. Your Mac deserves a refreshment.
Nose Goes Mac Os 11
How to upgrade macOS: Sierra 10.12 compatibility list
As with the previous versions, macOS Sierra is available for a limited list of Mac models.
Here are the models of Macs that are compatible with macOS 10.12 and can upgrade to Sierra:
MacBook Pro | MacBook Air | Mac mini |
Mid 2010 or newer | Late 2010 or newer | Mid 2010 or newer |
Mac Pro® | MacBook | iMac |
Mid 2010 or newer | Late 2009 or newer | Late 2009 or newer |
Does order matter when you upgrade macOS?
If your current operating system is OS X Lion (10.7), you can skip a few versions, and upgrade directly to macOS High Sierra. To upgrade to Sierra from, say, Mavericks, you’ll have to consequently upgrade to Yosemite and then to El Capitan first.
Check Your macOS for Sierra Compatibility
These OS versions can upgrade to Sierra:
- OS X Mountain Lion v10.8
- OS X Mavericks v10.9
- OS X Yosemite v10.10
- OS X El Capitan v10.11
Here’s how to find out which OS version you’re running now:
- Click Apple icon in the top left corner.
- Choose About this Mac.
- There you have it, in capital letters.
Memory (RAM): 2 GB (preferably 4 GB)
Sierra is pretty lightweight, so you only need 2 GB of RAM to upgrade. Cool, eh?
Disk space: 8 GB of free space on drive.
In the same About this Mac menu select 'Storage' tab. In front of the multi-colored bar, you will see the phrase, 'X.XX GB free out of XX.XX GB.' If you don't have at least 8 GB of free space, you should delete some old files.
Before you update macOS, don’t forget to:
Nose Goes Mac Os Catalina
Clean up your Mac
This is essential if you want a fast and effortless update, and glitchless work of your new macOS. And it’s also pretty easy. To give your Mac a cleanup, you need to get rid of system junk, uninstall extra apps, and clean some old caches. If that sounds like a lot of work, you can get a Mac cleaner like CleanMyMac for the job.
How to update your Mac: Clean it up first
- Launch it.
- Hit Scan to find all the extra files you can delete.
- Press Run.
As you can see, I have 8.56 GB worth of caches, obsolete language files, broken downloads. You'll feel great getting rid of them.
That will give your Mac a basic system cleanup, but CleanMyMac is going to come in handy after the update as well. It monitors your Mac’s health, helps you speed up the system and remove unnecessary apps (Trashing doesn’t fully uninstall apps, by the way).
Back up your Mac
This is basic common sense before any Mac software update you’d like to undertake. Why? Well, because sometimes updates happen less smoothly than you’d like them to. To make sure you have all your information and files saved up neatly, you need a backup. To back up your Mac, you need to activate Time Machine.
- Open your Applications folder.
- Choose Time Machine.
- 'Select Backup Disk…'
Note: You may need to first choose to 'Set Up Time Machine.' - Choose where you'd like to store your backup.
- Both an external drive or an Airport Time Capsule fit.
- Switch the toggle on the left, from 'OFF' to 'ON.' Right beneath the name of your storage device, you'll see 'Oldest backup,' 'Latest backup,' and 'Next backup' — Your backup will begin within 5 minutes. To speed it up, click the arrow clock icon next to the Date & Time at the top-right of the menu bar and select 'Back Up Now.'
How to download macOS Sierra (or newer macOS) and install it
macOS Sierra is increasingly becoming a relic. Since 2020, the newest available macOS version is Big Sur. But it all comes down to hardware. Your Mac can only upgrade to the latest version its hardware can support. If your Mac is from around 2012 it can update as high up as to macOS Catalina. If your Mac is from 2010 or older, its limit is macOS High Sierra.
To download any new macOS and install it you’ll need to do the next:
1. Open System Preferences... in the Apple menu.
2. Click on Software Updates.
On top of the list you'll see the latest macOS version your Mac can download. In our case, it's macOS Big Sur.
Another way to do it is via the Mac App Store.
- Open App Store.
- Click the Updates tab.
- You’ll see macOS updates available for your Mac.
- Click Update.
Wait for macOS download and installation. Your Mac will restart when it’s done.
Now you have a new OS.
For historic interest, this is how macOS Sierra looked back then when it was still available in the Mac App Store. Now, it can't be found there anymore.
Download macOS installers directly from Apple
For users of past operating systems Apple created a handy a list of macOS installers. They go as far back as to macOS Yosemite. The first 3 of them will open and start the update process automatically.
- macOS High Sierra 10.13
The 3 following installers will download macOS as a disk image (.dmg) After you unpack it, the macOS updater app will appear in your Applications.
We hope this guide has been of use, and don’t forget to clean up your Mac and back it up before you get the classic macOS! Cheers.