状況:
現在の開発環境を 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 部門を説得するのは非常に困難でした。