为MSI应用程序安装多个版本时,卸载不起作用



我安装了多个版本的MSI(Web安装项目)应用程序。如果我卸载了MSI的任何版本,Uninstall()函数调用不正确。只有当MSI应用程序有单一版本时,它才能工作。

例如:

版本1,具有不同的产品代码。安装路径:C:\。。

版本2,具有不同的产品代码。安装路径:D:\。。

卸载任何版本时,都不会正确删除该路径中的文件夹文件。(即)未调用Uninstall()函数。即使我在Uninstall()函数中设置了警告消息框,当安装多个版本时,它不会调用。

仅当安装了单一版本时才会显示警报消息。

我假设这是在卸载时调用的托管代码自定义操作。

没有卸载自定义操作,只有一个条件来说明何时应该调用它。Visual Studio中托管代码"卸载"自定义操作的条件类似于$C_B24261958FB74C489482DD25851942F5=2,这意味着在卸载组件时调用它。无论如何,该组件并没有被删除,因为安装了其他具有相同组件ID的MSIs,我想这就是Chris所得到的。该组件与其他产品共享,这就是为什么多次安装可以将同一文件安装到同一位置,而一次卸载不会将其删除

正如我所说,在VS设置中,您无法控制组件ID或卸载条件。目前还不清楚解决方案是什么,因为我不知道你的目标是什么——你似乎一次又一次地安装基本相同的安装程序,但文件必须相同。

我们终于找到了解决方案,通过升级每个msi版本的产品代码,在多个版本的情况下正确卸载功能删除文件夹文件。

最新更新