在Zabbix Agent MSI中,当用户打开MSI时,有以下行:
<Condition Message="Please enter the name or IP address in the Zabbix server IP/DNS field !">NOT (NOT (Installed OR WIX_UPGRADE_DETECTED OR WIX_DOWNGRADE_DETECTED)) OR ((NOT (Installed OR WIX_UPGRADE_DETECTED OR WIX_DOWNGRADE_DETECTED)) AND ((UILevel<5 AND SERVER) OR UILevel=5))</Condition>有人能解释一下其中的逻辑吗?当人们以一种更合理的方式重写条件时:
NOT (
NOT (Installed OR WIX_UPGRADE_DETECTED OR WIX_DOWNGRADE_DETECTED)
) OR (
(NOT (Installed OR WIX_UPGRADE_DETECTED OR WIX_DOWNGRADE_DETECTED))
AND ((UILevel<5 AND SERVER) OR UILevel=5)
)因此,如果为Installed=1,则由于双重NOT而满足条件(不应该是这样,因为只有在没有安装软件的情况下才会出现该消息,因此,MSI中存在错误)。double NOT没有任何意义。
或者对上面的情况有其他的解释?
发布于 2019-10-03 03:17:39
这完全由Windows Installer的条件语句语法控制
https://docs.microsoft.com/en-us/windows/win32/msi/conditional-statement-syntax
看起来你在尝试做自定义的UI工作,但我不知道所有这些与服务器名称IP地址有什么关系。
在这些场景中,我有一个自定义操作来实现业务规则检查(伸手接触服务器或验证FQDN/IP ),并将属性设置为1或0。然后,我使用互斥的控制事件(内部文本中包含条件的发布元素)来生成一个对话框来说明有问题,或者NewDialog向导循环的下一个对话框。
https://stackoverflow.com/questions/58202826
复制相似问题