【问题标题】:DLLs are not replaced during minor upgrade次要升级期间不会替换 DLL
【发布时间】:2017-09-03 15:25:47
【问题描述】:

在小升级期间,我收到以下错误:

SELMGR:ComponentId '{C1B06529-966C-2A82-EF0C-A5CFA0113872}' 已注册到功能 'X',但未出现在组件表中。不支持从功能中删除组件!

我不明白为什么会收到此错误或 installshield 为何会尝试删除它。这个值确实不在组件表中,但在第一次安装时它不存在

在第一次安装时,我有以下行:

执行操作:ComponentRegister(ComponentId={C1B06529-966C-2A82-EF0C-A5CFA0113872},KeyPath=[path]\Newtonsoft.Json.dll,State=3,,Disk=1,SharedDllRefCount=1,BinaryType=0 )

有没有办法告诉 installshield 忽略这个?

【问题讨论】:

    标签: windows-installer installshield installshield-2016


    【解决方案1】:

    简短回答:使用重大升级来交付最新版本的应用程序。


    您是否在最新版本的设置中删除了文件 Newtonsoft.Json.dll?使用小升级必须遵循的规则非常严格。请阅读此处的“更新规则”部分:http://www.installsite.org/pages/en/msi/updates.htm。还有一些进一步的限制 - 该列表很旧。您似乎删除了上述文件,这会导致您的小升级失败。

    大多数人最终会使用主要升级而不是次要升级 - 这更加灵活和可靠 - 在您的情况下,您似乎必须这样做。如果我想创建一个包含几个更新文件的小补丁,并且不对设置的组件和功能结构进行其他更改,我只会使用次要升级。只有在这些情况下,我才觉得小幅升级很实用。

    Installshield 有很好的帮助材料,可以帮助您进行重大升级。只需在在线帮助中搜索即可。 Here is just an online version of their documentation for reference。基本上你去“Upgrades view”并按照你在那里看到的说明进行操作。


    另请参阅Michael Urman 的答案(据我所知,Installshield 开发人员):Installshield minor upgrade component。他提供了另外两个很好的链接供您检查。

    【讨论】:

    • 问题是 Installshield 添加了此依赖项,因为“Scan at Build”的值是“依赖项和属性”。我把它改成了properties only,现在我没有这个问题了
    • 好的,但大升级可能仍然是您升级问题的解决方案。除非你还没有上线并且小升级只是一个测试。就像我说的那样,小升级基本上可以在整体设置功能和组件结构没有变化的情况下提供一些更新的文件,在大多数其他情况下,人们最终会使用大升级。
    猜你喜欢
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    相关资源
    最近更新 更多