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