mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-19 19:53:25 +01:00
Fixes potentially incorrect bundle identifier when resigning/refreshing AltStore
This commit is contained in:
@@ -117,12 +117,10 @@ extension FetchProvisioningProfilesOperation
|
|||||||
{
|
{
|
||||||
DatabaseManager.shared.persistentContainer.performBackgroundTask { (context) in
|
DatabaseManager.shared.persistentContainer.performBackgroundTask { (context) in
|
||||||
|
|
||||||
let preferredBundleID: String
|
let preferredBundleID: String?
|
||||||
|
|
||||||
// Check if we have already installed this app with this team before.
|
// Check if we have already installed this app with this team before.
|
||||||
let predicate = NSPredicate(format: "%K == %@ AND %K == %@",
|
let predicate = NSPredicate(format: "%K == %@", #keyPath(InstalledApp.bundleIdentifier), app.bundleIdentifier)
|
||||||
#keyPath(InstalledApp.bundleIdentifier), app.bundleIdentifier,
|
|
||||||
#keyPath(InstalledApp.team.identifier), team.identifier)
|
|
||||||
if let installedApp = InstalledApp.first(satisfying: predicate, in: context)
|
if let installedApp = InstalledApp.first(satisfying: predicate, in: context)
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
@@ -139,14 +137,36 @@ extension FetchProvisioningProfilesOperation
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
// This app is already installed, so use the same resigned bundle identifier as before.
|
// Teams match if installedApp.team has same identifier as team,
|
||||||
// This way, if we change the identifier format (again), AltStore will continue to use
|
// or if installedApp.team is nil but resignedBundleIdentifier contains the team's identifier.
|
||||||
// the old bundle identifier to prevent it from installing as a new app.
|
let teamsMatch = installedApp.team?.identifier == team.identifier || (installedApp.team == nil && installedApp.resignedBundleIdentifier.contains(team.identifier))
|
||||||
preferredBundleID = installedApp.resignedBundleIdentifier
|
|
||||||
|
if teamsMatch
|
||||||
|
{
|
||||||
|
// This app is already installed with the same team, so use the same resigned bundle identifier as before.
|
||||||
|
// This way, if we change the identifier format (again), AltStore will continue to use
|
||||||
|
// the old bundle identifier to prevent it from installing as a new app.
|
||||||
|
preferredBundleID = installedApp.resignedBundleIdentifier
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
preferredBundleID = nil
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
preferredBundleID = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
let bundleID: String
|
||||||
|
|
||||||
|
if let preferredBundleID = preferredBundleID
|
||||||
|
{
|
||||||
|
bundleID = preferredBundleID
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
// This app isn't already installed, so create the resigned bundle identifier ourselves.
|
// This app isn't already installed, so create the resigned bundle identifier ourselves.
|
||||||
// Or, if the app _is_ installed but with a different team, we need to create a new
|
// Or, if the app _is_ installed but with a different team, we need to create a new
|
||||||
@@ -157,11 +177,11 @@ extension FetchProvisioningProfilesOperation
|
|||||||
if app.bundleIdentifier == StoreApp.altstoreAppID || app.bundleIdentifier == StoreApp.alternativeAltStoreAppID
|
if app.bundleIdentifier == StoreApp.altstoreAppID || app.bundleIdentifier == StoreApp.alternativeAltStoreAppID
|
||||||
{
|
{
|
||||||
// Use legacy bundle ID format for AltStore.
|
// Use legacy bundle ID format for AltStore.
|
||||||
preferredBundleID = "com.\(team.identifier).\(app.bundleIdentifier)"
|
bundleID = "com.\(team.identifier).\(app.bundleIdentifier)"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
preferredBundleID = app.bundleIdentifier.replacingOccurrences(of: parentBundleID, with: updatedParentBundleID)
|
bundleID = app.bundleIdentifier.replacingOccurrences(of: parentBundleID, with: updatedParentBundleID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,7 +197,7 @@ extension FetchProvisioningProfilesOperation
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Register
|
// Register
|
||||||
self.registerAppID(for: app, name: preferredName, bundleIdentifier: preferredBundleID, team: team, session: session) { (result) in
|
self.registerAppID(for: app, name: preferredName, bundleIdentifier: bundleID, team: team, session: session) { (result) in
|
||||||
switch result
|
switch result
|
||||||
{
|
{
|
||||||
case .failure(let error): completionHandler(.failure(error))
|
case .failure(let error): completionHandler(.failure(error))
|
||||||
|
|||||||
Reference in New Issue
Block a user