我如何以编程方式判断 Installshield 安装程序何时静默运行?

问题描述

我有 Installscript MSI 安装程序的历史记录(已被基本 MSI 安装程序取代),当我卸载它们时,我需要知道卸载是否正在静运行。我运行一些自定义代码来检查 .iss 文件是否存在(静卸载所必需的),如果它们不存在,我会弹出一条消息,说文件不在预期的位置。问题是,当从控制面板(不是静)卸载程序时,此代码会运行并显示消息。所以我需要一个系统变量来告诉我它在静模式下运行,所以当它不是时我可以抑制消息。

我找不到任何告诉我这一点的东西。有谁知道我可以以编程方式告诉的方法

解决方法

假设您想从安装中检测静默安装,答案取决于项目类型:

  • InstallScript 项目可以通过比较 MODE system variableSILENTMODE 来检查它们是否在静默运行
  • 基本 MSI 可以将 UILevel property 与 2 进行比较
  • InstallScript MSI 可以检查与上下文更相关的任何一个(如有必要,使用 MsiGetProperty 检索 UILevel,但要注意延迟的自定义操作;它们需要通过 {{ 3}}).
  • 为了完整起见,但不太可能与您的问题相关,套件可以参考 CustomActionData