wix - WIX MSI 条件
问题描述
在 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 中存在错误)。双NOT
标毫无意义。
还是对上述条件有其他解释?
解决方案
这全部由 Windows Installer 的条件语句语法控制
https://docs.microsoft.com/en-us/windows/win32/msi/conditional-statement-syntax
您似乎正在尝试进行自定义 UI 工作,但我不知道所有这些与服务器名称 IP 地址有何关系。
在这些场景中,我有一个自定义操作来实现业务规则检查(伸出并触摸服务器或验证 FQDN/IP )并将属性设置为 1 或 0。然后我使用互斥控制事件(在内部发布带有 Condition 的元素text ) 生成一个说明存在问题的对话框或 NewDialog 向导循环的下一个对话框。
推荐阅读
- python - python用默认参数输入abstractmethod
- python - 您可以使用 SQLAlchemy 将表值函数映射到声明性基吗
- wordpress - ubuntu apache2 服务器中 cloudflare 的 SSL 证书问题
- html - 宽度足够时嵌套表不内联?
- angular - ./node_modules/ngx-window-token/fesm2015/ngx-window-token.mjs 中的错误。无法从非 EcmaScript 模块导入命名导出“InjectionToken”
- c# - MS Graph SDK .NET 从 SharePoint 库中获取所有项目,即使已签出
- java - 在结构化日志记录中处理堆栈跟踪
- c# - 使用 DI 并使用 appsettings.json 将 Nlog 日志记录到数据库 .NET 5.0
- python - 如何将 scalelayer 使用的 add_weight 张量流转换为 pytorch
- ply - PLY - 在 C 样式注释中转义新行