0

何らかの理由で、NSTask を介してタスクを実行しようとすると、「起動パスにアクセスできません」というエラー メッセージが表示されます。

私のアプリはルートとして実行されています。そして、ターミナルでまったく同じコマンドを入力すると、正常に動作するので、少し混乱します。

私のアプリケーションは、relaunch というツールを にコピーしますNSTemporaryDirectory()。ここから実行しようとすると、「起動パスにアクセスできません」と表示されます。奇妙なことに、ツールを手動でデスクトップにコピーし、NSTask でパスをハードコードすると、適切に実行されます。そして、私はその理由がわかりません。

なぜこれが起こっているのか知っている人はいますか?

注: 参考までに、Sparkle を github から動作させようとしています。

コードは次のとおりです。

@try{
[NSTask launchedTaskWithLaunchPath:relaunchPath arguments:[NSArray arrayWithObjects:pathToRelaunch, [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]], nil]];
}

どこ

relaunchPath = @"/var/folders/zz/zzzivhrRnAmviuee+++++++++++/-Tmp-/relaunch";
4

1 に答える 1

0

エラー メッセージはアプリから来ていますか、それとも再起動から来ていますか? 標準エラーを他の場所を指すように変更していない場合は、アプリと同じ stderr に書き込まれるため、実際には再起動が正常に開始され、エラー メッセージは実際には再起動から発生する可能性があります。

@catchyour の後にブロックを追加して@try、NSTask が実際に失敗するかどうかを確認しpathToRelaunchます。

ブロックがある場合は@catch、質問を編集してブロックを含めてください。再起動で障害が発生していることが判明したが、問題がpathToRelaunchないように見える場合は、質問を編集して、再起動ツールからの関連するソース コードを含めてください。

于 2011-04-24T06:26:31.180 に答える