我有一个弹出对话框的自定义操作。如果我的安装程序在安静模式下运行(即 msiexec 中的 /q),我想使用条件属性抑制自定义操作。你是怎样做的?
我知道我可以使用一个属性:
msiexec /i .msi /qn SUPPRESS_MY_CUSTOM_ACTION=1
接着
使用 Condition 属性:
不 SUPPRESS_MY_CUSTOM_ACTION
但是,最好能知道我是否处于安静模式。
我有一个弹出对话框的自定义操作。如果我的安装程序在安静模式下运行(即 msiexec 中的 /q),我想使用条件属性抑制自定义操作。你是怎样做的?
我知道我可以使用一个属性:
msiexec /i .msi /qn SUPPRESS_MY_CUSTOM_ACTION=1
接着
使用 Condition 属性:
不 SUPPRESS_MY_CUSTOM_ACTION
但是,最好能知道我是否处于安静模式。
同意克里斯托弗所说的。但是除了能够条件关闭UILevel
(在动作的条件下或在动作的代码本身中起作用)之外,还有另一种方法。将您设置 UI 的方式从MessageBox
直接调用更改为调用MsiProcessMessage
(例如INSTALLMESSAGE_USER
)以让 Windows Installer 显示消息框。它将在内部处理等价的检查UILevel
,但请注意,这种其他方法不适用于控制事件。
在执行序列中安排的自定义操作应该很少有 UI。一个罕见的例外是中止、重试、失败类型的对话框,其中重试可能会导致安装成功。自定义操作应检查内置UILevel 属性以确定是否适合显示 UI。
您可能不想完全抑制自定义操作,因为某些默认假设可能在没有 UI 的情况下完成。否则,您可能还需要考虑将自定义操作分解到 UI 序列和执行序列中。