为 MSI 应用程序安装多个版本时卸载不起作用
Uninstall is not working when multiple version Installed for MSI application
我已经安装了多个版本的 MSI(Web 安装项目)应用程序。
如果我卸载了任何版本的 MSI,Uninstall() 函数将无法正确调用。
它仅在有单一版本的 MSI 应用程序时工作。
例如:
版本 1,具有不同的产品代码。
安装路径:C:\..
版本 2,具有不同的产品代码。
安装路径:D:\..
在卸载任何版本时,它不会正确删除该路径中的文件夹文件。 (即)不调用 Uninstall() 函数。即使我在 Uninstall() 函数中设置了警告消息框,它在安装多个版本时也不会调用。
仅在安装单一版本时显示警告消息。
我假设这是在卸载时调用的托管代码自定义操作。
没有卸载自定义操作这样的东西,只有一个说明何时调用它的条件。 Visual Studio 中托管代码 "uninstall" 自定义操作的条件类似于 $C__B24261958FB74C489482DD25851942F5=2 ,这意味着在卸载组件时调用它。无论如何,该组件没有被删除,因为安装了具有相同组件 ID 的其他 MSI,我认为这就是 Chris 的意思。该组件与其他产品共享,这就是为什么多次安装可以将同一文件安装到同一位置而一次卸载不会删除它的原因。
如我所说,您无法在 VS 安装程序中控制组件 ID 或卸载条件。目前尚不清楚解决方案可能是什么,因为我不知道您的目标是什么 - 您似乎一次又一次地安装基本相同的设置,但文件必须相同。
终于找到解决办法了,通过升级每个msi版本的产品代码,多版本卸载功能正确删除文件夹文件。
我已经安装了多个版本的 MSI(Web 安装项目)应用程序。 如果我卸载了任何版本的 MSI,Uninstall() 函数将无法正确调用。 它仅在有单一版本的 MSI 应用程序时工作。
例如:
版本 1,具有不同的产品代码。 安装路径:C:\..
版本 2,具有不同的产品代码。 安装路径:D:\..
在卸载任何版本时,它不会正确删除该路径中的文件夹文件。 (即)不调用 Uninstall() 函数。即使我在 Uninstall() 函数中设置了警告消息框,它在安装多个版本时也不会调用。
仅在安装单一版本时显示警告消息。
我假设这是在卸载时调用的托管代码自定义操作。
没有卸载自定义操作这样的东西,只有一个说明何时调用它的条件。 Visual Studio 中托管代码 "uninstall" 自定义操作的条件类似于 $C__B24261958FB74C489482DD25851942F5=2 ,这意味着在卸载组件时调用它。无论如何,该组件没有被删除,因为安装了具有相同组件 ID 的其他 MSI,我认为这就是 Chris 的意思。该组件与其他产品共享,这就是为什么多次安装可以将同一文件安装到同一位置而一次卸载不会删除它的原因。
如我所说,您无法在 VS 安装程序中控制组件 ID 或卸载条件。目前尚不清楚解决方案可能是什么,因为我不知道您的目标是什么 - 您似乎一次又一次地安装基本相同的设置,但文件必须相同。
终于找到解决办法了,通过升级每个msi版本的产品代码,多版本卸载功能正确删除文件夹文件。