ICE35

ICE35 验证包含存储在 Cabinet 文件中的压缩文件的组件未设置为从源运行。 对于 Windows Installer 2.0 或更高版本,此限制已删除。

ICE35 查询 Media 表的 Cabinet 列,以确定哪些文件已压缩并存储在 Cabinet 文件中。 然后查询 File 表,以确定哪些组件包含这些文件。 最后,它再检查 Component 表,以确定是否在 Attributes 列中设置了从源运行位。

结果

如果有压缩文件存储在属于某个组件的 Cabinet 文件中,该组件在 Component 表的 Attributes 列中设置有 msidbComponentAttributesSourceOnly 位,则 ICE35 会发布错误消息。 对于 Windows Installer 2.0 或更高版本,该错误消息会更改为警告消息。 仅支持 Windows Installer 2.0 及更高版本的包已将摘要信息流的 PID_PAGECOUNT 属性设置为至少 200。

如果有压缩文件存储在属于某个组件的 Cabinet 文件中,该组件在 Component 表的 Attributes 列中设置有 msidbComponentAttributesOptional 位,则 ICE35 会发布错误消息。 对于 Windows Installer 2.0 及更高版本,此警告消息已删除。

如果组件中的多个文件位于一个 Cabinet 文件中,则对于设置了从源运行位的每个文件,ICE35 将报告错误。

示例

对于使用低于 2.0 的 Windows Installer 版本的所示示例,ICE35 会报告以下错误和警告。

ICE35 错误 说明
错误:组件 Component3 不能仅从源运行,因为其成员文件“File3”已压缩。 有压缩文件存储在 Cabinet 文件中,并且此文件所属的组件在 Component 表的 Attributes 列中设置了 SourceOnly 位。 若要修复此错误,请将 Component2 的 Attributes 值的较低 2 位更改为“00”(表示仅限本地),或从 CAB 文件中删除 File4。
错误:组件 Component3 不能仅从源运行,因为其成员文件“File3”已压缩。 有压缩文件存储在 Cabinet 文件中,并且此文件所属的组件在 Component 表的 Attributes 列中设置了 SourceOnly 位。 由于组件中的文件不必全部源自同一介质,因此对于组件中位于 Cabinet 文件中的每个文件,ICE35 会报告错误。
若要修复此错误,请将 Component2 的 Attributes 值的较低 2 位更改为“00”(表示仅限本地),或从 CAB 文件中删除 File4。

 

Media 表(部分)

DiskID LastSequence Cabinet
1 2  
2 4 One.cab
3 5 #Two.cab

 

File 表(部分)

文件 Component_ 序列
文件 1 Component1 1
文件 2 Component2 2
File3 Component2 3
File4 Component3 4
File5 Component3 5

 

Component 表(部分)

组件 特性
Component1 0
Component2 2
Component3 1

 

Shortcut 表(部分)

快捷键 Icon_
Shortcut1 Icon2

 

请注意,还可以使用摘要信息流Word Count Summary 属性将文件标记为已压缩。

ICE 参考