0

アプリ ストアにスクリーン セーバーをアップロードしたいのですが、問い合わせたところ、.app 内に .saver をカプセル化するように言われました。

バンドルに含まれている .saver を起動する単純な .app を作成したいと考えています。しかし、私はそうしませんでした:(

NSTaskandを使用していくつかのソリューションを試しましNSWorkspaceたが、どれも機能しません:(

ここにいくつかの試みがあります

    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"

それを立ち上げるためのアプローチは何ですか?

4

1 に答える 1

0

さて、私は今それを解決しました...誰かが将来に興味があるなら、私はここに答えを投稿します

    [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ユーザー空間からパスを実行できるようにするには、これらの引数を配置する必要があります。

于 2015-07-07T19:31:52.613 に答える