Wix Windows Installer实例转换如何与升级交互?

Wix Windows Installer实例转换如何与升级交互?,wix,upgrade,Wix,Upgrade,我已经创建了一个安装包(通过WIX),它利用实例转换允许自己在一台机器上多次安装。我没有考虑太多,而是添加了对主要升级的支持(正如我以前多次做的那样) 今天,第一次安装了该产品的新版本,其行为与我预期的不完全相同:尽管安装的目标是一个新实例,但似乎所有其他实例(均为旧版本)都已卸载 事后看来,这并不特别令人惊讶,因为所有实例都共享相同的升级代码。根据该行动的文件,该文件和版本是确定哪些产品应作为删除目标的唯一标准 如何编写此安装包,以便在安装新版本时,只升级目标实例,而不升级其他实例 我怀疑答案

我已经创建了一个安装包(通过WIX),它利用实例转换允许自己在一台机器上多次安装。我没有考虑太多,而是添加了对主要升级的支持(正如我以前多次做的那样)

今天,第一次安装了该产品的新版本,其行为与我预期的不完全相同:尽管安装的目标是一个新实例,但似乎所有其他实例(均为旧版本)都已卸载

事后看来,这并不特别令人惊讶,因为所有实例都共享相同的升级代码。根据该行动的文件,该文件和版本是确定哪些产品应作为删除目标的唯一标准

如何编写此安装包,以便在安装新版本时,只升级目标实例,而不升级其他实例


我怀疑答案可能是我应该完全删除“主要升级”功能,但我已经看到几个使用它的多实例安装的例子,所以我不确定。另外,我觉得我可能没有正确处理产品代码,因为它应该用版本号更新,但实例转换使用固定的产品代码。不知何故,我不认为这是这里的问题,但我想我应该提到它以防万一。

我曾经用InstallScript编写了一个引导程序来支持类似的故事。这是在InstallShield包含此功能之前,基于我与他们共享的工作

基本上,我的代码做了大量工作来反映MSI存储中的实例转换,然后查询MSI API以了解哪些实例已经安装,以及当前MSI是表示维护UI(相同的ProductCode和相同的PackageCode)还是主要升级(不同的ProductCode)或小升级(相同的产品代码不同的PackageCode)

您可以在以下网站了解更多详细信息:

下面是关于它在IS2009+中的工作原理的解释,以及引导程序UI的屏幕截图


谢谢你的回复,克里斯。唉,通过阅读这些帖子,我仍然不清楚我应该如何处理这些个案。如果我需要允许多个不同版本的实例,您是否同意在包中编写“主要升级”无法满足我的需要?您可以进行主要升级,但必须记住,每个实例都有自己的UpgradeCode系列,并且您需要能够选择在哪个实例上执行升级。最后,您可以将X个实例安装到具有不同版本和不同配置数据的不同目录中。嗨,Chris,您所说的“每个实例都有自己的升级代码系列”是什么意思?不是每个实例都有相同的升级代码,但有不同的ProductCode吗?如果您希望每个实例都能够支持主要升级,那么每个实例都必须有自己的升级代码。否则,其中一个实例的主要升级将卸载所有其他实例。(FindRelatedProducts按UpgradeCode搜索)@TylerH我不确定您的任何编辑是否特别值得,但我想知道为什么您将特定和相关的
主要升级
标记更改为非常通用的
升级
标记?我不确定您是否相信这一推理。如果“升级”是如此的泛化以至于毫无用处,你认为“主要升级”有什么价值?除了问题正文中没有提到的“升级”之外,还有什么有用的区别?标签只有两个追随者,没有使用指南。我已经从网站上删除了“次要升级”标签,因为该标签上没有使用指南或追随者(并且只有大约10次使用)。“主要升级”标记在删除之前只剩下几个问题。如果您认为“主要升级”标记有特殊价值,请建议对标记wiki和wiki摘录进行一些编辑,以澄清其用途。如果您打算使用“主要升级”来表示特定于Wix的某些用例(例如,如果Wix中有一个称为“主要升级”的功能、模块或流程),请创建一个新标签(“Wix主要升级”是避免歧义的理想名称)另外,在wiki和wiki摘录中有一些描述。@TylerH也许
主要升级
标记不是特别有用,但我非常确定它比
升级
标记更有用,至少在这种情况下是这样的。有人在为他们的安装包(就像我一样)配置“主要升级”时遇到问题,可能会尝试使用该标记来优化他们的搜索。
upgrade
标签似乎适用于范围广泛的主题,但可能大多数人在系统升级后遇到问题,这不是这个问题的目的。@TylerH当我质疑事物的有用性时,包括你的评论“我不确定你是否相信这条推理路线”。这似乎表明我的评论是不真诚的,我认为在这一点上根本没有理由这样说。