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

Flutter桌面应用自签名分发:如何解决安装未受信任问题?

Flutter桌面Windows应用自签名与分发解决方案

一、给Inno Setup生成的安装包做自签名

1. 创建自签名代码证书

用Windows PowerShell直接生成,命令如下:

New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=你的个人/公司名称" -KeySpec Signature -KeyExportPolicy Exportable -CertStoreLocation "Cert:\CurrentUser\My"

执行后证书会存到当前用户的证书库中。

2. 导出证书为PFX格式

运行certmgr.msc打开证书管理器,找到「个人」->「证书」里刚生成的证书,右键选择「所有任务」->「导出」,勾选「导出私钥」,按提示保存为PFX文件并设置密码。

3. 给安装包签名

用Windows自带的signtool工具(一般在C:\Program Files (x86)\Windows Kits\10\bin\*\x64路径下,*对应具体版本号),执行命令:

signtool sign /f "你的证书文件路径.pfx" /p "证书密码" "你的Inno安装包.exe"

也可以直接在Inno Setup脚本里集成签名,在[Setup]区块添加:

SignTool=signtool sign /f "证书路径.pfx" /p "你的密码" $f

这样编译安装包时会自动完成签名。

4. 让用户信任证书

把导出的PFX证书(或单独导出公钥为CER文件)发给用户,让用户双击安装,选择将证书放入「本地计算机」的「受信任的根证书颁发机构」存储,用户系统就会认可你的签名。

二、解决MSIX包的目录不存在问题

如果还是想用MSIX打包,目录错误大多是构建不完整或配置问题,试试这些操作:

  • 先执行flutter build windows生成完整的Windows构建产物,确保build/windows/runner目录存在且内容完整。
  • 检查pubspec.yaml中的msix配置,确保identity_name符合反向域名格式(比如com.yourcompany.yourapp),display_name等字段无特殊字符。
  • 打包时加上--build-windows参数,自动先完成Windows编译:
    flutter pub run msix:create --build-windows
    

三、补充说明

  • 自签名证书未被用户导入信任根时,安装仍会提示“未知发布者”,但用户可以通过“更多信息”->“仍要运行”继续安装,导入根证书后就不会有这个提示。
  • 如果是面向大量外部用户分发,建议购买正规商业代码签名证书(如Digicert、Sectigo),自签名仅适合内部测试或小范围分发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:36:18