我正在使用WiX 3.5编写安装程序,以获取最新版本的软件。以前版本的安装程序是使用InstallAware 8编写的。在安装过程中我想删除旧版本,但InstallAware会执行一些奇怪的操作,因此正常的RemoveExistingProducts方法不起作用。 msiexec / x {PRODUCTCODE}也没有。
当RemoveExistingProducts运行时,会弹出一个对话框,询问旧安装中.msi文件的位置。我可以在注册表中找到它的位置,如果我在对话框中输入该位置,卸载工作正常。但是我想对话框没有显示,有什么方法我可以告诉RemoveExistingProducts在哪里找到它?
答案 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时查看正确的注册表位置。