从 Visual Studio for Windows 发布默认的 .net8 maui 应用程序后,我无法签署生成的 .msix 包并收到此错误:
SignTool Error: This file format cannot be signed because it is not recognized
公司决定不向开发者提供证书文件,所以我必须使用 Digicert Keylocker 平台工具来签署我的应用程序。
使用以下命令调用 smctl 工具:
smctl sign --keypair-alias=key_123456789 -d=SHA256 --verbose --config-file "e:\TEMP\certing\pkcs11properties.cfg" --input "e:\TEMP\package\testApp.msix"
smctl 工具生成的signtool 命令是:
signtool sign /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 /csp "DigiCert Signing Manager KSP" /kc "key_123456789" /f "C:\Users\MyUserName\AppData\Local\Temp\1122334455\key_123456789_certificate.pem" "e:\TEMP\package\testApp.msix"
其他一些 .exe 文件的签名工作正常。
我不知道如何调查问题或解决方法。我希望你能帮助我!
Visual Studio 2022 17.9.6
Windows Kit 版本的 Signtool 是 10.0.22621.2428
Windows 10 22H2(内部版本 19045.4355)
.net 8.0.4
您可能想尝试Jsign(免责声明:我是作者),这是一个开箱即用的支持 DigiCert Keylocker 的替代签名工具。如果文件有问题,您可能会收到更详细的错误消息。语法如下:
jsign --storetype DIGICERTONE \
--storepass "<api-key>|/path/to/Certificate_pkcs12.p12|<password>" \
--alias key_123456789 testApp.msix