Updates cached AltStore bundle when app has been updated

This commit is contained in:
Riley Testut
2019-09-21 16:35:08 -07:00
parent 883e8cfbed
commit f506988296

View File

@@ -170,31 +170,32 @@ private extension DatabaseManager
installedApp.storeApp = storeApp
}
installedApp.version = localApp.version
let fileURL = installedApp.fileURL
if !FileManager.default.fileExists(atPath: fileURL.path)
if !FileManager.default.fileExists(atPath: fileURL.path) || installedApp.version != localApp.version
{
do
{
try FileManager.default.copyItem(at: Bundle.main.bundleURL, to: fileURL)
let infoPlistURL = fileURL.appendingPathComponent("Info.plist")
// TODO: Copy to temporary location, modify it, _then_ copy to final destination.
guard var infoDictionary = Bundle.main.infoDictionary else { throw ALTError(.missingInfoPlist) }
infoDictionary[kCFBundleIdentifierKey as String] = StoreApp.altstoreAppID
try (infoDictionary as NSDictionary).write(to: infoPlistURL)
}
catch
{
print("Failed to copy AltStore app bundle to its proper location.", error)
try? FileManager.default.removeItem(at: fileURL)
FileManager.default.prepareTemporaryURL() { (temporaryFileURL) in
do
{
try FileManager.default.copyItem(at: Bundle.main.bundleURL, to: temporaryFileURL)
let infoPlistURL = temporaryFileURL.appendingPathComponent("Info.plist")
guard var infoDictionary = Bundle.main.infoDictionary else { throw ALTError(.missingInfoPlist) }
infoDictionary[kCFBundleIdentifierKey as String] = StoreApp.altstoreAppID
try (infoDictionary as NSDictionary).write(to: infoPlistURL)
try FileManager.default.copyItem(at: temporaryFileURL, to: fileURL, shouldReplace: true)
}
catch
{
print("Failed to copy AltStore app bundle to its proper location.", error)
}
}
}
// Must go after comparing versions to see if we need to update our cached AltStore app bundle.
installedApp.version = localApp.version
if let provisioningProfile = localApp.provisioningProfile
{
installedApp.refreshedDate = provisioningProfile.creationDate