【问题标题】:wix result from program execution?wix 程序执行的结果?
【发布时间】:2010-11-04 21:11:36
【问题描述】:

使用 Wix,我想运行一个可执行文件(正在安装)并捕获返回值。我通过以下方式运行可执行文件没有问题:

<CustomAction Id="UpgradeDBFromExe" FileKey="UpgradeDB.exe" ExeCommand="/update" Execute="deferred" Impersonate="no" Return="ignore"/>

但我不确定如何捕获返回值。如果我将返回更改为“检查”,那么安装程序会在失败时回滚(不是我想要发生的),而是我想稍后检查这个结果(可能通过属性)并显示警告。我的想法是使用 CustomAction 脚本来调用可执行文件并将结果存储为属性,但这看起来很混乱。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: installation wix


    【解决方案1】:

    我将假设此 CustomAction 对系统进行了更改,因此需要 privs 并且将触发计划为延迟/无模拟。正因为如此,以及它是一个 EXE 自定义操作的进程耗尽的事实,MSI 不提供设置属性的方法。如果您使用 WiX Quiet Execute Custom Action 模式,您可以捕获标准输出并将其记录下来,仅此而已。如果您使用 DLL 自定义操作类型,您可以检查 UILevel 属性并可选地弹出一个 MSI 消息框,询问用户是否要继续,并基于此您可以返回成功或失败,但作为 EXE,您有点卡住了。

    另一种方法是在执行操作之后在 UI 序列中运行另一个自定义操作,以验证 EXE 所做的操作并设置成功/失败属性,然后将一些 UI 关闭。我唯一担心的是,回滚安装为时已晚,而且用户往往不会阅读您放在他们面前的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 2015-11-29
      • 1970-01-01
      相关资源
      最近更新 更多