Installing old OS X versions: fixing “OS X could not be installed on your computer”

Here in Belgium schools are locked down due to #coronavirus. With the school of my two oldest kids now switching to remote teaching, I took the time to set up my old MacBook Pro (model late 2008) for my two oldest kids to use. That didn’t go without any hiccups though: the OS X installer refused to install …

The MacBook I had shelved a long time ago was still running OS X Mavericks. As that version was quite showing its age – and didn’t seem to support 2FA for use with my Apple ID – I decided to upgrade it to El Capitan, of which I still had the installer app lying around. I opened up the installer, it prepared some things, and nicely asked to reboot. Upon reboot the installer was ready to install, but when actually starting it greeted me with this error message:

OS X could not be installed on your computer.

No packages were eligible for install. Contact the software manufacturer for assistance. Quit the installer to restart your computer and try again.

Uhoh! Restarting the MacBook, as suggested, did nothing: the installer kept showing that same error message. Trying to change the startup disk to get back into Mavericks (by pressing βŒ₯+R upon starting the machine) also didn’t help, as I could only launch the installer and a recovery partition. Yes, the machine was actually stuck in a loop where it would only launch the installer and the installer wouldn’t install.

~

With a Google Search Coupon in hand I found that the installer refuses service because the certificate it was signed with (some time back in 2015, when El Capitan was released) got expired by now.

Thankfully one can easily circumvent this expiration by simply changing the date of your system. You can do this before starting the installer, or through a Terminal if the installer is already loaded (as it was in my case).

  1. In the OS X Installer, choose Utilities > Terminal.
  2. Enter date 020101012016 and press Enter.
  3. Quit Terminal and reboot to retry the installation.

πŸ’‘ In this particular Terminal you’re running as root, so no need for sudo here πŸ˜‰

Here the date is being set to Feb 1st, 2016. You might need to tweak the date a bit depending on when you downloaded the installer originally (as it might be signed with a different certificate). Be sure to set it no earlier than the release date of the OS X version you’re trying to install.

πŸ’‘ The syntax for the date command is a bit counterintuitive. Choosing your own date will require some puzzling from your end:

date [-jnu] [[[mm]dd]HH]MM[[cc]yy][.ss]

   cc      Century (either 19 or 20) prepended to the abbreviated year.
   yy      Year in abbreviated form (e.g., 89 for 1989, 06 for 2006).
   mm      Numeric month, a number from 1 to 12.
   dd      Day, a number from 1 to 31.
   HH      Hour, a number from 0 to 23.
   MM      Minutes, a number from 0 to 59.
   ss      Seconds, a number from 0 to 61 (59 plus a maximum of two leap seconds).

~

Later versions of OS X, such as High Sierra, have become a bit smarter: they give you the warning upfront – when first launching the Installer.app – instead of after having prepared your disk for installation.

~

Did this help you out? Like what you see?
Thank me with a coffee.

I don't do this for profit but a small one-time donation would surely put a smile on my face. Thanks!

β˜•οΈ Buy me a Coffee (€3)

To stay in the loop you can follow @bramus or follow @bramusblog on Twitter.

Disable all Keyboard and Trackpad Input with Little Fingers

If you have a toddler running around, Little Fingers by Shaun Inman – who created it for his own need – will come in handy.

Little fingers want to explore. Press Shift + Control + Option + Command + L to lock down your Keyboard, Trackpad, Touch Bar, and/or Mouse.

Press it again to unlock.

The source is available on GitHub.

Little Fingers →
Little Fingers Source (GitHub) →

Related: AlphaBaby also comes in handy when having babies/toddlers around πŸ™‚

Targetting the OS X System Font in CSS

body {
  font-family: system-font, -webkit-system-font, -apple-system-font, ".SFNSDisplay-Regular", HelveticaNeue, LucidaGrande;
}

On a fresh install of OS X 10.11 (El Capitan) there’s no San Francisco font installed. But it’s the system font, so how is this possible?

Hence the sort of magic above to actually get it working.

I Left My System Fonts in San Francisco →

Mavericks Multiple Screens vs Jumping Dock

window_drag

When working with Dual/Multiple Screens in OS X Mavericks and having β€œDisplays have separate spaces” switched on, I noticed that the dock would unpredictably switch monitors from time to time. Fed up with this I spent a Google Search Coupon on the issue and guess what: it’s not a bug, it’s a(n undocumented) feature.

To move the Dock to any other monitor, move your mouse cursor to that monitor and – without clicking – pull downwards so that your cursor hitting the bottom edge. After a while the dock will appear right there. Looks like I unwillingly was performing this a few times.

It’s a handy shortcut, but if you don’t know about it it’s very confusing.

Building OS X Apps with JavaScript

post-image-jsosx-controls

OS X Yosemite introduced JavaScript for Automation. This makes it possible to access native OS X frameworks with JavaScript.

The result above can be built using this code:

ObjC.import("Cocoa");

var styleMask = $.NSTitledWindowMask | $.NSClosableWindowMask | $.NSMiniaturizableWindowMask;
var windowHeight = 85;
var windowWidth = 600;
var ctrlsHeight = 80;
var minWidth = 400;
var minHeight = 340;
var window = $.NSWindow.alloc.initWithContentRectStyleMaskBackingDefer(
  $.NSMakeRect(0, 0, windowWidth, windowHeight),
  styleMask,
  $.NSBackingStoreBuffered,
  false
);

var textFieldLabel = $.NSTextField.alloc.initWithFrame($.NSMakeRect(25, (windowHeight - 40), 200, 24));
textFieldLabel.stringValue = "Image: (jpg, png, or gif)";
textFieldLabel.drawsBackground = false;
textFieldLabel.editable = false;
textFieldLabel.bezeled = false;
textFieldLabel.selectable = true;

var textField = $.NSTextField.alloc.initWithFrame($.NSMakeRect(25, (windowHeight - 60), 205, 24));
textField.editable = false;

var btn = $.NSButton.alloc.initWithFrame($.NSMakeRect(230, (windowHeight - 62), 150, 25));
btn.title = "Choose an Image...";
btn.bezelStyle = $.NSRoundedBezelStyle;
btn.buttonType = $.NSMomentaryLightButton;

window.contentView.addSubview(textFieldLabel);
window.contentView.addSubview(textField);
window.contentView.addSubview(btn);

window.center;
window.title = "Choose and Display Image";
window.makeKeyAndOrderFront(window);

By the looks of if you’re writing Cocoa, in a JavaScript syntax. Reminds me of the fact that you can record Photoshop actions in either VBScript or JavaScript code … and even translate those to C#.

Building OS X Apps with JavaScript →

Making ‘git rebase’ Safe on OS X

When performing a large rebase with several commits and many changed files on OS X 10.7+, the rebase process can randomly abort, stating that there are uncommitted changes and rebase cannot continue. However, a git status does not report any changes.

Fix is to set core.trustctime to false. Run the command below to do so:

git config --global core.trustctime false

Detailed explanation: A Simple Tweak for Making ‘git rebase’ Safe on OS X →