何らかの理由で、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";