-1

我在字段上的位置很少,初始 .msi 相同,有大约 2000 个文件(多种文件类型)。但是,我必须根据需要将补丁发送到少数几个位置,因此补丁应该包含更少的文件(有时只有 1 个文件作为修复)。我无法创建仅包含一个文件或几个要添加/更新但还必须包含所有原始文件集的文件的补丁 (.msp)。这可以通过任何方式实现吗?请帮忙 !!

此外,我不想进行重大升级,因为一些原始文件是日志和数据库文件,需要保持完整且无法删除。

当我用简单的文本文件尝试这个场景时,我的 .msi 有 3 个文本文件,而 .msp 只有 1 个我要更新的文本文件,一切都成功了,我可以看到更改。但是当我尝试使用我的实际文件夹时,我收到了这个错误:-

MSI (s) (A0:70) [16:17:59:147]: SELMGR: ComponentId '{B826B564-A3C4-45AB-9623-FB0089831140}' 已注册为功能 'ProductFeature',但不存在于组件中桌子。不支持从功能中删除组件!MSI (s) (A0:70) [16:17:59:147]:SELMGR:不支持从功能中删除组件

它所指的组件是一个dll。当涉及到 dll 时,我是否遗漏了什么?

4

3 回答 3

0

试图完全了解您的要求,但似乎您正在尝试删除一个组件作为所谓的小升级的一部分。您想要做的而不是删除组件只是保留组件,而是从该组件中删除文件属性。本质上是创建一个空组件,直到您可以进行下一次重大升级。

于 2020-01-16T11:24:58.520 回答
0

在补丁中删除文件的唯一方法是“刺穿”组件。为此,您可以将组件的 Transitive 及物标记为 true,并在组件上放置一个始终评估为 false 的条件。您仍必须将组件和文件保留在 MSI/MSP 中,但您可以提供零字节文件。

当应用次要升级/补丁时,组件将重新评估并自行卸载,因为条件为假。

每当您进行下一次重大升级时,您都可以完全删除该组件。

于 2020-01-16T20:03:44.830 回答
0

感谢 David 和 Chris 以及所有其他人为此付出的时间。目前,我已将新组件添加为新功能,以便所有现有组件都可以属于同一功能。这为我消除了错误。

于 2020-01-21T14:43:04.987 回答