我安装了多个版本的MSI(Web Setup Project)应用程序。 如果我卸载了任何版本的MSI,则卸载()功能无法正常调用。 它仅在有单一版本的MSI应用程序时才有效。
例如:
版本1,具有不同的产品代码。 安装路径:C:\ ..
版本2,具有不同的产品代码。 安装路径:D:\ ..
在卸载任何版本时,它不会在该路径中正确删除文件夹文件。 (即)未调用Uninstall()函数。即使我在Uninstall()函数中设置了警告消息框,当多个版本安装时它也不会调用。
仅在安装单个版本时显示警告消息。
答案 0 :(得分:0)
我假设这是在卸载时调用的托管代码自定义操作。
没有卸载自定义操作,只是说应该调用它的条件。托管代码的条件"卸载" Visual Studio中的自定义操作类似于$ C__B24261958FB74C489482DD25851942F5 = 2,这意味着在卸载组件时调用它。无论如何,组件没有被删除,因为有其他MSI安装了相同的组件ID,这正是克里斯所假设的。该组件与其他产品共享,这就是为什么多个安装可以将同一文件安装到同一位置并且一个卸载无法将其删除的原因。
正如我所说,您无法在VS设置中控制组件ID或卸载条件。目前还不清楚解决方案可能是什么,因为我不知道你的目标是什么 - 你似乎一次又一次地安装基本相同的设置,但文件必须是相同的。
答案 1 :(得分:0)
我们最后通过升级每个msi版本的产品代码找到了解决方案,卸载功能可以在多个版本的情况下正确删除文件夹文件。