web-dev-qa-db-ja.com

Windows 7が64ビットアプリをProgramFiles(x86)フォルダーにインストールするのはなぜですか?動作を変更できますか?

CTP以降64ビットバージョンのWindows7を使用していて、C:\Program Files (x86)フォルダーにインストールされるアプリケーションでいくつかの問題が発生しました。とにかく2つの別々のProgramFilesディレクトリを持つ目的は何ですか?

インストールしたすべてのプログラムは、C:\Program Files (x86)フォルダーに移動しました。アプリが32ビットか64ビットかは問題ではないようです。 64ビットアプリが_C:\Program Files_に配置されないのはなぜですか?

代わりにデフォルトを_C:\Program Files_に変更する方法はありますか? すべてを_C:\Program Files_に入れると、何かが台無しになりますか?

実際に64ビットアプリ用に別のフォルダーを用意することに何らかの利点がある場合、x86アプリ用に_C:\Program Files_を使用し、新しいC:\Program Files (x64)フォルダーを作成するのがより賢明なデフォルトのようです。新しい64ビットアプリ。これは、下位互換性を維持するのに役立ちます。私はソフトウェア開発者として働いており、一部のプロジェクトには_C:\Program Files_の下のライブラリへのパス参照が含まれています。これらの参照は、C:\Program Files (x86)に配置されたWindows7マシンで壊れています。インストーラーのターゲットの場所を_C:\Program Files_に変更しようとしましたが、それは無視され、アプリはとにかくC:\Program Files (x86)に入りました。

32ビットと64ビットのマシン間でソースコードを共有する必要があり、マシンごとにこれらのライブラリへのパスを異なる方法で設定する構成ファイルをいじる必要がないため、これは非常に苛立たしいことです。

環境変数に関する編集:(簡単にするために変数のデフォルトの英語値のみを使用します。)64ビットマシンでは、_%ProgramFiles%_は_C:\Program Files_になり、新しい変数は%ProgramFiles(x86)%C:\Program Files (x86)になります。したがって、インストール先のフォルダーパスを見つける必要がある32ビットプログラムがある場合は、32ビットバージョンと64ビットバージョンのWindowsで実行されているかどうかを順番に確認する必要があります。使用する環境変数を知るため。この考慮なしに作成された32ビットアプリは、64ビットマシンで正しく動作するために更新する必要があります。したがって、環境変数を使用しても、下位互換性は失われます。

また、%ProgramFiles(x86)%は32ビットバージョンのWindowsには存在しません。もしそうなら、32ビットアプリは常にその環境変数を使用することができ、実行しているOSに基づく条件付きロジックは必要ありません。

12
CoderDennis

この理由は、多くの古いインストーラーが新しいファイル構造を理解せず、標準のプログラムファイルディレクトリにすべてを詰め込んでいるか、そこにコピーされている32ビットコンポーネントがいくつかあるスマートプログラムを見ているためです。

最善の策は、 x64 Winrar などの新しいプログラムをダウンロードし、インストール先を確認して、マシンの問題を除外することです。

物事を台無しにすることに関しては-それは可能ですが、それは本当にプログラムに依存します、1つの答えがすべてに当てはまるわけではありません...ほんの数ファイルのいくつかの小さくてコンパクトなプログラムは問題ありませんが、Officeについて話す場合、Adobeまたはその他の「スイート」または大規模なプログラムでは、アーキテクチャ間である多くの共有コンポーネントがあるため、失敗する可能性が高くなります。

7
William Hilsum

_%ProgramFiles%_(または_CSIDL_PROGRAM_FILES_、または.NET Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles))以外のものを使用する場合、カスタムインストールではプログラムを他のボリュームにインストールできるため、とにかく問題が発生します(D :たとえば)および国際的なインストールでは、多くの場合、デフォルトで他のフォルダがあります。

  • スペイン語のウィンドウ:_C:\Archivos de Programa_、
  • フランス語のウィンドウ:_C:\Programmes_、
  • ドイツ語のウィンドウ:_C:\Programme_、
  • スウェーデン語のウィンドウ:_C:\Program_

等.

4
Zano

64ビットバージョンのWindows7では(これは他の新しいOSバージョンにも当てはまる可能性がありますが、これはWin 7 64ビットでのみ確認できます)、%ProgramFiles%の親の場所に違いがあることに注意してください。 ExplorerおよびDOSで。

Windows 7では、%ProgramFiles%(および関連する%ProgramFiles(x86)%environemnt変数)の実際の物理フォルダーの場所は英語版に従って修正されています;つまり、「C:\ ProgramFiles」と「C:\ ProgramFiles(x86)」はそれぞれ尊重されますが、必要に応じてローカライズされたエクスプローラーに表示です。

具体的な例を提供するため。スウェーデン語のWindows7 64ビットインストールで、エクスプローラーを開いてシステムドライブ(通常はC :)を見ると、「Program」と「 プログラム(x86) "フォルダー。アドレスバーに%ProgramFiles%と入力すると、「C:\ Program」に移動します。

ただし、DOSボックスを開いてSETと入力すると、%ProgramFiles%の実際の値が「C:\ ProgramFiles」であり、「C:\ Program」フォルダエクスプローラーに表示されないことがわかります。 CDとDIRをさらに詳しく調べると、物理的に「C:\ ProgramFiles」であることがわかります。

道徳は、APIを介して環境変数またはプログラムを使用する場合、すべてが引き続き機能することですが、ファイルシステムを探索するときは、この微妙な変更に注意してください。

3
Pete Stensønes