2

因此,我尝试在应用程序完成安装后(尽管实际上,运行辅助应用程序并不重要,因为它在安装过程中不会与已安装的文件交互),运行另一个程序与应用程序捆绑在一起。相关代码(用“...”替换各种内容:

<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" />,我认为这并不理想。

4

1 回答 1

5

CostFinalize 发生在 InstallFiles 延迟操作运行(实际放置文件)之前很久。因此,CustomAction 静默失败(因为文件不可用)(因为 Return 被忽略)

您需要至少在 InstallFiles 之后安排您的 CustomAction 并延迟,或者如果 CustomAction 不能延迟运行,那么它必须在 InstallFinalize 之后(当然,它不会在 InstallFinalize 之后导致回滚)。

于 2008-11-19T18:50:44.483 回答