我有一个大型 .NET 源代码树(185 个 C# 和 VB 项目,其中 60 个是应用程序或网站),我想为其创建一个 wix 设置。总体思路是设置 1 个 msi 并使每个可执行文件成为一项功能,并将每个应用程序安装在单独的目录中。喜欢
%progfiles%/company/app1
/app2
/app3
到目前为止,我已经设法使用功能树创建了一个 wix 产品文件,并让 heat 工具为每个 .NET 项目生成片段文件。它们看起来像这样:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="Client.Binaries">
...component definitions...
</DirectoryRef>
<DirectoryRef Id="Client.Content">
...etc...
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="Client.Binaries">
...ComponentRefs referencing components defined under
the DirectoryRef with the same id...
</ComponentGroup>
...etc...
但是两者的链接给我带来了麻烦,Features 可以引用 ComponentGroups,ComponentGroups 引用 Components,Components 包含在 DirectoryRef 中。
定义 DirectoryRef 元素要引用的 Directory 元素给我带来了麻烦。
一些库被多个应用程序使用,因此 DirectoryRef 必须指向多个目录,并且多个 DirectoryRef(具有不同 id)必须指向同一个目录(找到目录别名技巧),这两者似乎都是不可能的。
我有一种明显的印象,我正在以错误的方式处理它,或者我错过了一些更深入的洞察力。(没有惊喜,因为我的wix-fu已经整整3天了)
有人可以启发我如何在这个黑暗而邪恶的问题上点燃蜡烛(不是双关语......)