0

我有一个弹出对话框的自定义操作。如果我的安装程序在安静模式下运行(即 msiexec 中的 /q),我想使用条件属性抑制自定义操作。你是怎样做的?

我知道我可以使用一个属性:

msiexec /i .msi /qn SUPPRESS_MY_CUSTOM_ACTION=1

接着

使用 Condition 属性:

不 SUPPRESS_MY_CUSTOM_ACTION

但是,最好能知道我是否处于安静模式。

4

2 回答 2

1

同意克里斯托弗所说的。但是除了能够条件关闭UILevel(在动作的条件下或在动作的代码本身中起作用)之外,还有另一种方法。将您设置 UI 的方式从MessageBox直接调用更改为调用MsiProcessMessage(例如INSTALLMESSAGE_USER)以让 Windows Installer 显示消息框。它将在内部处理等价的检查UILevel,但请注意,这种其他方法不适用于控制事件。

于 2013-09-17T12:09:39.790 回答
1

在执行序列中安排的自定义操作应该很少有 UI。一个罕见的例外是中止、重试、失败类型的对话框,其中重试可能会导致安装成功。自定义操作应检查内置UILevel 属性以确定是否适合显示 UI。

您可能不想完全抑制自定义操作,因为某些默认假设可能在没有 UI 的情况下完成。否则,您可能还需要考虑将自定义操作分解到 UI 序列和执行序列中。

于 2013-09-17T00:24:17.473 回答