mirror of https://github.com/opa334/TrollStore.git
Properly handle errors where an app cannot be added to icon cache
This commit is contained in:
parent
bbdd0fdcdd
commit
8cdef95733
|
@ -915,7 +915,10 @@ int installApp(NSString* appPackagePath, BOOL sign, BOOL force, BOOL isTSUpdate,
|
||||||
// Also permissions need to be fixed
|
// Also permissions need to be fixed
|
||||||
NSURL* updatedAppURL = findAppURLInBundleURL(appContainer.url);
|
NSURL* updatedAppURL = findAppURLInBundleURL(appContainer.url);
|
||||||
fixPermissionsOfAppBundle(updatedAppURL.path);
|
fixPermissionsOfAppBundle(updatedAppURL.path);
|
||||||
registerPath(updatedAppURL.path, 0, YES);
|
if (!registerPath(updatedAppURL.path, 0, YES)) {
|
||||||
|
[[NSFileManager defaultManager] removeItemAtURL:appContainer.url error:nil];
|
||||||
|
return 181;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
extern void registerPath(NSString* path, BOOL unregister, BOOL system);
|
extern bool registerPath(NSString *path, BOOL unregister, BOOL forceSystem);
|
|
@ -81,8 +81,8 @@ NSDictionary *constructEnvironmentVariablesForContainerPath(NSString *containerP
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerPath(NSString *path, BOOL unregister, BOOL forceSystem) {
|
bool registerPath(NSString *path, BOOL unregister, BOOL forceSystem) {
|
||||||
if (!path) return;
|
if (!path) return false;
|
||||||
|
|
||||||
LSApplicationWorkspace *workspace = [LSApplicationWorkspace defaultWorkspace];
|
LSApplicationWorkspace *workspace = [LSApplicationWorkspace defaultWorkspace];
|
||||||
if (unregister && ![[NSFileManager defaultManager] fileExistsAtPath:path]) {
|
if (unregister && ![[NSFileManager defaultManager] fileExistsAtPath:path]) {
|
||||||
|
@ -97,7 +97,7 @@ void registerPath(NSString *path, BOOL unregister, BOOL forceSystem) {
|
||||||
NSDictionary *appInfoPlist = [NSDictionary dictionaryWithContentsOfFile:[path stringByAppendingPathComponent:@"Info.plist"]];
|
NSDictionary *appInfoPlist = [NSDictionary dictionaryWithContentsOfFile:[path stringByAppendingPathComponent:@"Info.plist"]];
|
||||||
NSString *appBundleID = [appInfoPlist objectForKey:@"CFBundleIdentifier"];
|
NSString *appBundleID = [appInfoPlist objectForKey:@"CFBundleIdentifier"];
|
||||||
|
|
||||||
if([immutableAppBundleIdentifiers() containsObject:appBundleID.lowercaseString]) return;
|
if([immutableAppBundleIdentifiers() containsObject:appBundleID.lowercaseString]) return false;
|
||||||
|
|
||||||
if (appBundleID && !unregister) {
|
if (appBundleID && !unregister) {
|
||||||
NSString *appExecutablePath = [path stringByAppendingPathComponent:appInfoPlist[@"CFBundleExecutable"]];
|
NSString *appExecutablePath = [path stringByAppendingPathComponent:appInfoPlist[@"CFBundleExecutable"]];
|
||||||
|
@ -236,11 +236,14 @@ void registerPath(NSString *path, BOOL unregister, BOOL forceSystem) {
|
||||||
|
|
||||||
if (![workspace registerApplicationDictionary:dictToRegister]) {
|
if (![workspace registerApplicationDictionary:dictToRegister]) {
|
||||||
NSLog(@"Error: Unable to register %@", path);
|
NSLog(@"Error: Unable to register %@", path);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
NSURL *url = [NSURL fileURLWithPath:path];
|
NSURL *url = [NSURL fileURLWithPath:path];
|
||||||
if (![workspace unregisterApplication:url]) {
|
if (![workspace unregisterApplication:url]) {
|
||||||
NSLog(@"Error: Unable to register %@", path);
|
NSLog(@"Error: Unable to register %@", path);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,6 +77,9 @@ extern NSUserDefaults* trollStoreUserDefaults();
|
||||||
case 180:
|
case 180:
|
||||||
errorDescription = @"The app you tried to install contains encrypted binaries, which cannot have the CoreTrust bypass applied to them. Please ensure you install decrypted apps.";
|
errorDescription = @"The app you tried to install contains encrypted binaries, which cannot have the CoreTrust bypass applied to them. Please ensure you install decrypted apps.";
|
||||||
break;
|
break;
|
||||||
|
case 181:
|
||||||
|
errorDescription = @"Failed to add app to icon cache.";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
NSError* error = [NSError errorWithDomain:TrollStoreErrorDomain code:code userInfo:@{NSLocalizedDescriptionKey : errorDescription}];
|
NSError* error = [NSError errorWithDomain:TrollStoreErrorDomain code:code userInfo:@{NSLocalizedDescriptionKey : errorDescription}];
|
||||||
|
|
Loading…
Reference in New Issue