我有一个奇怪的问题,虽然不是很关键,但我想知道为什么会发生这种情况。
完成相当复杂的安装程序后,我决定重构代码并将不同的任务抽象为单独的片段。我有在WriteRegistryValues操作后调用的C#CustomAction。
<InstallExecuteSequence>
<Custom Action="CA_SSLCertGenerateInstall" After="WriteRegistryValues">
<![CDATA[NOT REMOVE]]>
</Custom>
</InstallExecuteSequence>
但是,当我将上述代码段从Product.wxs移动到Fragment中时,dll不会包含在安装程序中,显然不会调用CustomAction。
查看架构文档(http://wix.sourceforge.net/manual-wix3/wix_xsd_fragment.htm)时,InstallExecuteSequence显然是Fragment的有效子项。
答案 0 :(得分:9)
除非您从Product / Module元素引用其中的任何元素,否则不会包含片段的内容。因此,在您的情况下,您应该将以下行添加到Product.wxs:
<CustomActionRef Id="CA_SSLCertGenerateInstall" />
注意:将包含该片段的全部内容,而不仅仅是您引用的自定义操作。