我想为 Windows 商店发布我的第一个控制台应用程序,并且商店想要我打包应用程序,当我使用 misx 打包工具时,它请求认证我在 2019 年使用 Visual Studio。如何使用 C++ 在 Visual Studio 中打包控制台
1 回答
根据 Microsoft Docs,错误 0x800B0100表示主题中不存在签名。如果包未签名或签名无效,您可能会收到此错误。必须对包进行签名才能部署。
因此,您可以参考此链接了解如何使用 SignTool 对应用程序包进行签名。
- 第 1 步:确定要使用的哈希算法
签署应用程序包时,必须使用创建应用程序包时使用的相同哈希算法。如果您使用默认设置创建应用程序包,则使用的哈希算法为 SHA256。
如果您使用具有特定哈希算法的应用打包程序来创建应用包,请使用相同的算法对包进行签名。要确定用于对包进行签名的哈希算法,您可以提取包内容并检查 AppxBlockMap.xml 文件。BlockMap 元素的 HashMethod 属性指示创建应用程序包时使用的哈希算法。例如:
句法:
<BlockMap xmlns="http://schemas.microsoft.com/appx/2010/blockmap"
HashMethod="https://www.w3.org/2001/04/xmlenc#sha256">
- 第 2 步:运行 SignTool.exe 对包进行签名
使用 .pfx 文件中的签名证书对包进行签名
句法
SignTool sign /fd hashAlgorithm /a /f signingCert.pfx /p password filepath.appx
如果未指定,SignTool 会将 /fd hashAlgorithm 参数默认为 SHA1,并且 SHA1 对签名应用程序包无效。因此,您必须在签署应用程序包时指定此参数。要对使用默认 SHA256 哈希创建的应用程序包进行签名,请将 /fd hashAlgorithm 参数指定为 SHA256:
句法
SignTool sign /fd SHA256 /a /f signingCert.pfx /p password filepath.appx
如果您使用不受密码保护的 .pfx 文件,则可以省略 /p 密码参数。您还可以使用 SignTool 支持的其他证书选择选项对应用程序包进行签名。有关这些选项的详细信息,请参阅 SignTool。
如果要对应用包进行时间戳,则必须在签名操作期间进行。例如:
句法
SignTool sign /fd hashAlgorithm /a /f signingCert.pfx /p password /tr timestampServerUrl
filepath.appx
使 /tr timestampServerUrl 参数等于 RFC 3161 时间戳服务器的 URL。