片段中的InstallExecuteSequence不包含在安装程序中

问题描述

| 我有一个奇怪的问题,尽管不是很关键,但我想知道为什么会这样。 在完成了相当复杂的安装程序之后,我决定重构代码并将不同的任务抽象为单独的片段。我有在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\" />
注意:将包括该片段的全部内容,而不仅仅是您引用的自定义操作。