将控制台应用程序打包到MSIX软件包中时出现错误0x800B0100

问题描述

我想发布Windows商店的第一个控制台应用程序,商店想要我的Package应用程序,当我使用misx软件包工具时,它要求认证 我在2019年使用Visual Studio。 如何在Visual Studio中使用C ++打包控制台

misx package tools

certification request

error because he requests certification

error set up

解决方法

根据Microsoft Docs,Error 0x800B0100表示主题中没有签名。如果程序包未签名或签名无效,则可能会出现此错误。该软件包必须经过签名才能部署。

因此,您可以参考有关how to sign an app package using 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 password参数。您还可以使用SignTool支持的其他证书选择选项来对应用程序包进行签名。有关这些选项的更多信息,请参见SignTool。

如果要给应用程序包加上时间戳,则必须在签名操作期间执行。例如:

语法

SignTool sign /fd hashAlgorithm /a /f signingCert.pfx /p password /tr timestampServerUrl 
filepath.appx

使/ tr timestampServerUrl参数等于RFC 3161时间戳服务器的URL。