2010-12-04 11 views
3

私はプログラムインストーラを作成している場合、インストールする "Program Files"ディレクトリをどのように決定する必要がありますか? 32ビットシステムでは、環境変数 "%programfiles%"で十分です。しかし、64ビットシステムでは、32ビットプログラムをそのフォルダにインストールするのではなく、 "%programfiles(x86)%"にインストールしてください。これは "C:\ Program Files(x86)"を指しています。私の質問は:インストーラはどの環境変数を使うべきかを決めるべきですか? "%programfiles%"を使用する前に "%programfiles(x86)%"が存在するかどうかを常に確認する必要がありますか、まったく異なる何かを行う必要がありますか?私のプログラムは "Program Files(x86)"の下でどのようにインストールするべきですか?

ありがとうございます! 64ビットオペレーティングシステムに慣れようとすると、これは私の好奇心から外れただけです。

答えて

4

ProgramFilePath定数を解決するように32ビットプログラム(場合によってはインストーラー)がシステムに要求すると、システムはC:\ Programファイルを返しませんが、C:\ Programファイル(x86)。したがって、アプリケーションではなくシステムを決定します。

4

私は、Windowsが自動的にあなたのためにこれを行ったと確信しています。つまり、インストーラが32ビットの場合、Program Filesにインストールしようとしても、x86ディレクトリにルーティングされます。

私はThe Old New Thingでこれを読んでいると確信していますが、それが見つかるまで、競合をサポートするのはhere's a linkです。


ああ、はい、here it isRaymond Chenこれまでに便利から。

コメンターコロがにそれが64ビットシステム上で実行していることを検出し、ファイルをコピー(そしておそらく設定のレジストリエントリをし、他のinstalleryのことを行う)したい32ビットプログラムの形でインストーラを書いています64ビットのディレクトリを使用しますが、エミュレーションレイヤーは操作を32ビットの場所にリダイレクトします。問題は「32ビットアプリケーションからx64 Program Filesディレクトリを見つける方法は何ですか?」

答えは「それよりもシステムで作業する方がよい」と答えています。あなたが32ビットプログラムであれば、外界とやり取りしようとするたびにエミュレータと戦うことになります。代わりに、インストーラを64ビットプログラムとして再コンパイルしてください。 32ビットインストーラが64ビットシステムで実行されていることを検出して、64ビットインストーラを起動します。 64ビットインストーラは32ビットエミュレーションレイヤーでは実行されないため、ファイルのコピーまたはレジストリキーの更新を試みると、実際の64ビットファイルシステムと実際の64ビットレジストリが表示されます。

関連する問題