From b9c6160905450db679f9f684b2065407b330939a Mon Sep 17 00:00:00 2001 From: a1109471307 <50288272+a1109471307@users.noreply.github.com> Date: Thu, 3 Jul 2025 18:53:42 +0800 Subject: [PATCH] Update TSTrollStore.m --- TrollStore/TSTrollStore.m | 45 +++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/TrollStore/TSTrollStore.m b/TrollStore/TSTrollStore.m index 20a9de3..d91f6cb 100644 --- a/TrollStore/TSTrollStore.m +++ b/TrollStore/TSTrollStore.m @@ -2,20 +2,53 @@ #import "TSExploitManager.h" - (void)installIPAAtPath:(NSString *)ipaPath { - // 选择最佳漏洞 - TSExploitDescriptor *descriptor = [[TSExploitManager sharedManager] bestDescriptorForCurrentDevice]; + TSExploitDescriptor *descriptor = [[TSExploitManager sharedManager] bestExploitDescriptorForCurrentDevice]; + if (!descriptor) { - [self showErrorAlert:@"No compatible exploit"]; + UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"错误" + message:@"当前设备或iOS版本没有可用的漏洞" + preferredStyle:UIAlertControllerStyleAlert]; + [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]]; + [self presentViewController:alert animated:YES completion:nil]; + return; + } + + if (![[TSExploitManager sharedManager] applyExploitWithDescriptor:descriptor]) { + UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"错误" + message:@"漏洞应用失败" + preferredStyle:UIAlertControllerStyleAlert]; + [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil]]; + [self presentViewController:alert animated:YES completion:nil]; return; } - // 使用流式安装器 TSStreamingInstaller *installer = [[TSStreamingInstaller alloc] initWithIPAAtPath:ipaPath]; + + __weak typeof(self) weakSelf = self; installer.progressHandler = ^(float progress) { dispatch_async(dispatch_get_main_queue(), ^{ - [self updateProgress:progress]; + [weakSelf.progressView setProgress:progress animated:YES]; + weakSelf.statusLabel.text = [NSString stringWithFormat:@"安装中: %.0f%%", progress * 100]; }); }; - [installer installToDestination:[self installationPath]]; + installer.completionHandler = ^(BOOL success, NSError *error) { + dispatch_async(dispatch_get_main_queue(), ^{ + if (success) { + [weakSelf showSuccessAlert:@"安装成功"]; + } else { + [weakSelf showErrorAlert:[NSString stringWithFormat:@"安装失败: %@", error.localizedDescription]]; + } + [weakSelf.progressView setHidden:YES]; + }); + }; + + NSString *destinationPath = [self trollStoreInstallPath]; + [self.progressView setHidden:NO]; + [self.progressView setProgress:0 animated:NO]; + self.statusLabel.text = @"准备安装..."; + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [installer installToDestination:destinationPath]; + }); }