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

Visual studio 2008 为MSI应用程序安装多个版本时,卸载不起作用,visual-studio-2008,uninstallation,windows-installer,Visual Studio 2008,Uninstallation,Windows Installer,我已经安装了MSI(Web安装项目)应用程序的多个版本。 如果我卸载了任何版本的MSI,Uninstall()函数调用不正确。 它只在MSI应用程序只有一个版本时工作 例如: 版本1,具有不同的产品代码。 安装路径:C:\ 版本2,具有不同的产品代码。 安装路径:D:\ 卸载任何版本时,都不会正确删除该路径中的文件夹文件。(即)未调用Uninstall()函数。即使我在Uninstall()函数中设置了警报消息框,当安装了多个版本时,它也不会调用 它仅在安装单个版本时显示警报消息。我假设这是卸载

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

例如:

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

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

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


它仅在安装单个版本时显示警报消息。

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

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


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

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

听起来像是违反了组件规则。您是否记录了卸载并查看了它?嗨,菲尔,有一个误解,我们不是在同一个位置安装,第一个版本的安装路径被认为是**C:\..**第二个版本安装在**D:\..**中。在添加/删除程序中,有两个版本的msi卸载程序。正如我前面提到的,“卸载任何版本时,都不会正确删除该路径中的文件夹文件。(即)未调用Uninstall()函数。即使我在Uninstall()函数中设置了警报消息框,当安装了多个版本时,它也不会调用。它只在安装了单一版本时才会显示警告消息。您需要更好地澄清您的问题。您尚未明确确认“Uninstall()函数”表示卸载自定义操作。还不清楚为什么不删除文件和文件夹,因为自定义操作与删除文件无关-您的MSI将卸载它安装的所有文件。如果卸载是一个自定义操作,并且是托管代码(您也没有确认),那么该程序集将安装到哪里?