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

如何在CI脚本中为.wapproj项目配置EV证书签名及PIN验证

解决方案:使用EV USB密钥签名Avalonia .wapproj应用

错误原因

APPX0101错误是因为MSBuild无法找到签名所需的证书配置——当前命令未指定证书相关参数,且远程服务器的EV USB密钥证书未被构建流程识别。


方案1:CLI命令指定证书(适合CI自动化)

如果远程服务器的USB密钥已被系统识别,且证书存在于当前用户的证书存储中,可通过证书指纹直接指定:

  1. 先在远程服务器的certmgr.msc中获取EV证书的指纹:右键证书→属性→详细信息→指纹,去掉指纹中的空格。
  2. 修改msbuild命令,添加证书相关参数:
msbuild -t:restore
msbuild /p:Configuration=Release /p:RuntimeIdentifier=win-x64 /p:AppxBundle=Always /p:AppxBundlePlatforms="x64" /p:Platform=x64 /p:UapAppxPackageBuildMode=SideloadOnly /p:PackageCertificateThumbprint="你的EV证书指纹(无空格)" /p:PackageCertificateStoreName="MY"
  • PackageCertificateStoreName="MY":EV证书默认存于「个人」存储区,若证书在其他区可调整此值。
  • 构建时Windows会自动弹出PIN码输入框,需确保远程服务器会话为交互式(如保持远程桌面连接活跃),无界面服务会话可能无法弹出PIN框。

方案2:Windows GUI选择证书(适合手动构建)

若在远程服务器上手动触发构建,可让MSBuild弹出证书选择对话框:

  1. 确保远程服务器已连接USB密钥,证书在系统存储中可见。
  2. 修改msbuild命令,强制触发证书选择窗口:
msbuild -t:restore
msbuild /p:Configuration=Release /p:RuntimeIdentifier=win-x64 /p:AppxBundle=Always /p:AppxBundlePlatforms="x64" /p:Platform=x64 /p:UapAppxPackageBuildMode=SideloadOnly /p:PackageCertificateKeyFile=""
  1. 在弹出的证书选择框中选中EV证书,点击确定后会自动弹出PIN码输入框,输入完成即可完成签名。

额外注意事项

  • 远程服务器需安装EV证书厂商提供的USB密钥驱动,确保密钥能被系统识别。
  • 若CI以服务账户运行,需给服务账户授予证书私钥访问权限:在certmgr.msc中右键证书→所有任务→管理私钥,添加服务账户并赋予「读取」权限。
  • 验证证书可用性:在远程服务器PowerShell中执行Get-ChildItem Cert:\CurrentUser\My | Where-Object {$_.Subject -match "你的证书主题"},能输出证书信息即识别正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:46:11