You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Advanced Installer 19.2制作MSIX包时添加第三方DLL报错求助

解决MSIX打包时api-ms-win-crt-*.dll的PE无效及签名错误问题

问题本质

api-ms-win-crt-string-l1-1-0.dll这类文件是Windows通用CRT(C Runtime)的系统转发器DLL,它们本身不包含实际执行代码,仅负责将函数调用重定向到系统中真正的CRT实现文件。这类文件属于Windows系统自带组件,绝对不应该被手动打包进MSIX应用包——这就是你遇到PE验证错误和签名失败的核心原因:

  • Advanced Installer会校验包内PE文件的合法性,转发器DLL不符合标准PE文件的结构要求,因此报错
  • signtool无法签名这类文件,因为它们没有可签名的代码段,返回的0x800700C1错误就是指文件格式不符合签名要求

解决步骤

  1. 移除违规DLL
    直接从你的Advanced Installer MSIX项目中删除所有api-ms-win-crt-*.dll、vcruntime*.dll等系统CRT相关文件,不要尝试将它们加入包内。

  2. 正确声明CRT依赖
    确保你的应用通过MSIX的框架依赖机制获取CRT组件:

    • 打开Advanced Installer的MSIX项目,进入Dependencies(依赖)设置页面
    • 添加对Microsoft.VCLibs框架的依赖,选择对应你的应用架构(x64/x86)和CRT版本(比如v140或更高)
    • 这样Windows会自动在用户设备上确保存在所需的CRT组件,无需你手动打包
  3. 验证构建与运行
    移除DLL并添加依赖后,重新构建MSIX包,此时PE验证和签名相关的错误应该会消失。测试安装运行时,系统会自动处理CRT依赖的加载。

补充说明

MSIX确实会对包内的可执行文件进行完整性校验,但你遇到的问题并非MSIX自动签名导致,而是这些DLL本身不符合MSIX包对文件的要求。只要遵循系统组件的依赖规范,就可以避免这类问题。

内容的提问来源于stack exchange,提问作者JavierSO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:01:15