ICE92

ICE92 验证没有组件 ID GUID 的组件是否也未指定为永久组件。 此 ICE 自定义操作检查 Component 表中是否存在 ComponentId 字段中指定的没有 GUID 的组件,并验证是否未在 Attributes 字段中设置 msidbComponentAttributesPermanent 标志。 ICE92 还验证没有组件同时具有 msidbComponentAttributesPermanent 和 msidbComponentAttributesUninstallOnSupersedence 属性。

如果 ComponentId 列为 null,则安装程序不会注册组件,并且安装程序无法删除或修复该组件。

结果

ICE92 发出以下错误。

ICE92 错误 说明
组件“[1]”没有 ComponentId,并且标记为永久。 Component 表中此组件的条目在 ComponentId 列中为 null,在 Attributes 列中具有 msidbComponentAttributesPermanent。

 

ICE92 发出以下警告。

ICE92 警告 说明
组件“[1]”标记为永久和 uninstall-on-supersedence。 将忽略 uninstall-on-supersedence 属性,因为该组件是永久的。 Component 表中此组件的条目指定了 msidbComponentAttributesPermanent 和 msidbComponentAttributesUninstallOnSupersedence 属性。

 

示例

对于该示例,ICE92 会报告以下错误:

The Component 'Component1' has no ComponentId and is marked as permanent.

Component 表(部分)

组件 ComponentId Directory_ 特性 KeyPath
Component1   DirectoryA 16 FileA

 

ICE 参考