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

13

我刚开始学习如何使用WiX,但是遇到了问题。我的程序包使用了一个第三方库,需要在GAC和程序包安装目录中存在某个文件。

使用WiX,我可以让这些文件出现在安装目录中或者GAC中,但不能同时出现在两者中。

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

2个回答

13

这里有一篇关于同时将程序集安装到GAC和本地文件系统的文章,链接。 文章中包含了实际的WiX代码,可以满足您的需求。


5
页面未找到 :( - sushmitgos

6
我找到了这篇文章——已经搬迁了,新的 URL 在这里:https://devblogs.microsoft.com/setup/installing-assemblies-for-runtime-and-design-time-use/ 基本上,您需要创建2个组件:一个是 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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接