2

KeyPath="yes" と Assembly=".net" を Wix XML ファイルの DLL コンポーネントに追加することで、インストーラーをビルドして実行すると、指定した DLL が実際にインストールされることがわかりました。これらのプロパティを GAC に追加します。また、ローカルのプログラム フォルダーにもインストールされます。それらがGACにインストールされている場合、それらをプログラムフォルダーにも配置する必要はないと想定していました。両方の場所に DLL があることは問題ですか? 問題がある場合、プログラム フォルダへのインストールを防ぐ方法はありますか?

4

1 に答える 1

5

あなたが見ているものを再現することはできません。次のようなMSI を 1 つだけ含む MSI を作成するComponentと、次のようになります。

<Component Directory="SomeFolderUnderProgramFiles">
   <File Source="path\to\my\strongnamedsigned.dll" Assembly=".net" KeyPath="yes" />
</Component> 

"strongnamedsigned.dll"次に、GACでのみ取得します。ディレクトリ ツリー (ルートProgramFilesFolder) がまったく作成されません。

おそらく、.wxs ファイルのどこかに、Assembly=".net"属性のないファイルの別のコピーがありますか? これを行っても問題はありません (スマート キャブが有効になり、キャビネットのサイズが小さく保たれます) が、ファイルが 2 か所にインストールされる原因を理解することをお勧めします。

于 2013-05-03T16:54:28.270 に答える