为Windows UWP签署appx文件时出错0x80080209

时间:2017-07-25 01:16:52

标签: uwp windows-10 code-signing visual-studio-cordova signtool

我已经构建了一个Windows 10 UWP cordova应用程序,现在正在尝试签名。我已经有了一个在其他地方使用的证书(用于签署.net程序集),所以我想我会在申请签名时使用相同的证书。

当我使用signtool.exe时,出现以下错误..

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    //Your code here
    NotificationCenter.default.addObserver(self, selector: #selector(postTokenAcquisitionScript), name: NSNotification.Name(rawValue: "tokenAcquired"), object: nil)
}

func applicationWillEnterForeground(_ application: UIApplication) {
    //Your code here
    NotificationCenter.default.addObserver(self, selector: #selector(postTokenAcquisitionScript), name: NSNotification.Name(rawValue: "tokenAcquired"), object: nil)
}

func applicationDidEnterBackground(_ application: UIApplication) {
    //Your code here
    NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: "tokenAcquired"), object: nil)
}

按照建议here查看事件日志,我发现只有2条信息消息没有错误

成功创建了阅读器,但未进行清单验证。

我确保AppxManifest.xml文件中的SignTool Error: An unexpected internal error has occurred. Error information: "Error: SignerSign() failed." (-2146958839/0x80080209) 字段与证书中的主题相匹配。

here,我认为这被描述为

Publisher

有谁知道这意味着什么?

[UPDATE1]

在上述失败后,我尝试按照here概述创建新证书。

我使用了以下内容。

0x80080209-APPX_E_INVALID_SIP_CLIENT_DATA
Description : The SIP_SUBJECTINFOstructure used to sign the package didn’t 
contain the required data

一切似乎都很好。

在我的AppxManifest.xml中,我有......

# create
New-SelfSignedCertificate -Type Custom -Subject "CN=My Company Pty Ltd, O=My Company Pty Ltd, C=AU" -KeyUsage DigitalSignature -FriendlyName mycert_uwp -CertStoreLocation "Cert:\LocalMachine\My"

 # get info
 Set-Location Cert:\LocalMachine\My
 Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint

 # export
 $pwd = ConvertTo-SecureString -String password123 -Force -AsPlainText 
 Export-PfxCertificate -cert "Cert:\LocalMachine\My\17BBBBBB2DC49F550671AF3E72120C88E2333333" -FilePath h:\0\mycert_uwp.pfx -Password $pwd

使用上述内容时仍然会出现相同的错误。

[更新2]

我使用的signtool命令是

<Identity Name="com.mycompany.myapp" Publisher="CN=My Company Pty Ltd, O=MyCompany Pty Ltd, C=AU" Version="1.0.1.1" ProcessorArchitecture="x86" />

概述here

我也尝试过使用signtool sign /fd SHA256 /a /f myapp_uwp.pfx /p may password c:\dev\myapp\platforms\windows\build\windows\release\x86\win10\Upload\CordovaApp.Windows10_1.0.1.1_x86\CordovaApp.Windows10_1.0.1.1_x86.appx SHA384。还有一些建议尝试使用SHA512,我收到错误提示/debug是无效选项。

[UPDATE3] 它似乎是证书。我试图通过Visual Studio(打包,选择证书)使用,但得到以下错误(输入密码后)

enter image description here

..和yets我已按照说明here(和三重检查)。

这些说明是错的吗?

2 个答案:

答案 0 :(得分:0)

以防万一其他人遇到类似的问题(签名时出现0x80080209错误),较新版本的签名工具(Windows 10 SDK中的那个)对我有用。

答案 1 :(得分:0)

我有一个类似的问题: Error information: "Error: SignerSign() failed." (-2146958839/0x80080209)

但是没有日志条目,清单是正确的。

我们的解决方法是使用msvc2017而不是msvc2015进行编译。