installscript如何知道是升级、修复还是卸载

how to know whether upgrading, repairing or uninstalling in installscript

我正在尝试在 Basic MSI 项目中编写一些 InstallScript 代码。我想知道如何确定安装是升级修复卸载

None 这些作品在 InstallScript -

 REMOVE~="ALL"
 NOT Installed
 REINSTALL<>""
 PATCH<>""
 REMOVEALLMODE

我发现 this blog 并且 MAINTENANCE 标志有效。但它只能确定它是否是 Initial Install 或 Not。在升级、修复和卸载中始终 "TRUE"。

感谢任何帮助。

您发布的示例字符串都是 examples of Windows Installer Conditions. You can't just cut and paste those into an InstallScript if. Instead you have to call MsiEvaluateCondition 让 Windows 安装程序处理它们。

// Note that MSICONDITION_TRUE is 1; I forgot to test whether it's defined
if MSICONDITION_TRUE = MsiEvaluateCondition(hMSI, "Not Installed") then
    MessageBox("First-time installation", INFORMATION;
endif;

请注意,这仅适用于 MSI-based 安装。对于纯 InstallScript 项目,Windows 安装程序 API 在很大程度上不可用或无法使用,您应该将代码放在适当的事件处理程序中(例如 OnFirstUIBefore)。