0

Visual Studio 2008 でビルド後のイベントを定義しました。

%ProgramFiles%\TortoiseHG\xy.exe

Windows 7 または Windows 8.1 (x64) でコンパイルすると、次のエラー メッセージが表示されました。

Error   1   The command "%ProgramFiles%\TortoiseHG\xy.exe" exited with code 9009.   MyProjektName

プログラムはここにあります:

C:\Program Files\TortoiseHg

Windows XP (x86) では完全に動作しています。また、引用符を設定しようとしましたが、役に立ちませんでした。何が間違っている可能性がありますか?プログラムパスが 2 つ (x86 用と x64 用) あるという事実による問題ですか? しかし、xy.exe を C:\Program Files (x86)\TortoiseHg\ にコピーしても、同じエラーが発生します。

助けていただければ幸いです。ありがとうございました。

4

2 に答える 2

3

Windows 7 または Windows 8.1 (x64) で

これは確かに基本的な問題の 1 つです。Visual Studio は 32 ビット プロセスです。ファイル リダイレクタが動作し、c:\program files から c:\program files (x86) へのすべてのアクセスをリダイレクトします。そこで死ぬには、そこに TortoiseHG がインストールされていません。

しかし、唯一の問題ではありません。リダイレクトはエラー コード 3 を生成します。9009 ではありません。9009 は、起動したプログラムがエラー コードで終了したときに生成される一般的なエラー コードです。二重引用符がないと、それをトリガーするのに十分であり、プログラム自体も何らかの理由で失敗します。出力ウィンドウでエラー メッセージを確認することは非常に重要です。

私たちが知らないエラーメッセージから簡単に言うと、次のようになります。

   %windir%\sysnative\cmd.exe /c "%programw6432%\TortoiseHG\xy.exe"

これにより、64 ビット コマンド プロセッサが起動し、ファイル システム リダイレクタが邪魔にならないようにします。/c オプションは、それに続くコマンドを実行してから終了するように要求します。%programw6432% 環境変数により、32 ビット パスではなく、c:\program ファイルが確実に渡されます。パス内のスペースが悲惨さを引き起こさないように、それを二重引用符で囲みます。

于 2015-06-30T13:47:39.743 に答える