在RemoveExistingProducts中指定卸载.msi的位置

时间:2011-03-11 14:25:27

标签: wix windows-installer uninstall installaware

我正在使用WiX 3.5编写安装程序,以获取最新版本的软件。以前版本的安装程序是使用InstallAware 8编写的。在安装过程中我想删除旧版本,但InstallAware会执行一些奇怪的操作,因此正常的RemoveExistingProducts方法不起作用。 msiexec / x {PRODUCTCODE}也没有。

当RemoveExistingProducts运行时,会弹出一个对话框,询问旧安装中.msi文件的位置。我可以在注册表中找到它的位置,如果我在对话框中输入该位置,卸载工作正常。但是我想对话框没有显示,有什么方法我可以告诉RemoveExistingProducts在哪里找到它?

3 个答案:

答案 0 :(得分:2)

似乎违反了一些避免提示来源的规则。看看these recommendations帮助。

答案 1 :(得分:1)

除了这个答案,请同时查看以下答案:" different ways to uninstall an MSI"。

签入以查看是否为旧设置定义了自定义卸载字符串:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ YOUR GUID HERE \ UninstallString

这是控制面板中添加/删除小程序使用的最常见位置。如果您在此处找到卸载字符串,则可以在运行新安装之前通过自定义操作运行卸载。有点难看,我宁愿通过setup.exe运行安装过程。

另一个地点是:

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \ Installer程序\的UserData \ S-1-5-18 \产品

在这里您可以找到打包的GUID。检查每个GUID,然后在" InstallProperties "对于 InstallSource 。此路径是安装引擎将查找卸载应用程序所需的MSI文件的搜索路径。

答案 2 :(得分:0)

HKLM\Software\Microsoft\Windows\CurrentVerison\Uninstall\<GUID_or_product_name>\WindowsInstaller键设置为1后,您需要查看HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\<mangled_guid>\InstallProperties\InstallSource以查看它认为缓存.msi的位置。基本上,确保在搜索InstallSource时查看正确的注册表位置。