我有一个大约3000行的Product.wxs文件。我把它分成不同的文件。但是其中一些文件也非常庞大,维护它会很痛苦。 其中一个文件包含文件结构,如下所示:
<Directory Id="TARGETDIR" Name="SourceDir">
<Component Id="ComponentId" .... >
....
<Component />
<Directory />
Id =“ComponentId”的组件包含许多RegistryValues(600行)。我想将此组件和所有注册表值放入一个单独的文件中,并引用它。我尝试过ComponentRef但它在Directory节点内不起作用。 有办法吗? 先谢谢你。
答案 0 :(得分:3)
是的,这基本上是大型安装的理想用例。您应该将所有类似的相关组件移动到他们自己的wxs文件中,这样如果您需要修改包含的文件,则应该更容易找到它们。
使用wix,您可以在<Fragment>
标记中定义任何XML定义块。这只是为安装程序定义了一个独立的,理想相关的定义。编译安装程序时,整个片段将被丢弃,除非有一个引用将其绑定到您的产品中。
我认为您不能使用ComponentRef来定义组件的目录,因此在尝试在DirectoryRef标记下使用它时可能会让您感到悲伤(请参阅DirectoryRef和ComponentRef父母和孩子)。您应该要求在组件定义之上具有DirectoryRef / Directory,或者对Component标签使用Directory =“”值。
要引用组件,您应该使用ComponentGroup标记中的ComponentRef或使用Feature标记中的ComponentRef。