我的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文件,但这显然不太理想。
提前致谢。
答案 0 :(得分:2)
无需合并输出。将-srd
开关与-dr
开关一起使用。然后,您可能需要定义dr引用的目录,例如MyProgram
:
<DirectoryRef Id="INSTALLFOLDER">
<Directory Id="MyProgram" Name="MyProgram" />
</DirectoryRef>