diff --git a/AltServer/Devices/ALTDeviceManager+Installation.swift b/AltServer/Devices/ALTDeviceManager+Installation.swift index 6346db94..140293a1 100644 --- a/AltServer/Devices/ALTDeviceManager+Installation.swift +++ b/AltServer/Devices/ALTDeviceManager+Installation.swift @@ -377,47 +377,7 @@ private extension ALTDeviceManager guard !isCancelled else { return completionHandler(.failure(InstallError.cancelled)) } } - if team.type != .free - { - DispatchQueue.main.sync { - let alert = NSAlert() - alert.messageText = NSLocalizedString("Installing this app will revoke your iOS development certificate.", comment: "") - alert.informativeText = NSLocalizedString(""" -This will not affect apps you've submitted to the App Store, but may cause apps you've installed to your devices with Xcode to stop working until you reinstall them. - -To prevent this from happening, feel free to try again with another Apple ID. -""", comment: "") - - alert.addButton(withTitle: NSLocalizedString("Continue", comment: "")) - alert.addButton(withTitle: NSLocalizedString("Cancel", comment: "")) - - NSRunningApplication.current.activate(options: .activateIgnoringOtherApps) - - let buttonIndex = alert.runModal() - if buttonIndex == NSApplication.ModalResponse.alertSecondButtonReturn - { - isCancelled = true - } - } - - guard !isCancelled else { return completionHandler(.failure(InstallError.cancelled)) } - } - - if let certificate = certificates.first - { - ALTAppleAPI.shared.revoke(certificate, for: team, session: session) { (success, error) in - do - { - try Result(success, error).get() - self.fetchCertificate(for: team, session: session, completionHandler: completionHandler) - } - catch - { - completionHandler(.failure(error)) - } - } - } - else + func addCertificate() { ALTAppleAPI.shared.addCertificate(machineName: "AltStore", to: team, session: session) { (certificate, error) in do @@ -458,6 +418,51 @@ To prevent this from happening, feel free to try again with another Apple ID. } } } + + if let certificate = certificates.first + { + if team.type != .free + { + DispatchQueue.main.sync { + let alert = NSAlert() + alert.messageText = NSLocalizedString("Installing this app will revoke your iOS development certificate.", comment: "") + alert.informativeText = NSLocalizedString(""" + This will not affect apps you've submitted to the App Store, but may cause apps you've installed to your devices with Xcode to stop working until you reinstall them. + + To prevent this from happening, feel free to try again with another Apple ID. + """, comment: "") + + alert.addButton(withTitle: NSLocalizedString("Continue", comment: "")) + alert.addButton(withTitle: NSLocalizedString("Cancel", comment: "")) + + NSRunningApplication.current.activate(options: .activateIgnoringOtherApps) + + let buttonIndex = alert.runModal() + if buttonIndex == NSApplication.ModalResponse.alertSecondButtonReturn + { + isCancelled = true + } + } + + guard !isCancelled else { return completionHandler(.failure(InstallError.cancelled)) } + } + + ALTAppleAPI.shared.revoke(certificate, for: team, session: session) { (success, error) in + do + { + try Result(success, error).get() + addCertificate() + } + catch + { + completionHandler(.failure(error)) + } + } + } + else + { + addCertificate() + } } catch {