问题描述
我有 Installscript MSI 安装程序的历史记录(已被基本 MSI 安装程序取代),当我卸载它们时,我需要知道卸载是否正在静默运行。我运行一些自定义代码来检查 .iss 文件是否存在(静默卸载所必需的),如果它们不存在,我会弹出一条消息,说文件不在预期的位置。问题是,当从控制面板(不是静默)卸载程序时,此代码会运行并显示消息。所以我需要一个系统变量来告诉我它在静默模式下运行,所以当它不是时我可以抑制消息。
我找不到任何告诉我这一点的东西。有谁知道我可以以编程方式告诉的方法?
解决方法
假设您想从安装中检测静默安装,答案取决于项目类型:
- InstallScript 项目可以通过比较
MODE
system variable 和SILENTMODE
来检查它们是否在静默运行 - 基本 MSI 可以将
UILevel
property 与 2 进行比较 - InstallScript MSI 可以检查与上下文更相关的任何一个(如有必要,使用 MsiGetProperty 检索
UILevel
,但要注意延迟的自定义操作;它们需要通过 {{ 3}}). - 为了完整起见,但不太可能与您的问题相关,套件可以参考 CustomActionData。