安装过程中的 CRC 检查

Windows Installer 提供文件的循环冗余检验 (CRC)。 CRC 检查是一种类似于校验和的错误检查机制,使应用程序能够确定文件中的信息是否已被修改。 Windows Installer 完成文件复制后,会从源文件和目标文件获取 CRC 值。 安装程序检查印到文件中的原始 CRC,并将其与从副本计算的 CRC 进行比较。 如果原始 CRC 值为非 null 且不同于副本上计算的 CRC,则 CRC 检查失败。 如果原始 CRC 为 null,则不会进行检查。

在以下情况下,Windows Installer 会对文件进行 CRC 检查:

  • 如果设置了 MSICHECKCRCS 属性,并且 File 表中文件记录的 Attributes 字段中包含 msidbFileAttributesChecksum。 安装程序在安装、复制或移动文件后进行一次 CRC 检查。
  • 如果设置了 MSICHECKCRCS 属性,并且 File 表中文件记录的 Attributes 字段中包含 msidbFileAttributesChecksum,安装程序将在修补文件后进行 CRC 检查。
  • 如果 File 表中文件记录的 Attributes 字段中包含 msidbFileAttributesChecksum,安装程序将在绑定映像之前进行 CRC 检查。

如果在绑定映像之前检查失败,安装程序将在日志文件中报告以下两个错误,并在不绑定文件的情况下继续进行安装。

代码 Message
2941 无法计算文件 [2] 的 CRC。
2942 尚未对 [2] 文件执行 BindImage 操作。

 

如果在复制或修补未压缩的文件后检查失败,安装程序将报告以下错误。 如果在复制压缩文件后检查失败,也会报告此错误。 如果文件具有 msidbFileAttributesVital 属性,则认为该文件对安装至关重要,并且用户可以选择重试或取消安装。 如果文件在 File 表的 Attributes 列中被标记为非重要,则用户可以忽略错误并继续、重试或取消安装。

代码 Message
1331 无法正确复制 [2] 文件: CRC 错误。

 

请注意,仅移动未压缩的文件。 如果在移动未压缩的文件后检查失败,安装程序将显示以下错误。 如果文件具有 msidbFileAttributesVital 属性,则认为该文件对安装至关重要,并且安装失败。 如果文件在 File 表的 Attributes 列中被标记为非重要,则用户可以选择取消或者忽略错误并继续安装。

代码 Message
1332 无法正确移动 [2] 文件: CRC 错误。

 

如果在修补未压缩的文件后检查失败,安装程序将显示以下错误。 如果文件具有 msidbFileAttributesVital 属性,则认为该文件对安装至关重要,并且安装失败。 如果文件在 File 表的 Attributes 列中被标记为非重要,则用户可以选择取消或者忽略错误并继续安装。

代码 Message
1333 无法正确修补 [2] 文件: CRC 错误。