问题描述
|
我有一个奇怪的问题,尽管不是很关键,但我想知道为什么会这样。
在完成了相当复杂的安装程序之后,我决定重构代码并将不同的任务抽象为单独的片段。我有在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的有效子代。
解决方法
除非您从Product / Module元素引用了片段中的任何元素,否则不会包含片段的内容。因此,在您的情况下,应将以下行添加到Product.wxs中:
<CustomActionRef Id=\"CA_SSLCertGenerateInstall\" />
注意:将包括该片段的全部内容,而不仅仅是您引用的自定义操作。