diff --git a/AltServer/AppDelegate.swift b/AltServer/AppDelegate.swift index 9af8ba7c..2525f6f6 100644 --- a/AltServer/AppDelegate.swift +++ b/AltServer/AppDelegate.swift @@ -14,14 +14,6 @@ import AltSign import LaunchAtLogin import Sparkle -#if STAGING -private let altstoreAppURL = URL(string: "https://f000.backblazeb2.com/file/altstore-staging/altstore.ipa")! -#elseif BETA -private let altstoreAppURL = URL(string: "https://cdn.altstore.io/file/altstore/altstore-beta.ipa")! -#else -private let altstoreAppURL = URL(string: "https://cdn.altstore.io/file/altstore/altstore.ipa")! -#endif - extension ALTDevice: MenuDisplayable {} @NSApplicationMain @@ -139,7 +131,7 @@ private extension AppDelegate { @objc func installAltStore(to device: ALTDevice) { - self.installApplication(at: altstoreAppURL, to: device) + self.installApplication(at: nil, to: device) } @objc func sideloadIPA(to device: ALTDevice) @@ -198,7 +190,7 @@ private extension AppDelegate } } - func installApplication(at url: URL, to device: ALTDevice) + func installApplication(at fileURL: URL?, to device: ALTDevice) { let alert = NSAlert() alert.messageText = NSLocalizedString("Please enter your Apple ID and password.", comment: "") @@ -268,7 +260,7 @@ private extension AppDelegate func install() { - ALTDeviceManager.shared.installApplication(at: url, to: device, appleID: username, password: password, completion: finish(_:)) + ALTDeviceManager.shared.installApplication(at: fileURL, to: device, appleID: username, password: password, completion: finish(_:)) } AnisetteDataManager.shared.isXPCAvailable { isAvailable in diff --git a/AltServer/Devices/ALTDeviceManager+Installation.swift b/AltServer/Devices/ALTDeviceManager+Installation.swift index efc56fdf..e772655e 100644 --- a/AltServer/Devices/ALTDeviceManager+Installation.swift +++ b/AltServer/Devices/ALTDeviceManager+Installation.swift @@ -111,11 +111,11 @@ private extension ALTDeviceManager extension ALTDeviceManager { - func installApplication(at url: URL, to altDevice: ALTDevice, appleID: String, password: String, completion: @escaping (Result) -> Void) + func installApplication(at ipaFileURL: URL?, to altDevice: ALTDevice, appleID: String, password: String, completion: @escaping (Result) -> Void) { let destinationDirectoryURL = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) - var appName = (url.isFileURL) ? url.deletingPathExtension().lastPathComponent : NSLocalizedString("AltStore", comment: "") + var appName = ipaFileURL?.deletingPathExtension().lastPathComponent ?? NSLocalizedString("AltStore", comment: "") func finish(_ result: Result, failure: String? = nil) { @@ -164,7 +164,7 @@ extension ALTDeviceManager { let certificate = try result.get() - if !url.isFileURL + if ipaFileURL == nil { // Show alert before downloading remote .ipa. self.showInstallationAlert(appName: NSLocalizedString("AltStore", comment: ""), deviceName: device.name) @@ -178,7 +178,7 @@ extension ALTDeviceManager fallthrough // Continue installing app even if we couldn't install Developer disk image. case .success: - self.downloadApp(from: url, for: altDevice) { (result) in + self.downloadApp(from: ipaFileURL, for: altDevice) { (result) in do { let fileURL = try result.get() @@ -188,7 +188,7 @@ extension ALTDeviceManager let appBundleURL = try FileManager.default.unzipAppBundle(at: fileURL, toDirectory: destinationDirectoryURL) guard let application = ALTApplication(fileURL: appBundleURL) else { throw ALTError(.invalidApp) } - if url.isFileURL + if ipaFileURL != nil { // Show alert after "downloading" local .ipa. self.showInstallationAlert(appName: application.name, deviceName: device.name) @@ -305,9 +305,12 @@ extension ALTDeviceManager private extension ALTDeviceManager { - func downloadApp(from url: URL, for device: ALTDevice, completionHandler: @escaping (Result) -> Void) + func downloadApp(from url: URL?, for device: ALTDevice, completionHandler: @escaping (Result) -> Void) { - guard !url.isFileURL else { return completionHandler(.success(url)) } + if let url, url.isFileURL + { + return completionHandler(.success(url)) + } self.fetchAltStoreDownloadURL(for: device) { result in switch result