【发布时间】:2017-10-26 14:37:12
【问题描述】:
我有一个使用 InstallShield 2015 制作的旧安装程序,它不基于 MSI(我尝试使用 7zip 打开它,但无法 --> 基于非 MSI,对吗?)。 一般来说,我需要停止使用 InstallShield 并迁移到 Wix。
- 是否有可能将 InstallShield 转换为 Wix?
- 使用 Wix,我需要检测当前是否安装了以前的版本(InstallShield 版本)并自动卸载它,然后继续正常的 Wix 进程。这样的事情可能吗?
谢谢你:-)
【问题讨论】:
-
安装程序,是一个 EXE 还是你在谈论一个 .ism InstallShield 项目文件?我不认为使用 7-zip 来评估这是否是一个 msi 是可行的。我会尝试使用命令行来查看是否可以从 EXE 中提取包。尝试使用
\a标志运行您的设置,看看它是否为您提取了包。 -
另一个检查这个应用程序是否已经安装在测试系统上的事情,在注册表中查找卸载键。这应该告诉您它是否是 MSI 安装。如果是 64 位安装,请检查
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall或 64 位注册表项。 -
如果它是一个可执行文件,它仍然可能是一个包含 MSI 文件的 exe。这就是您应该验证的内容,因为如果它真的是基于 MSI 的,那么您可以进行重大升级。该卸载键可能包含一个卸载字符串和一个 guid,这表明它是一个 MSI 安装。
-
要提取各种 InstallShield 构建的引导程序,请参阅 Programmatically extract contents of InstallShield setup.exe。根据安装程序的类型,您将其包含在 WiX 中的选项会有所不同。
-
@DanielLee 它是一个 .ism 项目文件,它创建一个名为
BTSetup.exe的 exe 文件。使用\a我得到了这个:The setup command line is invalid. The setup cannot proceed.。我设法提取了一个 MSI 文件,有点。我这样做了:BTSetup.exe /silent /stage_only ISRootStagePath="c:\bbb",然后提取了一个名为setup.exe的文件,然后我这样做了:setup.exe /s /x /b"c:\ccc" /v"/qn",这产生了一个名为foobar.msi的 MSI 文件。我从中提取了 UpgradeCode 以在 Wix 中执行MajorUpgrade,但它不起作用。此外,此 UpgradeCode 与 .ism 文件中的不同。
标签: wix