我们使用Install Shield构建安装版本。我遇到的情况是,我们的补丁无法通过具有更高版本号的发行版进行升级,缺少该补丁中包含的组件。
在发布了完整的次要版本(即7.2.0)之后,我们发布了先前完整的次要版本(即7.1.12)的补丁。
补丁7.1.12中添加了7.2.0中不存在的文件和组件。该补丁不可卸载。
由于缺少组件,现在无法将7.1.12升级到7.2.0。一些客户特别希望升级到7.2.0,而不是更高版本(7.3.0),可以在其中添加组件来解决此问题。
先卸载7.1.12,然后再安装7.2.0,我找不到任何可解决的解决方案。
有什么办法解决吗?我们是否可以构建7.1.13作为修复错误的桥梁。或在安装7.2.0时使用自变量来解决此问题。
我环顾了注册表,我试图找出是否可以通过注册表删除组件。
我尝试删除注册表中的组件条目。那没做。
如果我删除了有效的注册表中的产品条目,但它肯定是多余的。
我还尝试从C:\ Windows \ Installer中删除补丁msi,但这没有完成。
仍然必须有一种方法可以在不删除整个产品的情况下将组件与注册表中的功能断开链接。
答案 0 :(得分:0)
这听起来像是您要尝试进行一系列Minor Upgrades,并且至少提供了7.1.12作为补丁。使用较小的升级有很多限制;必须避免需要您Change the Product Code的任何事情。在您的情况下,请注意允许添加组件,但不允许相反:
- 此更新可以将新组件添加到新功能或现有功能中。
如果满足以下任一条件,则必须更改产品代码:
- 从现有功能中删除了一个组件。
简而言之,对功能部件树的任何修改(除了添加新功能之外)都将需要更改产品代码,因此需要更改Major Upgrade。重大升级会在后台进行卸载,因此对允许交付的更改的限制较小。
您有两个选择:
维护新版本中的新组件。请注意,您不必一定要维护其中的资源:
- 此更新可以添加,删除或修改不由两个或多个功能共享的组件的文件,注册表项或快捷方式。
但是您将不得不进行其他更改以说明对资源的更改。就您而言,这可能需要在RemoveFile表中添加附加内容,并且最好使用"puncture component"模式来解决。
在注册表中摸索修改Windows Installer簿记的变通办法不是一个好主意。它可能起作用,看起来似乎起作用,或者根本不起作用。决不支持。
如果7.1.12和7.2.0两个版本都已经公开发布,那么您将处于困境。我认为您最好的选择是重新发布7.2.0,并使用新的产品代码和版本,例如7.2.1重大升级。您可以建议最终用户那些已经安装了7.2.0的用户不需要安装它。