在安装之前强制 Installshield 卸载

Posted

技术标签:

【中文标题】在安装之前强制 Installshield 卸载【英文标题】:Forcing Installshield to uninstall before an install 【发布时间】:2010-10-13 03:18:54 【问题描述】:

我有一个 InstallShield 12 安装脚本。我想在安装新版本之前卸载旧版本。我将保持包的名称不变。我该怎么做?

【问题讨论】:

【参考方案1】:

假设这不是一个 MSI 项目并且您保持相同的项目 GUID,您可以简单地在 OnMaintUIBefore 函数中调用 ComponentUninstall()。 如果项目 GUID 不同,您可以查看注册表中 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROJECT_GUID 下的卸载字符串,然后使用它执行 LaunchApp。

希望对你有帮助。

【讨论】:

【参考方案2】:

对于基于 MSI 的项目,这将通过为您的项目配置主要升级来完成。 InstallScript 项目不存在升级,但没有 Windows Installer 限制可防止您同时运行多个安装。您应该能够简单地在您的 InstallScript 代码中手动运行旧版本的卸载(可能在 OnFirstUIBefore 函数中)。

【讨论】:

实际上,现在同时运行多个安装是有限制的。 (例如,您不能从另一个安装程序启动一个安装程序。)因此,如果您希望安装程序安装 .MSI 所需的所有先决条件,则需要制作引导应用程序。我不知道究竟是哪个版本的 Windows 安装程序实现了这些限制(2.0?),但它在某处有记录。 我认为最初的问题是关于 InstallScipt 安装,而不是 MSI 安装。 InstallScript-only 安装没有 Windows Installer 的限制,因为它们不使用 MSI,因此您可以同时运行多个。这就是为什么 InstallScript 安装可以用作其他安装(包括 MSI 安装)的“引导程序”。

以上是关于在安装之前强制 Installshield 卸载的主要内容,如果未能解决你的问题,请参考以下文章

MSI没有卸载.dll文件

MSI 未卸载 .dll 文件

InstallShield6.0 如何卸载已经制作完成的安装程序?

InstallShield 执行卸载自定义动作

安装 Installshield 2010 前需要卸载无关的应用程序

如何让 InstallShield LE 自动卸载现有安装?