【问题标题】:MSI Validation returns "ICE81 Failure ICE Internal Error 1867. API Returned: 1615."MSI 验证返回“ICE81 失败 ICE 内部错误 1867。API 返回:1615。”
【发布时间】:2013-05-02 17:12:57
【问题描述】:

我所有的 MSI 安装在验证期间都显示相同的 ICE81“失败”,但我无法弄清楚是什么原因造成的。无论我使用哪个 MSI 编辑器运行验证(MS Orca、Flexera InstallShield、InstEdit.com),都会发生这种情况。我所有的安装包都使用位于正确位置的外部 CAB 文件(与 MSI 文件相同的文件夹),并且所有 CAB 文件都使用与 MSI 文件签名相同的数字签名进行签名(以及媒体中的所有记录、MsiDigitalCertificate、MsiDigitalSignature、和 MsiPatchCertificate 表似乎是正确创作的)。

ICE81 Failure ICE Internal Error 1867. API Returned: 1615.     MSIEditor_full_path\darice.cub
ICE81 Failure Error 2228: C:\Users\my_user_name\AppData\Local\Temp\random_tmp_filename.tmp, feature_name, SELECT `DiskId`, `Cabinet` FROM `Media` WHERE (`DiskId` = cab_name.cab)     MSIEditor\darice.cub

有什么想法吗?

【问题讨论】:

    标签: windows-installer installshield-2012 orca


    【解决方案1】:

    错误为ERROR_BAD_QUERY_SYNTAX,表示“SQL 查询语法无效或不受支持”。因此,ICE 用于验证您的 MSI 的内部 SQL 查询失败。查看查询,唯一可能失败的部分是查询:WHERE DiskId=cab_name.cab。

    仔细观察问题是cab_name.cab 是一个字符串,这意味着它应该用单引号括起来。换句话说,它应该看起来像:'cab_name.cab'。那么为什么 ICE 没有正确引用字符串呢?嗯,这就是答案。

    Media 表的DiskId 列应该是一个数字。不知何故,cab_name.cab 被插入到了Media 表的第一列中,而这里需要一个数字(如1)。 ICE 不会在 DiskId 周围加上引号,因为它需要一个数字,而数字不应该被引用。

    要解决此问题,请将Media 表的DiskId(第一)列更改为正数(我喜欢1)并将cab_name.cab 值放在Cabinet(第四)列中。

    我不确定哪些工具允许您将字符串放在整数列中,但您可能会向他们发送错误,因为各种事情都不起作用。 :)

    【讨论】:

      【解决方案2】:

      多年来,我们的 MSI 软件包一直存在这个问题。我有相同的设置:所有包都使用位于正确位置的外部 CAB 文件,并使用用于签署 MSI 包的相同数字签名进行签名。我们使用 InstallShield 构建软件包(从 IS Developer 2010 开始,一路升级了几次,现在使用 IS Premier 2020)。所有构建一直使用 darice.cub 进行验证(我相信最终来自 Microsoft)。

      我观察到,如果我从 MSI 包(MsiDigitalCertificate、MsiDigitalSignature 和 MsiPatchCertificate)中删除 3 个数字签名表,这种行为就会消失。当然,这些是发布签名包所必需的,因此删除它们确实不是一种选择。我只是指出,如果我删除它们然后运行验证,则不再遇到失败通知(“ICE81 Failure ICE Internal Error 1867. API Returned: 1615.”)。

      简而言之,这可能仍然是 darice.cub 的问题,但只有在使用数字签名对包进行签名时才会出现问题。这会让我相信它与 darice.cub ICE81 验证检查生成的 SQL 语句没有任何关系,而是与在包签名时访问表有关。

      【讨论】:

        猜你喜欢
        • 2022-12-21
        • 1970-01-01
        • 1970-01-01
        • 2020-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-13
        • 1970-01-01
        相关资源
        最近更新 更多