#import #import @interface InstallDelegate : NSObject @end @implementation InstallDelegate - (void)request:(OSSystemExtensionRequest *)request didFinishWithResult:(OSSystemExtensionRequestResult)result { NSLog(@"✅ Installation succeeded! Result: %ld", (long)result); CFRunLoopStop(CFRunLoopGetCurrent()); } - (void)request:(OSSystemExtensionRequest *)request didFailWithError:(NSError *)error { NSLog(@"❌ Failed! Error: %@", error.localizedDescription); NSLog(@"Domain: %@, Code: %ld", error.domain, (long)error.code); CFRunLoopStop(CFRunLoopGetCurrent()); } - (void)requestNeedsUserApproval:(OSSystemExtensionRequest *)request { NSLog(@"⚠️ Approval needed. Check System Settings → Privacy & Security"); } - (OSSystemExtensionRequestReplacementAction)request:(OSSystemExtensionRequest *)request actionForReplacingExtension:(OSSystemExtensionProperties *)existing withExtension:(OSSystemExtensionProperties *)new { NSLog(@"Replacing extension..."); return OSSystemExtensionRequestReplacementActionReplace; } @end int main(int argc, char *argv[]) { @autoreleasepool { NSLog(@"=== MarkBaseFS Installer ==="); NSString *bundleID = @"com.momentry.markbase.fskit"; NSLog(@"Bundle ID: %@", bundleID); InstallDelegate *delegate = [[InstallDelegate alloc] init]; OSSystemExtensionRequest *request = [OSSystemExtensionRequest activationRequestForExtensionWithIdentifier:bundleID queue:[NSOperationQueue mainQueue]]; request.delegate = delegate; NSLog(@"Submitting request..."); [[OSSystemExtensionManager sharedManager] submitRequest:request]; NSLog(@"Waiting for approval..."); CFRunLoopRun(); NSLog(@"Done. Checking installed extensions..."); // Check result NSArray *extensions = [[OSSystemExtensionManager sharedManager] systemExtensions]; NSLog(@"Installed: %lu extensions", (unsigned long)[extensions count]); return 0; } }