【发布时间】:2014-10-17 01:59:16
【问题描述】:
这是一个我想实现的场景。但我没有好主意来实现它。
假设今天有人得到了安装程序并安装了它。明天有人得到一个更高版本号的新安装程序,想在同一台电脑上安装它。更高版本的安装程序需要做以下事情。
- 应该有一个对话框让用户选择要使用的模块 升级。
- 根据用户的选择更新这些模块,但是 不要删除用户没有选择的其他模块。
我已经尝试使用Majorupgrade 元素来实现这一点。但它总是删除我们没有选择的模块。见下文:
例如,在之前的版本中,我们选择了 feature A 和 feature B 进行安装。而在新版本中我们只选择feature A进行更新。 特征a更新成功,但同时删除了特征B。
有没有人有一个好主意来实现这个?
提前致谢
【问题讨论】:
-
您确定用户想要这种复杂性并且有知识做出这样的决定吗?
-
是的,我确定。其实我有一个想法来实现这一点。但这不是一件好事。见下文:只需将特征 A 和特征 B 中组件的属性“永久”设置为“是”。选择要更新的功能a。使用客户操作删除与功能 A 相关的所有文件。然后安装程序将安装丢失的文件。
-
嗯...你必须阅读 Minor Upgrade 然后通过控制台安装它(你不能通过 UI - 不支持小升级)然后阅读REINSTALL 属性 - 如您所见,您应该能够设置要升级的功能。我从不这样做,所以我无法为您提供示例代码,抱歉。显示如何全部升级的示例:
msiexec /i setup.msi REINSTALL=ALL REINSTALLMODE=vomusREINSTALLMODE and its attributes -
您可以从每个模块的单独 MSI 行开始。在集合中分配匹配的版本号可能有助于用户做出升级决策。带有 WiX 的 DTF 的自定义 EXE UI 可以显示升级/保留/立即安装选项。
-
这不是 Windows Installer 的工作方式,您将走上一条会导致很多问题的道路。您可以通过常规的主要升级来做同样的事情,并且您的组件实际上只是用户在升级期间选择的特性树中的特性。无论如何,您必须将所有“模块”放在所有 MSI 中,因为您用于主要升级的 MSI 也是新客户端的全新安装。
标签: wix installation upgrade wix3.8