使用WiX将程序集放入GAC和安装路径

dsk*_*les 12 .net gac wix

我刚开始学习如何使用WiX而且我遇到了麻烦.我的软件包使用第三方库,它需要在GAC和软件包安装目录中存在某些文件.

使用WiX,我可以使文件显示在安装目录或GAC中,但不能同时显示在两者中.

有什么方法可以解决这个问题吗?

CAb*_*ott 12

这里有一篇关于将程序集安装到GAC和本地文件系统的帖子.这里面有一些实际的WiX代码可以满足您的需求.

  • 找不到网页 :( (5认同)

Chr*_*don 5

我找到了该帖子 - 此后已移动,新 URL 在这里:https : //devblogs.microsoft.com/setup/installing-assemblies-for-runtime-and-design-time-use/

本质上,您创建了 2 个组件,GAC 一个放入一个基本上被忽略的新文件夹中,因为它将转到 GAC,另一个组件到您要复制到的位置 - 只是没有Assembly=".net"属性。

下面的例子来自代码,我已经使用这种技术在我的项目中工作了。

<Directory Id="ProgramFilesFolder">
    <Directory Id="ProductDirectory" Name="$(var.ProductName)">
        <Directory Id="GAC" Name="GAC">
            <Component Id="RT_MyControl" Guid="22887611-B13E-41EE-897C-D78830E68AEB" DiskId="1">
                <File Id="F_RT_MyControl" Name="MyCtrl.dll" LongName="MyControl.dll" Source="$(var.SrcPath)MyControl.dll" KeyPath="yes" Assembly=".net"/>
            </Component>
        </Directory>
        <Component Id="DT_MyControl" Guid="FB935B7D-D2BD-4B83-A26C-A9376EBA0915" DiskId="1">
            <File Id="F_DT_MyControl" Name="MyCtrl.dll" LongName="MyControl.dll" Source="$(var.SrcPath)MyControl.dll" KeyPath="yes"/>
        </Component>
    </Directory>
</Directory>
Run Code Online (Sandbox Code Playgroud)