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