状況:
現在の開発環境を Windows XP 32 ビットから Windows Vista 64 ビット (*) に変換する必要があります。当然のことながら、私たちのビルド システムでは、ハードコーディングされたパスに問題がある箇所がたくさんありました (例: " C:\Program Files" が " " になるC:\Program Files (x86))。幸いなこと%ProgramFiles%に、ソース プロセス (32 ビットまたは 64 ビット) に基づいて適切なディレクトリにマップされる環境変数があります。そこで、ビルド スクリプトを で更新しました%ProgramFiles%が、これで終わりだと確信していました。
ビルド環境は、コマンドライン ( C:\Windows\System32\cmd.exe) から呼び出されます。
問題:
1 つの特定のマシン (つまり、作業中の開発マシン) で、実際には 32 ビット プロセスであることが判明したC:\Windows\System32\cmd.exeため、スクリプトはディレクトリのx86バージョンを検出し、すべてがうまく機能します。Program Files
私が見つけることができる他のすべての 64 ビット マシン (自宅のマシンを含む) では、C:\Windows\System32\cmd.exeが 64 ビット バージョンで、32 ビット バージョンがC:\Windows\SysWow64\cmd.exe. そのため、ビルド スクリプトは探しているものを見つけることができず、失敗します。
32bitcmd.exeが必要な場合は明示的に呼び出す必要があり、デフォルトでは 64bit を取得する必要があることを理解しましたcmd.exe。~の典型的なWORKSFORMEケース
問題は、これが正しくないマシンに何が起こったのかということです。cmd.exeあるマシンではデフォルトで32 ビットになっているのに、他のマシンではそうではないのはなぜですか? C:\Windows\System32\cmd.exeいずれの場合も、メニューから明示的に実行していますが、1 台のマシンでのみStart|Run異なる結果が得られます。すべてが同じエディションの Vista 64 ビットを実行しています。
考えや洞察はありますか?
(*) 私がこれをしなければならないことを受け入れてください。なぜ私がこれを行っているのかを言う自由はありません。OS とすべてを最初から再インストールすればおそらくうまくいくでしょうが、それは確かにやり過ぎです。さらに、Vista マシンを配布するよう IT 部門を説得するのは非常に困難でした。