1

VS2015 を使用して、サービスのインストール ソリューションを構築しています。プログラムを 64 ビットで実行したい。ソリューション構成プロパティでは、すべてのプロジェクトを構成デバッグ、プラットフォーム任意の CPU、空の展開として持っています。

msi インストーラーから、インストールするフォルダーを選択するように求められ、Program Files\My Company Name を選択します。

ただし、Windows 8.1 64 ビット OS にインストールしようとすると、インストーラーはフォルダー Program Files (x86)\My Company Name を作成します。

なんで?

4

2 に答える 2

3

おそらく、生成した MSI が 32 ビットの MSI であり、32 ビットのフォルダー パスにしかアクセスできないためです。したがって、OS は自動的にリダイレクトを実行します。

MSI パッケージの種類は、Windows SDK にある無料のツール Orca で確認できます。MSI のパッケージ タイプ情報は、[概要情報] メニューにあります。または、インストールの詳細なログを生成することもできます。ほとんどの場合、パスのリダイレクトに関する情報が含まれています。

詳細ログ生成のコマンド ライン:

msiexec.exe /i < MSI のフル パス > /L*V < ログ ファイル名を含むログ ファイルのフル パス >

実際には、MSI の「任意の CPU」とは、32 ビットと 64 ビットの両方のマシンで実行できる 32 ビット MSI を取得することを意味します。ご想像のとおり、64 ビット MSI は 32 ビット マシンにインストールできません。

Windows インストーラーは、混在する MSI パッケージをサポートしていません。アーキテクチャごとに 1 つずつ、2 つの MSI をバンドルし、実行中の OS に基づいて正しい MSI を起動する EXE ブートストラップを構築する、他のセットアップ オーサリング ツールがあります。

このSO 同様/関連スレッドにも記載されているように、高度なインストーラーは混合パッケージをビルドできます。他の開発ツールと同様に、他のオプションもあります。上でリンクした SO スレッドを参照してください。

于 2016-06-23T05:51:59.763 に答える