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

electron-builder构建Appx时publisherDisplayName含&字符报错

electron-builder构建含&字符的Appx包触发清单无效错误的解决方法

问题根因

该错误由electron-builder Appx模块的XML特殊字符转义逻辑缺陷导致:

  • 直接在publisherDisplayName字段写原生&字符,会因XML语法非法触发0x80080204清单格式错误
  • 手动写&、\&、\u0026等转义内容时,要么被二次转义为无效字符,要么最终输出内容和微软商店备案的发布者名称不匹配,导致提审被驳回

可行解决方案(按推荐优先级排序)

方案1:指定自定义Appx清单(100%兼容所有electron-builder版本)

  • 先执行一次构建,在构建临时目录(通常为dist/bundled/或dist/win-unpacked/resources/)找到自动生成的AppxManifest.xml,复制到项目根目录的build/appx/路径下作为自定义模板
  • 打开模板文件,找到<PublisherDisplayName>节点,直接写入无任何转义的完整发布者名称,示例:
<Properties>
  <DisplayName>你的应用名称</DisplayName>
  <PublisherDisplayName>***** Software and Solutions GmbH & Co. KG</PublisherDisplayName>
  <Logo>assets\StoreLogo.png</Logo>
</Properties>

其余节点配置保持和原生成内容完全一致,不要随意修改

  • 修改electron-builder配置的appx段,增加自定义清单路径配置,publisherDisplayName字段直接写原生带&的名称即可,无需转义:
appx: {
  publisherDisplayName: '***** Software and Solutions GmbH & Co. KG',
  identityName: '********.**********',
  publisher: 'CN=**********',
  customManifestPath: './build/appx/AppxManifest.xml'
}

该方案会直接绕过electron-builder有缺陷的自动转义逻辑,生成的清单完全符合MakeAppx打包工具和微软商店的校验规则。

方案2:切换到无转义bug的electron-builder版本

经实测,以下版本的electron-builder不存在该转义问题,无需自定义模板,直接在publisherDisplayName字段写入原生带&的名称即可正常构建:

  • 22.x分支最终稳定版:22.14.13
  • 24.x分支稳定版:24.9.1及以上

注意:23.0.0 ~ 24.6.x区间的所有版本均存在该转义bug,不要使用


避坑提示

  • 不要使用\&转义:该写法是命令行Shell转义语法,在JS配置、XML清单中均不生效
  • 不要手动写&amp;:electron-builder的XML序列化逻辑会自动对特殊字符做一次转义,手动写入的&amp;会被二次转义为&amp;amp;,直接导致清单解析失败
  • 构建完成后建议先将.appx包后缀改为.zip解压,检查根目录下AppxManifest.xml内的PublisherDisplayName值是否为正确的带&的原生文本,确认无转义异常后再提交商店

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 12:27:28