困惑于CostFinalize操作的含义

时间:2015-07-27 16:18:32

标签: wix windows-installer msiexec

我希望我的自定义操作用户查看和修改的功能之后执行,执行安装之前。

我试图在PublishProduct之前调用我的操作(在我看来它是正确的点),但我从WiX获得了链接错误。

<InstallUISequence>
    <Custom Action="ModifyConfigBeforeStartService" Before="PublishProduct"/>
</InstallUISequence>

错误是:

error LGHT0094: Unresolved reference to symbol 'WixAction:InstallUISequence/PublishProduct' in section 'Product:*'

然后我尝试在CostFinalize之后调用我的动作。 来自documentation

  

CostFinalize操作查询Condition表以确定计划安装哪些功能。

但是(来自同一个文档):

  

必须在启动任何允许用户查看或修改功能表选择的用户界面序列之前执行CostFinalize操作

如果用户界面尚未显示,安装程序如何检测要安装的功能?

1 个答案:

答案 0 :(得分:1)

PublishProduct存在于执行序列中而不是UI序列中。自定义操作的名称意味着它应该在StartServices之前(也在执行序列中)而不是PublishProduct操作进行调度。

文件成本核算是您学习的另一个重要概念,但在这里并不重要。我从这个必读书开始:

InstallSite: Installation Phases and In-Script Execution