WIX MSI条件

问题描述 投票:0回答:1

在Zabbix代理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中存在错误),因此满足条件。双NOT没有任何意义。

或者对上述情况还有其他解释吗?

wix windows-installer installer zabbix msiexec
1个回答
0
投票
https://docs.microsoft.com/en-us/windows/win32/msi/conditional-statement-syntax

看来您正在尝试进行自定义UI工作,但我不知道所有这些都与服务器名称IP地址有什么关系。

在这些情况下,我有一个自定义操作,该操作实现业务规则检查(伸出并触摸服务器或验证FQDN / IP,并将属性设置为1或0。然后,我使用互斥的控制事件(在内部文本)来生成一个有问题的对话框,或者是NewDialog向导循环的下一个对话框。

© www.soinside.com 2019 - 2024. All rights reserved.