0

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

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 忽略这个?

4

1 回答 1

1

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


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

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

Installshield 有很好的帮助材料,可以帮助您进行重大升级。只需在在线帮助中搜索即可。这里只是他们的文档的在线版本供参考。本质上,您转到“升级视图”并按照您在那里看到的说明进行操作。


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

于 2017-09-04T00:38:16.737 回答