Skip to content
This repository was archived by the owner on Aug 11, 2024. It is now read-only.

Commit bf25fcf

Browse files
Version 1.4: Improve reliability when launching Final Cut Pro 7.
1 parent 92cf6b2 commit bf25fcf

File tree

4 files changed

+23
-13
lines changed

4 files changed

+23
-13
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## 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).
1+
## 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).
22

33

44
### Opening Retroactive

Retroactive.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -602,14 +602,14 @@
602602
CODE_SIGN_ENTITLEMENTS = Retroactive/Support/Retroactive.entitlements;
603603
CODE_SIGN_STYLE = Automatic;
604604
COMBINE_HIDPI_IMAGES = YES;
605-
CURRENT_PROJECT_VERSION = 14;
605+
CURRENT_PROJECT_VERSION = 15;
606606
INFOPLIST_FILE = Retroactive/Support/Info.plist;
607607
LD_RUNPATH_SEARCH_PATHS = (
608608
"$(inherited)",
609609
"@executable_path/../Frameworks",
610610
);
611611
MACOSX_DEPLOYMENT_TARGET = 10.13;
612-
MARKETING_VERSION = 1.3;
612+
MARKETING_VERSION = 1.4;
613613
PRODUCT_BUNDLE_IDENTIFIER = com.retroactive.Retroactive;
614614
PRODUCT_NAME = "$(TARGET_NAME)";
615615
SWIFT_OBJC_BRIDGING_HEADER = "Retroactive/Libraries/Bridging-Header.h";
@@ -623,14 +623,14 @@
623623
CODE_SIGN_ENTITLEMENTS = Retroactive/Support/Retroactive.entitlements;
624624
CODE_SIGN_STYLE = Automatic;
625625
COMBINE_HIDPI_IMAGES = YES;
626-
CURRENT_PROJECT_VERSION = 14;
626+
CURRENT_PROJECT_VERSION = 15;
627627
INFOPLIST_FILE = Retroactive/Support/Info.plist;
628628
LD_RUNPATH_SEARCH_PATHS = (
629629
"$(inherited)",
630630
"@executable_path/../Frameworks",
631631
);
632632
MACOSX_DEPLOYMENT_TARGET = 10.13;
633-
MARKETING_VERSION = 1.3;
633+
MARKETING_VERSION = 1.4;
634634
PRODUCT_BUNDLE_IDENTIFIER = com.retroactive.Retroactive;
635635
PRODUCT_NAME = "$(TARGET_NAME)";
636636
SWIFT_OBJC_BRIDGING_HEADER = "Retroactive/Libraries/Bridging-Header.h";

Retroactive/StepThree/ProgressViewController.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,15 @@ class ProgressViewController: NSViewController, URLSessionDelegate, URLSessionDa
156156
let macAppBinaryPathUnderscore = "\(appBinaryPath)_"
157157

158158
let kAppKitShimPath = "/Library/Frameworks/AppKit.framework"
159+
// On some machines, dyld doesn't want to load AppKit from /Library/Frameworks. To guarantee the AppKit shim is loaded via
160+
// DYLD_FRAMEWORK_PATH, let's also copy it to the app's Frameworks directory.
161+
let kAppKitSecondaryShimPath = "\(appPath)/Contents/Frameworks/AppKit.framework"
162+
159163
let kLibraryFrameworkPath = "/Library/Frameworks"
160164
let kBrowserKitCopyPath = "\(kLibraryFrameworkPath)/BrowserKit.framework"
161165
let kProKitCopyPath = "\(kLibraryFrameworkPath)/ProKit.framework"
162166
let kAudioToolboxCopyPath = "\(appPath)/Contents/Frameworks/AudioToolbox.framework"
167+
let kCustomSettingsPath = "/Library/Application Support/Final Cut Pro System Support/Custom Settings".fileSystemString
163168

164169
if (fullMode == true) {
165170
// 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.
@@ -168,9 +173,11 @@ class ProgressViewController: NSViewController, URLSessionDelegate, URLSessionDa
168173
self.runTaskAtTemp(toolPath: "/bin/rm", arguments: ["-rf", "/System/Library/Frameworks/BrowserKit.framework"])
169174

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

235+
// Having custom settings will hang Final Cut Pro at launch, let's delete it.
236+
self.runTask(toolPath: "/bin/rm", arguments: ["-rf", kCustomSettingsPath])
237+
228238
self.stage4Started()
229239
self.runTask(toolPath: "/usr/bin/codesign", arguments: ["-fs", "-", appPath, "--deep"])
230240
self.runTask(toolPath: "/usr/bin/touch", arguments: [appPath])

Retroactive/Support/SupportPath.plist

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@
33
<plist version="1.0">
44
<dict>
55
<key>NewVersionVisibleTitle</key>
6-
<string>Retroactive 1.3 contains the following features and is available for download.</string>
6+
<string>Retroactive 1.4 contains the following features and is available for download.</string>
77
<key>NewVersionChangelog</key>
8-
<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>
8+
<string>Resolves an issue where Final Cut Pro 7 may become unresponsive or quit unexpectedly on launch</string>
99
<key>NewVersionVisibleTitlezhHans</key>
10-
<string>新版本解印 1.3 包含如下功能,现已提供下载: </string>
10+
<string>新版本解印 1.4 包含如下功能,现已提供下载: </string>
1111
<key>NewVersionChangelogzhHans</key>
12-
<string>支持修改 Final Cut Pro 7、Logic Pro 9 和 Keynote ’09 以兼容 macOS Mojave 和 macOS High Sierra</string>
12+
<string>修复了 Final Cut Pro 7 在启动时可能意外退出或停止响应的问题</string>
1313
<key>NewVersionVisibleTitlezhHant</key>
14-
<string>新版本解印 1.3 包含如下功能,現已提供下載:</string>
14+
<string>新版本解印 1.4 包含如下功能,現已提供下載:</string>
1515
<key>NewVersionChangelogzhHant</key>
16-
<string>支持修改 Final Cut Pro 7、Logic Pro 9 和 Keynote ’09 以兼容 macOS Mojave 和 macOS High Sierra</string>
16+
<string>修復了 Final Cut Pro 7 在啟動時可能意外退出或停止響應的問題</string>
1717
<key>LatestZIP</key>
18-
<string>https://github.com/cormiertyshawn895/Retroactive/releases/download/1.3/Retroactive.1.3.zip</string>
18+
<string>https://github.com/cormiertyshawn895/Retroactive/releases/download/1.4/Retroactive.1.4.zip</string>
1919
<key>LatestBuildNumber</key>
20-
<integer>14</integer>
20+
<integer>15</integer>
2121
<key>SupportPathURL</key>
2222
<string>https://raw.githubusercontent.com/cormiertyshawn895/Retroactive/master/Retroactive/Support/SupportPath.plist</string>
2323
<key>ReleasePage</key>

0 commit comments

Comments
 (0)