10

On July 2009, Apple discontinued Shake. No direct application's replacement was announced by Apple, but some features (stabilize and optical flow estimation, to name a few) are now available in Final Cut Pro X 10.4 and Motion 5.4 in 2018.

Apple Shake was built on 32-bit Carbon API. I surely understand it's not 64-bit Cocoa API, these APIs are different. But Carbon.framework is still included in /System/Library/Frameworks/ in High Sierra, Sierra or El Capitan, and great old apps (such as Shake, Color, Soundtrack Pro) can use it.

I'm still using Shake in High Sierra launching shake via Terminal app:

enter image description here

enter image description here

But I can't (for obvious reason) launch Shake via clicking its icon in Applications folder:

enter image description here

So I have two questions:

  1. What should I do to bypass this OS limitation and to make Shake run after clicking its icon in Applications folder or on Dock?

  2. If the first is impossible, how to get rid of white crossed-out circle overlay on Shake's icon (regular icon replacement isn't working in this case)?

P.S.

I FOUND POSSIBLE SOLUTION (thanks to Thomas Voßen): Shake on Mac OS X 10.11.6

  1. Make a duplicate of Shake.
  2. Select "Show Package Contents"
  3. Go to the "Contents" folder and open Info.plist. Xcode has a plist editor.
  4. Edit the entry com.apple.shake and change it to something like com.apple.shake4.
  5. Save the plist file.

Now it's possible to start Shake with a double click from the Finder in High Sierra 10.13.5.

But there's no Info.plist file in Contents folder.

  • 1
    I think Apple has some kind of old app blacklist built into the OS, which stops certain old apps from launching. No idea why. iMovie HD does the exact same thing—launches fine from terminal, but gives that message if you try to start it normally. – Wowfunhappy Jul 7 '17 at 19:50
  • Idea is simple: stop supporting old APIs )) – user243793 Jul 7 '17 at 19:51
  • 1
    But the APIs themselves are still in tact, as evidenced by the fact that you can start the binary directly via terminal. So they're just outright blocking an app that would otherwise work fine. – Wowfunhappy Jul 7 '17 at 19:53
  • Intact, but most likely officially deprecated. – calum_b Aug 20 '17 at 19:10
7
+50

Your question answers itself.

Apple Shake was built on 32-bit Carbon API. I surely understand it's not 64-bit Cocoa API

Leaving aside the 32 bit versus 64 bit argument; Cocoa is entirely different than Carbon. It's not going to run because the APIs that Shake is referring to (Carbon) are not compatible with what you are running now (Cocoa).

It's important to note that Carbon was deprecated in 2012 with the release of Mountain Lion (OS X 10.8.x). Remember, why and when Apple adds/removes features is entirely their prerogative.

In 2012, with the release of OS X 10.8 Mountain Lion, most Carbon APIs were considered deprecated. The APIs are still accessible to developers and all Carbon applications will run, but the APIs will no longer be updated.

As for Shake running in Terminal, this is an entirely different scenario - Cocoa and Carbon do not come into play - it's strictly a text based interface.

UPDATE: After a bit of research, I discovered two things:

  • Shake has been relegated to "incompatible software" and Finder will not launch it. Period.

  • There's a workaround (see below) to get it functional in El Capitan because the Carbon libraries are still included, though deprecated. Note: This has not been tested/confirmed in Sierra/High Sierra. As this is deemed "Incompatible Software" by Apple, there's no guarantee that the workaround will fully work or for how long. YMMV.

Work Around

  1. Right-click Shake.App
  2. Go to Show Package Contents.
  3. Go to Contents --> MacOS --> shake (select shake not tshake);
  4. Double-click shake. It should first open a Terminal Window and then Shake should be running.
  5. Create an alias (a shortcut) of the file and place it whenever you want. Launchpad will not be able to see it, though you can have the shortcut/alias in your Applications folder.
  • I agree with you but... If I install Shake on Mac OS X 10.9 and then perform installation of OS X 10.11 (not clean install), Shake works well via UI and via Terminal in El Capitan. And there's no crossed-out white circle on Shake's icon. It's quite strange. – user243793 Jul 4 '17 at 21:35
  • 1
    So, you are installing Shake on a system with the requisite UI libraries then upgrading but when you install on a a system without said libraries it doesn't work? With 10.8.x, Carbon was considered deprecated - meaning it was included but not updated. 2 versions later Apple obviously stopped including the libraries. – Allan Jul 4 '17 at 21:39
  • Again agree. Can I resurrect Shake in UI of El Capital? I mean to make it launch clicking its icon? – user243793 Jul 4 '17 at 21:44
  • Start with this: apple.co/2tHY9qp Coco is literally the topmost layer in the framework where as CLI tools operate near the bottom at the Core OS layer. – Allan Jul 5 '17 at 10:21
  • I've already read it. Seemingly we are talking about different things. The point is – if I type "shake" in Terminal, I'll get Apple Shake's GUI (not the hidden Apple Shake controlled by command line). I get Apple Shake built on Carbon API (not its engine with text based interface). – user243793 Jul 5 '17 at 16:54
5

This is me thinking out aloud, so to speak, but one thing also worth trying is to use either AppleScript or Automator to create an application to do what you're now doing manually via Terminal. Once you've done that, adding the application to your Applications folder will make it available to Launchpad, the Dock, etc.

I'm not sure how familiar you are with either AppleScript or Automator, but using Automator as an example the process would broadly be along these lines:

  1. Launch Automator (usually found within your Applications folder)
  2. Go to File > New
  3. Select Application and click Choose.
  4. Above the second column (more on the lefthand side) you'll see a search field at the top of a long list
  5. Type "Run" in the field to filter the list
  6. One of the options will be Run Shell Script
  7. Double-click on this option
  8. This will add the Run Shell Script window on the right.
  9. Now configure and enter the script you need to replicate what you're already doing
  10. Go to File > Save (or use commandS) to save this as an application

Now you should be able to double-click on the application you've created to launch Shake. You can also change the application's icon to whatever you want, add it to the Dock, etc. This will also be available in Launchpad.

NOTE: - I'm not sure if I've still got Shake installed on one of my Macs, so I haven't tested this to make sure it'll work with Shake specifically, but in theory it should be fine based on what you're already doing.

5

It works in macOS 10.13.5 High Sierra. I've made an Info.plist and added these lines to it:

<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>Shake</string>
    <key>CFBundleGetInfoString</key>
    <string>Shake version 4.1.1</string>
    <key>CFBundleIconFile</key>
    <string>Shake</string>
    <key>CFBundleIdentifier</key>
    <string>com.apple.shake4</string>
    <key>CFBundleName</key>
    <string>Shake</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
</dict>
</plist>

Carbon API, as well as Cocoa API, is tightly integrated with low-level Core Foundation API (CF).

Here's useful information about Bundles in macOS and iOS:

Bundle Programming Guide – About Bundles

Bundle Programming Guide – Bundle Structures

Now, clicking Shake's icon on Dock I can launch Shake in High Sierra's GUI.

enter image description here

I can run it not only from Launchpad but also via Terminal as well. It simultaneously allows me to run multiple instances of Shake.

enter image description here

  • That's great! I'm glad you found a solution that works for you. :) And thank you for coming back to share it with the community. I'm sure it'll help others along the way too! – Monomeeth Jul 8 '17 at 11:38

You must log in to answer this question.