适用于多个项目的通用Wix安装程序

时间:2014-03-31 18:39:10

标签: c# wix visual-studio-2013 wix3.7 post-build-event

我是Wix的新手,请原谅我使用不当的任何条款。

我有一个包含许多项目的大型解决方案,其中一些项目成为可安装的服务,可执行文件以及其他项目。在具有安装程序的项目的后期构建事件中,我运行以下命令以生成包含安装程序所需的所有文件的片段。

"C:\Program Files (x86)\WiX Toolset v3.8\bin\heat.exe" dir $(TargetDir) -ag -cg harvestedComponents -out $(TargetDir)$(ProjectName).wxs

我想创建一个单独的Wix安装项目,该项目有一个组件引用占位符,然后我可以链接到该片段。这样我就可以重用一个安装项目的功能,而不需要为我拥有的每个可安装项目安装项目。从那里我将有第二个构建事件,它将链接/编译片段和项目,同时将标志传递给通用安装程序项目,该项目可以打开/关闭安装功能,例如添加事件源,不同的自定义操作等。 / p>

所以我的问题是如何从可执行项目的后期构建事件中链接/编译片段与通用Wix项目。我猜这看起来像是:

Candle/Light.exe fragment.wxs generic.wxs -eventLog true -customAction1 true -msiName MyInstaller.msi

我会在通用文件中使用eventLog customAction1的值来启用/禁用安装功能。

对此感到困惑,希望这是可能的。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你想在你的通用WiX源文件中引用由heat($(TargetDir)$(ProjectName).wxs)创建的片段吗?
如果是这种情况,您只需在ComponentGroupRef - 元素下方添加Feature - 标记(而不是通常使用的ComponentRef - 元素)。作为elemenet的Id,您必须使用您在热量命令行中使用的ComponentGroup的名称,在您的示例中为harvestedComponents。 E.g。

<Feature Id="MyFeature" ...>
    ...
    <ComponentRef Id="aNormalComponentFromTheCurrentFile" ... />
    ...
    <ComponentGroupRef Id="harvestedComponents" />
</Feature>

还是我错过了这一点?