我正在创建一个 Visual Studio 安装项目。我想从我的组件安装中卸载系统中的另一个组件。另一个组件是从我自己使用 Visual Studio 创建的设置中安装的。
目前,当我从组件的安装操作中调用其他组件的卸载时,我收到错误代码:1618 (another MSI already running)
.
谁能建议我另一种方法来解决这个问题?
我正在创建一个 Visual Studio 安装项目。我想从我的组件安装中卸载系统中的另一个组件。另一个组件是从我自己使用 Visual Studio 创建的设置中安装的。
目前,当我从组件的安装操作中调用其他组件的卸载时,我收到错误代码:1618 (another MSI already running)
.
谁能建议我另一种方法来解决这个问题?
如果您不需要实际运行其他组件的卸载,您可以使用自定义操作来删除您打算替换的文件/文件夹。
使用自定义操作将强制您执行卸载程序将为您执行的所有清理操作。
是您正在更换某些东西,还是只是因为安装了完全不同的东西而试图卸载某些东西?
我还阅读了 Phil Wilson 的一些文章,这些文章对自定义操作很有帮助:
Phil Wilson on Custom Actions
我遇到了一个类似的问题,需要多个安装一起运行,并且找不到递归运行 MsiExec 的方法。我使用的解决方案是将安装程序与一个脚本捆绑在一起,该脚本将运行 MsiExec 一次以安装/卸载旧软件包,然后再次运行新的安装程序。客户端必须运行脚本才能安装。
如果你找到更好的方法,请告诉我。
我认为您可以uninst.exe
在安装程序开始时通过 shell 命令运行该程序.....