我希望启动一个包文件并等待安装完成/关闭。同时主要的呼叫应用程序应该被锁定直到完成。
到目前为止,我已尝试过以下内容......
- (IBAction)installDriver:(id)sender
{
NSString *file = [[NSBundle mainBundle] pathForResource:@"ExamplePackage" ofType:@"pkg"];
[[NSWorkspace sharedWorkspace] openFile:file];
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(appDidEnd:) name:NSWorkspaceDidTerminateApplicationNotification object:nil];
}
- (void)appDidEnd:(NSNotification *)notification
{
NSLog(@"app info: %@", [notification userInfo]);
}
问题是appDidEnd会在任何应用程序关闭时被调用,此外无法检测ExamplePackage.pkg是否已关闭,因为userinfo将installer.app报告为关闭应用程序。
关于我想要达到的目标的任何想法......
答案 0 :(得分:0)
在意识到存在NSTask之后找到了解决方案。
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/usr/bin/open"];
[task setArguments:[NSArray arrayWithObjects:[[NSBundle mainBundle] pathForResource:@"MyPackageFile" ofType:@"pkg"], nil]];
[task launch];
[task waitUntilExit];
当你知道如何:
时很容易