首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法让一个“父”MSI卸载多个MSI?

有没有办法让一个“父”MSI卸载多个MSI?
EN

Stack Overflow用户
提问于 2011-11-12 03:36:54
回答 2查看 1.1K关注 0票数 0

我目前有一个带有引导程序的windows产品,可以在安装过程中运行5-6个MSIs。其中几个MSI可以通过直接在系统上运行这些MSI的更新版本来进行带外升级。bootstrapper当前用于在移除主产品时管理卸载所有MSI。有没有办法从卸载逻辑中删除引导程序?我想找到一种卸载主要产品MSI的方法来处理所有其他“子”MSI的删除。

例如:我有一个产品安装程序Foo.exe,可以在安装过程中运行A.msi、B.msi和C.msi。在应用程序的生命周期内,用户将B.msi升级到B'.msi,将C.msi升级到C'.msi,现在用户安装了A.msi、B'.msi和C'.msi (只有A.msi显示在ARP中)。如何让卸载A.msi同时删除B'.msi和C'.msi?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-18 21:53:22

一种可能的方法是让A.msi安装Uninstaller.msi。Uninstaller.msi基本上是一个空的msi,具有用于A.msi、B.msi和C.msi的升级代码的升级表条目。Uninstaller.msi还将PublishProduct标准操作条件设置为'0‘,因此它永远不会运行。然后,A.msi手动将Uninstaller.msi连接到产品A的ARP条目。当Uninstaller.msi运行时,它将执行FindRelatedProducts、RemoveExistingProducts (删除所有3个msis),并在不将自身注册为windows“已安装”的情况下结束。这样就可以在一个可回滚的事务中完成工作。唯一的诀窍就是弄清楚当一切都说完了做了之后如何把Uninstaller.msi从系统中移除……

票数 0
EN

Stack Overflow用户

发布于 2011-11-13 09:43:18

您应该能够通过使用upgrade表创建一个主要升级来卸载旧产品。也许你可以看看http://www.appdeploy.com/tips/detail.asp?id=106http://msdn.microsoft.com/en-us/library/windows/desktop/aa372374(v=vs.85).aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8099032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档