IMO PE 実行可能ファイルは、すべてのプラットフォームで実行できるわけではありません。
インストーラーはさまざまな CPU アーキテクチャー用の実行可能ファイルをパックし、いくつかの検出作業の後に適切なものを選択すると推測しています。
しかし、これは MS のような大企業が製品をリリースする方法ですか?
IMO PE 実行可能ファイルは、すべてのプラットフォームで実行できるわけではありません。
インストーラーはさまざまな CPU アーキテクチャー用の実行可能ファイルをパックし、いくつかの検出作業の後に適切なものを選択すると推測しています。
しかし、これは MS のような大企業が製品をリリースする方法ですか?
Microsoft は、x86 と x86-64 の 2 つのデスクトップ CPU のみをリリースしています。通常、それぞれに個別の実行可能ファイルを使用します。たとえば、vcredist_x86.exe (x86) およびvcredist_x64.exe (x86-64) です。
ただし、場合によっては、dotNetFx40_Full_x86_x64.exeなどの組み合わせインストーラーを使用します。
ここには 2 つの考え方があるようです。
これは、インストーラーで特別なことをする必要がないため、最も簡単な方法です。Microsoft のユーティリティの多く (特にすべてのデバッグ ツール) は、個別の x86/amd64/ia64 パッケージで提供されます。ただし、小売製品についてはわかりません。
ここには、現在サポートされているすべての Windows プラットフォームで実行される単一のモノリシック 32 ビット インストーラーがあります。インストーラーには、各プラットフォームのバイナリが含まれています。インストーラーでは、実行しているプラットフォームに応じて適切なバイナリを配置します。多くの「魔法」(カスタムコード、ハックなど)が必要であり、インストーラーが肥大化するため、これには反対することをお勧めします。
現在、2 番目の方法で製品を配布していますが、非常に頭が痛いことがわかっているため、将来的には 1 番目の方法に切り替える予定です。最初の方法の唯一の欠点は、顧客が適切なインストーラーを使用する必要があることですが、適切なインストーラーを起動する単純な 32 ビット シェルでこれをラップすることもできます。
これは、実際には、コンポーネントのビット数とその依存関係を含むかなり複雑な議論であり、デプロイマン アプローチにすべてに適合する 1 つのサイズはありません。一部の製品はネイティブ/アンマネージド ( .NET ではない) で、x86 用にコンパイルされ、x86 と x64 の両方で x86 パッケージとして配布されます。一部は純粋に管理された ( .NET ) アプリケーションで、x86 としてパッケージ化されますが、実際には可能であれば x64 として実行されます。一部は、管理されていない依存関係を持つ管理対象アプリであり、x86 DLL を 32 ビット マシンの WinSXS にインストールし、x64 DLL を 64 ビット マシンの WinSXS にインストールするなど、ハイブリッド アプローチを実行する必要がある可能性があります。他のものは言うまでもなく直接的な依存関係はありませんが、Office や Internet Explorer などの他のアプリケーションへのアドイン/プラグイン/拡張機能として登録する必要がある場合があります。
一部のパッケージは別個のインストーラーとして配布され、一部はハイブリッド アプローチを実行し、一部はブートストラップを介してラップされた複数のパッケージに分割されます。肥大化をバックグラウンド Web ダウンロードで隠そうとする人もいれば、事前にすべてを提供してオフライン インストールを可能にする人もいます。
答えは非常に次のとおりです。それは依存します。