检测 WDF 驱动升级

Detect WDF driver upgrade

我有一个驱动程序并使用 WiX 安装程序安装,使用 TAG“difx:Driver”。我的驱动程序已禁用卸载(以避免未经授权的卸载)。

我能否检测到正在升级的驱动程序/或正在升级/卸载我的 MSI,以便我可以抢先卸载驱动程序?

条件可能很艰苦。我时间不多了,恐怕只有一些提示。我认为这变得非常混乱,但我会在一分钟后回顾一下。

主要升级:在主要升级期间,WiX 构建的 MSI 文件设置以下 属性:WIX_UPGRADE_DETECTED(如果允许降级,也可以使用 WIX_DOWNGRADE_DETECTED)。这是针对正在安装的新设置,如果您愿意,可以使用版本 2。正在卸载的版本 1 安装程序有另一个 属性 集,MSI 标准 UPGRADINGPRODUCTCODE。这可能非常令人困惑。

所以结论是条件 WIX_UPGRADE_DETECTED 在主要升级方案 较新的设置 运行 中为真。要点:

  • 设置 2WIX_UPGRADE_DETECTED 为真。
  • 设置 1UPGRADINGPRODUCTCODE 是正确的 - 正在卸载。

Uninstall:条件REMOVE="ALL"仅在卸载时成立。

已安装:条件Installed对所有安装都为真除了全新安装之外的模式,以及(对许多人来说令人惊讶的)安装程序 2(新版本)在主要升级期间。重大升级是新产品,因此 Installed 条件不成立。新产品尚未安装。已安装将适用于小升级。