【问题标题】:Installshield upgrade a patch with extra componentsInstallshield 升级带有额外组件的补丁
【发布时间】:2018-07-10 09:41:36
【问题描述】:

我们使用 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,但没有这样做。
仍然必须有一种方法可以在不删除整个产品的情况下将组件与注册表中的功能取消链接。

【问题讨论】:

    标签: installshield


    【解决方案1】:

    听起来你正在尝试做一系列Minor Upgrades,至少 7.1.12 作为补丁交付。使用次要升级会带来各种限制;必须避免任何需要您Change the Product Code 的事情。在您的情况下,请注意允许添加组件,但不能相反:

    • 此更新可以将新组件添加到新功能或现有功能中。

    如果更新符合以下任何一项,则必须更改产品代码:

    • 从现有功能中删除了一个组件。

    简而言之,对功能组件树的任何修改,除了添加新的,都需要更改产品代码,因此需要更改Major Upgrade。重大升级会在后台执行卸载,因此对允许交付的更改的限制较少。

    你有两个选择:

    1. 在安装新版本之前,使用主要升级或其他方式卸载旧安装。如果可能的话,这是我推荐的。使用小升级通常会带来更多的困难而不是好处(尽管您的需求可能会有所不同)。
    2. 在新版本中维护新组件。请注意,您不必维护其中的资源:

      • 此更新可以添加、删除或修改两个或多个功能不共享的组件的文件、注册表项或快捷方式。

      但是您必须进行额外的更改以说明对资源的更改。在您的情况下,这可能需要添加到 RemoveFile 表中,并且最好使用 "puncture component" 模式。

    通过注册表寻找修改 Windows 安装程序簿记的解决方法是一个坏主意。它可能起作用,它可能看起来起作用,或者它可能根本不起作用。在任何情况下都不受支持。

    如果 7.1.12 和 7.2.0 两个版本都已公开发布,那么您的处境就很艰难。我认为您最好的选择是使用新的产品代码和版本重新发布 7.2.0,例如7.2.1 重大升级。您可以建议您的最终用户,那些已经在 7.2.0 的用户不需要安装它。

    【讨论】:

    • 我想我最终会结合你的建议。发布 7.2.x 作为次要版本只是为了添加缺少的组件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    相关资源
    最近更新 更多