所以,我正在尝试,在应用程序完成安装后(虽然实际上,在运行辅助应用程序时无关紧要,因为它在安装期间不与已安装的文件交互),运行另一个与应用程序捆绑在一起的程序。相关代码(用“......”替换各种内容:
<directory ...>
<component ...>
<File Id="IDINST" ... />
</component>
</directory>
...
<CustomAction Id="IDACTION" FileKey="IDINST" ExeCommand="..." Return="ignore" />
...
<InstallExecuteSequence>
<Custom Action="IDACTION" After="CostFinalize" />
</InstallExecuteSequence>
我检查了目录,文件是我预期的位置,但是在安装过程后没有执行。事实上,我甚至不想要安装该文件,只需运行然后删除即可。但我暂时不理睬这一点。无论如何,我已经看到了几个在对话后触发动作的例子,但由于我现在正在使用<UIRef Id="WixUI_Minimal" />
,我认为这不是理想的。
答案 0 :(得分:5)
CostFinalize在InstallFiles延迟操作运行(实际放置文件)之前很久就会发生。因此,CustomAction以静默方式失败(因为文件不可用)(因为Return是忽略的)
您需要至少在InstallFiles之后安排CustomAction,并且如果CustomAction不能延迟运行,那么它必须在InstallFinalize之后(当然,它不能在InstallFinalize之后导致回滚)。