Skip to content

Commit

Permalink
Version 1.4: Improve reliability when launching Final Cut Pro 7.
Browse files Browse the repository at this point in the history
  • Loading branch information
cormiertyshawn895 committed Jan 19, 2020
1 parent 92cf6b2 commit bf25fcf
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 13 deletions.
2 changes: 1 addition & 1 deletion README.md
@@ -1,4 +1,4 @@
## Retroactive is an app that lets you run Aperture, iPhoto, and iTunes on macOS Catalina. It also lets you run Final Cut Pro 7, Logic Pro 9, and fix Keynote ’09 on macOS Mojave and macOS High Sierra. [Click to download the Retroactive app](https://github.com/cormiertyshawn895/Retroactive/releases/download/1.3/Retroactive.1.3.zip), or [view the release page](https://github.com/cormiertyshawn895/Retroactive/releases).
## Retroactive is an app that lets you run Aperture, iPhoto, and iTunes on macOS Catalina. It also lets you run Final Cut Pro 7, Logic Pro 9, and fix Keynote ’09 on macOS Mojave and macOS High Sierra. [Click to download the Retroactive app](https://github.com/cormiertyshawn895/Retroactive/releases/download/1.4/Retroactive.1.4.zip), or [view the release page](https://github.com/cormiertyshawn895/Retroactive/releases).


### Opening Retroactive
Expand Down
8 changes: 4 additions & 4 deletions Retroactive.xcodeproj/project.pbxproj
Expand Up @@ -602,14 +602,14 @@
CODE_SIGN_ENTITLEMENTS = Retroactive/Support/Retroactive.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 14;
CURRENT_PROJECT_VERSION = 15;
INFOPLIST_FILE = Retroactive/Support/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.13;
MARKETING_VERSION = 1.3;
MARKETING_VERSION = 1.4;
PRODUCT_BUNDLE_IDENTIFIER = com.retroactive.Retroactive;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Retroactive/Libraries/Bridging-Header.h";
Expand All @@ -623,14 +623,14 @@
CODE_SIGN_ENTITLEMENTS = Retroactive/Support/Retroactive.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 14;
CURRENT_PROJECT_VERSION = 15;
INFOPLIST_FILE = Retroactive/Support/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.13;
MARKETING_VERSION = 1.3;
MARKETING_VERSION = 1.4;
PRODUCT_BUNDLE_IDENTIFIER = com.retroactive.Retroactive;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Retroactive/Libraries/Bridging-Header.h";
Expand Down
10 changes: 10 additions & 0 deletions Retroactive/StepThree/ProgressViewController.swift
Expand Up @@ -156,10 +156,15 @@ class ProgressViewController: NSViewController, URLSessionDelegate, URLSessionDa
let macAppBinaryPathUnderscore = "\(appBinaryPath)_"

let kAppKitShimPath = "/Library/Frameworks/AppKit.framework"
// On some machines, dyld doesn't want to load AppKit from /Library/Frameworks. To guarantee the AppKit shim is loaded via
// DYLD_FRAMEWORK_PATH, let's also copy it to the app's Frameworks directory.
let kAppKitSecondaryShimPath = "\(appPath)/Contents/Frameworks/AppKit.framework"

let kLibraryFrameworkPath = "/Library/Frameworks"
let kBrowserKitCopyPath = "\(kLibraryFrameworkPath)/BrowserKit.framework"
let kProKitCopyPath = "\(kLibraryFrameworkPath)/ProKit.framework"
let kAudioToolboxCopyPath = "\(appPath)/Contents/Frameworks/AudioToolbox.framework"
let kCustomSettingsPath = "/Library/Application Support/Final Cut Pro System Support/Custom Settings".fileSystemString

