首页 文章

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

提问于
浏览
0

我目前有一个带有引导程序的Windows产品,在安装过程中运行5-6个MSI . 通过在系统上直接运行这些MSI的较新版本,可以在带外升级其中几个MSI . 当主要产品被删除时,引导程序当前用于管理卸载所有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?

2 回答

  • 0

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

  • 0

    一种可能的方法是让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从系统中移除...

相关问题