This commit is contained in:
opa334 2022-10-17 20:30:49 +02:00
parent ad00f892de
commit 7d319b04d1
8 changed files with 39 additions and 6 deletions

View File

@ -1,6 +1,6 @@
Package: com.opa334.trollstoreroothelper Package: com.opa334.trollstoreroothelper
Name: trollstoreroothelper Name: trollstoreroothelper
Version: 1.2 Version: 1.2.1
Architecture: iphoneos-arm Architecture: iphoneos-arm
Description: An awesome tool of some sort!! Description: An awesome tool of some sort!!
Maintainer: opa334 Maintainer: opa334

View File

@ -80,6 +80,20 @@ NSSet<NSString*>* appleURLSchemes(void)
return systemURLSchemes.copy; return systemURLSchemes.copy;
} }
NSSet<NSString*>* appleAppBundleIdentifiers(void)
{
LSEnumerator* enumerator = [LSEnumerator enumeratorForApplicationProxiesWithOptions:0];
enumerator.predicate = [NSPredicate predicateWithFormat:@"bundleIdentifier BEGINSWITH 'com.apple'"];
NSMutableSet* systemAppIdentifiers = [NSMutableSet new];
LSApplicationProxy* proxy;
while(proxy = [enumerator nextObject])
{
[systemAppIdentifiers addObject:proxy.bundleIdentifier.lowercaseString];
}
return systemAppIdentifiers.copy;
}
NSDictionary* infoDictionaryForAppPath(NSString* appPath) NSDictionary* infoDictionaryForAppPath(NSString* appPath)
{ {
@ -583,8 +597,15 @@ int installApp(NSString* appPath, BOOL sign, BOOL force)
NSString* appId = appIdForAppPath(appPath); NSString* appId = appIdForAppPath(appPath);
if(!appId) return 176; if(!appId) return 176;
if([appleAppBundleIdentifiers() containsObject:appId.lowercaseString])
{
return 179;
}
applyPatchesToInfoDictionary(appPath); if(![appId isEqualToString:@"com.opa334.TrollStore"])
{
applyPatchesToInfoDictionary(appPath);
}
if(sign) if(sign)
{ {
@ -876,6 +897,12 @@ int installIpa(NSString* ipaPath, BOOL force)
} }
if(!tmpAppPath) return 167; if(!tmpAppPath) return 167;
NSString* appId = appIdForAppPath(tmpAppPath);
if([appId.lowercaseString isEqualToString:@"com.opa334.trollstore"])
{
return 179;
}
int ret = installApp(tmpAppPath, YES, force); int ret = installApp(tmpAppPath, YES, force);
[[NSFileManager defaultManager] removeItemAtPath:tmpAppPath error:nil]; [[NSFileManager defaultManager] removeItemAtPath:tmpAppPath error:nil];

View File

@ -6,6 +6,7 @@
// uicache on steroids // uicache on steroids
extern NSSet<NSString*>* appleAppBundleIdentifiers(void);
extern NSDictionary* dumpEntitlementsFromBinaryAtPath(NSString* binaryPath); extern NSDictionary* dumpEntitlementsFromBinaryAtPath(NSString* binaryPath);
NSDictionary* constructGroupsContainersForEntitlements(NSDictionary* entitlements, BOOL systemGroups) NSDictionary* constructGroupsContainersForEntitlements(NSDictionary* entitlements, BOOL systemGroups)
@ -108,6 +109,8 @@ void registerPath(char* cPath, int unregister)
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([appleAppBundleIdentifiers() containsObject:appBundleID.lowercaseString]) return;
if(appBundleID && !unregister) if(appBundleID && !unregister)
{ {
MCMContainer* appContainer = [NSClassFromString(@"MCMAppDataContainer") containerWithIdentifier:appBundleID createIfNecessary:YES existed:nil error:nil]; MCMContainer* appContainer = [NSClassFromString(@"MCMAppDataContainer") containerWithIdentifier:appBundleID createIfNecessary:YES existed:nil error:nil];

View File

@ -52,7 +52,7 @@
<string>iPhoneOS</string> <string>iPhoneOS</string>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.2</string> <string>1.2.1</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>UIDeviceFamily</key> <key>UIDeviceFamily</key>

View File

@ -1,6 +1,6 @@
Package: com.opa334.trollstorehelper Package: com.opa334.trollstorehelper
Name: TrollStore Helper Name: TrollStore Helper
Version: 1.2 Version: 1.2.1
Architecture: iphoneos-arm Architecture: iphoneos-arm
Description: Helper utility to install and manage TrollStore! Description: Helper utility to install and manage TrollStore!
Maintainer: opa334 Maintainer: opa334

View File

@ -50,7 +50,7 @@
<string>iPhoneOS</string> <string>iPhoneOS</string>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.2</string> <string>1.2.1</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>UIDeviceFamily</key> <key>UIDeviceFamily</key>

View File

@ -109,6 +109,9 @@
case 178: case 178:
errorDescription = @"Failed to copy app bundle."; errorDescription = @"Failed to copy app bundle.";
break; break;
case 179:
errorDescription = @"The app you tried to install has the same identifier as a system app already installed on the device. The installation has been prevented to protect you from possible bootloops or other issues.";
break;
// App detach errors // App detach errors
/*case 184: /*case 184:
errorDescription = @"Refusing to detach, the app is still signed with a fake root certificate. The detach option is only for when you have installed an App Store app on top of a TrollStore app."; errorDescription = @"Refusing to detach, the app is still signed with a fake root certificate. The detach option is only for when you have installed an App Store app on top of a TrollStore app.";

View File

@ -1,6 +1,6 @@
Package: com.opa334.trollstore Package: com.opa334.trollstore
Name: TrollStore Name: TrollStore
Version: 1.2 Version: 1.2.1
Architecture: iphoneos-arm Architecture: iphoneos-arm
Description: An awesome application! Description: An awesome application!
Maintainer: opa334 Maintainer: opa334