if (fullMode == true) {
// It shouldn't be possible to have ProKit or BrowserKit at /System/Library/Frameworks on High Sierra or Mojave, and deleting them will fail with SIP.
Expand All @@ -168,9 +173,11 @@ class ProgressViewController: NSViewController, URLSessionDelegate, URLSessionDa
self.runTaskAtTemp(toolPath: "/bin/rm", arguments: ["-rf", "/System/Library/Frameworks/BrowserKit.framework"])

self.runTaskAtTemp(toolPath: "/bin/rm", arguments: ["-rf", kAppKitShimPath])
self.runTaskAtTemp(toolPath: "/bin/rm", arguments: ["-rf", kAppKitSecondaryShimPath])
self.runTaskAtTemp(toolPath: "/bin/rm", arguments: ["-rf", kBrowserKitCopyPath])
self.runTaskAtTemp(toolPath: "/bin/rm", arguments: ["-rf", kProKitCopyPath])
self.runTask(toolPath: "/bin/cp", arguments: ["-R", "\(resourcePath)/AppKit", kAppKitShimPath])
self.runTask(toolPath: "/bin/cp", arguments: ["-R", "\(resourcePath)/AppKit", kAppKitSecondaryShimPath])
self.runTask(toolPath: "/usr/bin/ditto", arguments: ["-xk", "\(resourcePath)/AudioToolbox.framework.zip", kAudioToolboxCopyPath])
self.runTask(toolPath: "/usr/bin/ditto", arguments: ["-xk", "\(resourcePath)/BrowserKit.framework.zip", kBrowserKitCopyPath])
self.runTask(toolPath: "/usr/bin/ditto", arguments: ["-xk", "\(resourcePath)/ProKit.framework.zip", kProKitCopyPath])
Expand Down Expand Up @@ -225,6 +232,9 @@ class ProgressViewController: NSViewController, URLSessionDelegate, URLSessionDa
self.runTask(toolPath: "/bin/chmod", arguments: ["+x", appBinaryPath])
self.runTask(toolPath: "/usr/bin/plutil", arguments: ["-replace", kCFBundleVersion, "-string", AppManager.shared.patchedVersionStringOfChosenApp, "Contents/Info.plist"])

// Having custom settings will hang Final Cut Pro at launch, let's delete it.
self.runTask(toolPath: "/bin/rm", arguments: ["-rf", kCustomSettingsPath])

self.stage4Started()
self.runTask(toolPath: "/usr/bin/codesign", arguments: ["-fs", "-", appPath, "--deep"])
self.runTask(toolPath: "/usr/bin/touch", arguments: [appPath])
Expand Down
16 changes: 8 additions & 8 deletions Retroactive/Support/SupportPath.plist
Expand Up @@ -3,21 +3,21 @@
<plist version="1.0">
<dict>
<key>NewVersionVisibleTitle</key>
<string>Retroactive 1.3 contains the following features and is available for download.</string>
<string>Retroactive 1.4 contains the following features and is available for download.</string>
<key>NewVersionChangelog</key>
<string>Adds support for modifying Final Cut Pro 7, Logic Pro 9, and Keynote ’09 to be compatible with macOS Mojave and macOS High Sierra</string>
<string>Resolves an issue where Final Cut Pro 7 may become unresponsive or quit unexpectedly on launch</string>
<key>NewVersionVisibleTitlezhHans</key>
<string>新版本解印 1.3 包含如下功能,现已提供下载: </string>
<string>新版本解印 1.4 包含如下功能,现已提供下载: </string>
<key>NewVersionChangelogzhHans</key>
<string>支持修改 Final Cut Pro 7、Logic Pro 9 和 Keynote ’09 以兼容 macOS Mojave 和 macOS High Sierra</string>
<string>修复了 Final Cut Pro 7 在启动时可能意外退出或停止响应的问题</string>
<key>NewVersionVisibleTitlezhHant</key>
<string>新版本解印 1.3 包含如下功能,現已提供下載:</string>
<string>新版本解印 1.4 包含如下功能,現已提供下載:</string>
<key>NewVersionChangelogzhHant</key>
<string>支持修改 Final Cut Pro 7、Logic Pro 9 和 Keynote ’09 以兼容 macOS Mojave 和 macOS High Sierra</string>
<string>修復了 Final Cut Pro 7 在啟動時可能意外退出或停止響應的問題</string>
<key>LatestZIP</key>
<string>https://github.com/cormiertyshawn895/Retroactive/releases/download/1.3/Retroactive.1.3.zip</string>
<string>https://github.com/cormiertyshawn895/Retroactive/releases/download/1.4/Retroactive.1.4.zip</string>
<key>LatestBuildNumber</key>
<integer>14</integer>
<integer>15</integer>
<key>SupportPathURL</key>
<string>https://raw.githubusercontent.com/cormiertyshawn895/Retroactive/master/Retroactive/Support/SupportPath.plist</string>
<key>ReleasePage</key>
Expand Down

0 comments on commit bf25fcf

Please sign in to comment.