0

我希望启动一个包文件并等待安装完成/关闭。同时主调用应用程序应该被锁定直到完成。

到目前为止,我已经尝试了以下...

- (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 报告为正在关闭的应用程序。

关于我要达到的目标的任何想法....

4

1 回答 1

0

Ok 在意识到 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];

当你知道如何时很容易:)

于 2013-01-11T21:33:07.113 回答