【问题标题】:Edge extension sign failed边缘扩展标志失败
【发布时间】:2017-08-14 03:22:53
【问题描述】:

我正在将现有的 Chrome 扩展程序移植到 Microsoft Edge。 当我在 Edge 中将其作为临时扩展加载时,该扩展可以正常工作。

现在我想打包并签名。包已成功生成。但是当我尝试使用 Windows App Certification Kit 对其进行签名时,它会失败并出现以下错误:

Edge extension manifest.json
Error Found: The JSON schema validation test detected the following errors:
Validation failed: Data does not match any schemas from "anyOf"
Schema location: /allOf/1/dependencies/background/anyOf
Manifest location: 
Validation failed for extension manifest: Extension\manifest.json
Impact if not fixed: Microsoft Edge extensions that violate the Windows Store certification requirements can’t be submitted to the Windows Store.
How to fix: Extension’s manifest.json must include valid entries for all required and specified fields. Please resolve the entries and conflicts above.

我用来打包扩展的命令:

manifoldjs -l debug -p edgeextension -f edgeextension -m EdgeExtension\manifest.json
manifoldjs -l debug -p edgeextension package Test\edgeextension\manifest\

我的清单文件:

{
    "author": "Test",
    "background": {
        "page": "Agent/Ext/bg-loader.html",
        "persistent": false
    },
    "content_scripts": [
        {
            "matches": [
                "<all_urls>"
            ],
            "js": [
                "Agent/Content/contentLoader.js"
            ],
            "run_at": "document_start",
            "all_frames": true
        }
    ],
    "content_security_policy" : "script-src 'self'; object-src 'self'",
    "default_locale" : "en",
    "description": "Test Web Applications Using Google Chrome",
    "name": "Test",
    "permissions": [
        "nativeMessaging",
        "webNavigation",
        "webRequest",
        "webRequestBlocking",
        "tabs",
        "cookies",
        "browsingData",
        "debugger",
        "<all_urls>",
        "notifications",
        "unlimited_storage"
    ],
    "version": "1.0.0.0",
    "-ms-preload": {
        "backgroundScript": "backgroundScriptsAPIBridge.js",
        "contentScript": "contentScriptsAPIBridge.js"
    },
    "minimum_edge_version" : "33.14281.1000.0"
}

【问题讨论】:

    标签: jsonschema microsoft-edge-extension


    【解决方案1】:

    this thread 的 Alexey Sidorov 的帮助下,我弄清楚了如何签署 Edge 扩展。

    注意:请确保在 PowerShell 中执行以下步骤,而不是在命令行中。


    1.创建自签名证书

    New-SelfSignedCertificate -Type Custom -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -KeyUsage DigitalSignature -FriendlyName <Your Friendly Name> -CertStoreLocation "Cert:\LocalMachine\My"
    

    您可以在 Microsoft 开发人员网站上的应用标识中获取您的主题。

    友好名称可以是任何字符串。

    2.导出证书

    检查指纹:

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

    出于安全原因,您需要密码才能导出。

    $pwd = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText 
    Export-PfxCertificate -cert "Cert:\LocalMachine\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $pwd
    

    3. 将证书安装到受信任的根证书颁发机构。

    在开始菜单中键入“管理计算机证书”,导航到受信任的根证书颁发机构\证书。右键单击它,所有任务,导入按照向导完成导入。

    4. 使用 SignTool 对应用进行签名(SignTool 随 Windows 10 SDK 一起安装。请确保它存在于您的系统 PATH 中)

    检查你的扩展的哈希算法:

    在您的.appx 文件中提取AppxBlockMap.xml,检查HashMethod

    <BlockMap xmlns="http://schemas.microsoft.com/appx/2010/blockmap" HashMethod="http://www.w3.org/2001/04/xmlenc#sha256">
    

    哈希算法是#后面的值,例如#sha256表示你使用SHA256作为哈希算法。

    SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.appx
    

    5.现在您可以通过双击安装您的应用了。


    官方参考:

    Create a certificate for package signing

    Sign an app package using SignTool

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-24
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      相关资源
      最近更新 更多