From 310d4619b43ea4b3d481e9cb18c2675f9babe09f Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Wed, 13 Oct 2021 12:55:07 -0700 Subject: [PATCH] [AltServer] Caches iOS and tvOS DeveloperDiskImages to separate locations Previously, DeveloperDiskImages were only differentied by OS version, which meant (for example) iOS 15.0 and tvOS 15.0 disk images were cached to the same location. Now iOS and tvOS disk images are stored separately, so AltServer will no longer try to use a cached disk image for the wrong OS. --- AltServer/DeveloperDiskManager.swift | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/AltServer/DeveloperDiskManager.swift b/AltServer/DeveloperDiskManager.swift index 8f016619..a0995fa0 100644 --- a/AltServer/DeveloperDiskManager.swift +++ b/AltServer/DeveloperDiskManager.swift @@ -85,18 +85,27 @@ class DeveloperDiskManager func downloadDeveloperDisk(for device: ALTDevice, completionHandler: @escaping (Result<(URL, URL), Error>) -> Void) { let osVersion = "\(device.osVersion.majorVersion).\(device.osVersion.minorVersion)" + + let osName: String let osKeyPath: KeyPath switch device.type { - case .iphone, .ipad: osKeyPath = \FetchURLsResponse.Disks.iOS - case .appletv: osKeyPath = \FetchURLsResponse.Disks.tvOS + case .iphone, .ipad: + osName = "iOS" + osKeyPath = \FetchURLsResponse.Disks.iOS + + case .appletv: + osName = "tvOS" + osKeyPath = \FetchURLsResponse.Disks.tvOS + default: return completionHandler(.failure(DeveloperDiskError.unsupportedOperatingSystem)) } do { - let developerDiskDirectoryURL = FileManager.default.developerDisksDirectory.appendingPathComponent(osVersion) + let osDirectoryURL = FileManager.default.developerDisksDirectory.appendingPathComponent(osName) + let developerDiskDirectoryURL = osDirectoryURL.appendingPathComponent(osVersion, isDirectory: true) try FileManager.default.createDirectory(at: developerDiskDirectoryURL, withIntermediateDirectories: true, attributes: nil) let developerDiskURL = developerDiskDirectoryURL.appendingPathComponent("DeveloperDiskImage.dmg") @@ -111,10 +120,6 @@ class DeveloperDiskManager do { let (diskFileURL, signatureFileURL) = try result.get() - - let developerDiskDirectoryURL = FileManager.default.developerDisksDirectory.appendingPathComponent(osVersion) - try FileManager.default.createDirectory(at: developerDiskDirectoryURL, withIntermediateDirectories: true, attributes: nil) - try FileManager.default.copyItem(at: diskFileURL, to: developerDiskURL) try FileManager.default.copyItem(at: signatureFileURL, to: developerDiskSignatureURL)