合并由Heat生成的两个.wxs文件

时间:2014-03-18 14:12:05

标签: xml xslt wix dllregistration

我的WiX安装程序项目有两个我需要注册的.dll,所以我的prebuild中有两个heat.exe调用,每个调用都会输出一个.wxs文件来创建一个组件和一个directoryref。问题在于必须为每个目录指定安装目录。如果我为两者指定INSTALLFOLDER,稍后会抛出错误,因为我有重复的ID(可以理解,两个目录都在相应的wxs文件中获取了一个directoryref元素)

我的设置:

DllReg1.wxs:

<Fragment>
    <DirectoryRef Id="INSTALLFOLDER">
        <Directory Id="dir581D83B1FCCC198EE5DE7DEB6BA83639" Name="MyProgram" />
    </DirectoryRef>
</Fragment>
<Fragment>
    <ComponentGroup Id="MyComReg1">
            <!--MyComponentGroupDetails-->
    </ComponentGroup>
</Fragment>

DllReg2.wxs:

<Fragment>
    <DirectoryRef Id="INSTALLFOLDER">
        <Directory Id="dir581D83B1FCCC198EE5DE7DEB6BA83639" Name="MyProgram" />
    </DirectoryRef>
</Fragment>
<Fragment>
    <ComponentGroup Id="MyComReg2">
            <!--MyComponentGroupDetails-->
    </ComponentGroup>
</Fragment>

我需要的是一个包含以下内容的.wxs文件:

<Fragment>
    <DirectoryRef Id="INSTALLFOLDER">
        <Directory Id="dir581D83B1FCCC198EE5DE7DEB6BA83639" Name="MyProgram" />
    </DirectoryRef>
</Fragment>
<Fragment>
    <ComponentGroup Id="MyComReg1">
            <!--MyComponentGroupDetails-->
    </ComponentGroup>
    <ComponentGroup Id="MyComReg2">
            <!--MyComponentGroupDetails-->
    </ComponentGroup>
</Fragment>

是否有一种不错的方法可以通过转换从两者中选择组件,从一个中选择directoryref并将所有组件复制到新的.wxs文件中?

我意识到热量可以将多个源文件收集到一个.wxs中,但是这个选项不会像事后的转换那样顺利。目前我手工编辑最终的.wxs文件,但这显然不太理想。

提前致谢。

1 个答案:

答案 0 :(得分:2)

无需合并输出。将-srd开关与-dr开关一起使用。然后,您可能需要定义dr引用的目录,例如MyProgram

<DirectoryRef Id="INSTALLFOLDER">
    <Directory Id="MyProgram" Name="MyProgram" />
</DirectoryRef>