【问题标题】:Run .saver file from objective c Xcode从目标 c Xcode 运行 .saver 文件
【发布时间】:2015-07-05 09:12:32
【问题描述】:

我想将屏幕保护程序上传到应用商店,在联系他们后,我被告知将 .saver 封装在 .app 中

我想构建一个简单的 .app 来启动其捆绑包中的 .saver。 但是我没有这样做:(

我用NSTaskNSWorkspace 尝试了几种解决方案,但没有一个可行:(

这里有一些尝试

    if(![[NSWorkspace sharedWorkspace] launchApplication:@"/Users/romanl/Desktop/XsaverApp/XsaverApp/SCTEST.saver/Contents/MacOS/SCTEST"])
    NSLog(@"Path Finder failed to launch");



    NSTask * task = [[NSTask alloc] init];
   [task setLaunchPath:@"/Users/romanl/Desktop/XsaverApp/XsaverApp/SCTEST.saver/Contents/MacOS/SCTEST"];
   [task launch];//Outputs : "Couldn't posix_spawn: error 8"

启动它的方法是什么?

【问题讨论】:

    标签: objective-c xcode macos nstask nsworkspace


    【解决方案1】:

    好吧,我现在解决了... 如果有人对未来感兴趣,我在这里发布答案

        [self.window close];
        NSTask * installTask = [[NSTask alloc]init];
        NSBundle * bundle = [NSBundle mainBundle];
    
        NSString * saverPath = [bundle pathForResource:@"CatsScreenSaver" ofType:@"saver"];
    
        NSMutableString * launchString = [[NSMutableString alloc]initWithString:@"open "];
        [launchString appendString:saverPath];
    
        [installTask setLaunchPath:@"/bin/bash"];
    
        NSArray *args = [NSArray arrayWithObjects:@"-l",
                     @"-c",
                     launchString,
                     nil];
        [installTask setArguments: args];
        [installTask launch ];
    
        [installTask waitUntilExit];
        [NSApp terminate:self];
    

    棘手的部分在这里

            NSArray *args = [NSArray arrayWithObjects:@"-l",
                     @"-c",
                     launchString,
                     nil];
            [installTask setArguments: args];
    

    应该将这些参数放在NSTask 中,以便让它从用户空间运行 Pathes。

    【讨论】:

      猜你喜欢
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 2011-03-20
      相关资源
      最近更新 更多