所以,我正在尝试使用我拥有的pfx文件签署Windows 8 appx包.我正在使用这样的命令:
signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"
Run Code Online (Sandbox Code Playgroud)
从此,我得到:
SignTool错误:未找到符合所有给定条件的证书.
我没有遇到什么"标准"?这仅用于测试,因此这些是自签名证书.我已经尝试导入密钥然后签名,但它总是会导致相同的错误.我该如何解决?
我有一个Windows 8应用程序,我想部署到我的Windows RT 2.我只有.appx,我想通过绕过商店安装它进行测试.但是,当我运行命令时:
Add-AppxPackage <project.appx>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
内联脚本返回错误输出:Add-AppxPackage:部署失败,HRESULT:0x800B0109,已处理证书链,但终止于信任提供程序不信任的根证书.(HRESULT异常:0x800B0109)错误0x800B0109:应用程序包中签名的根证书必须可信.*
Google表示我需要证书或PowerShell脚本,但肯定有一种方法可以绕过所有这些.理想情况下,我想安装应用程序进行测试.
否则,解决此问题的最简单方法是什么?我还需要什么.appx,以便我可以安装它没有问题?
我有一个appxbundle由Visual Studio生成的签名,并使用Comodo authenticode sha256证书签名.打开属性时,捆绑包会显示数字签名选项卡.
现在,当我在另一台PC上下载文件时,smartscreen过滤器启动并说appxbundle有一个未知的发布者.
我研究了这个问题,但似乎只有clickonce部署的解决方案.
我也执行了这里提到的解决方案.简而言之:使用post build或pre-publish签名来签署.exeobj文件夹中生成的文件.这两种解决方案都无法解决问题.
包含的证书屏幕截图显示证书有效:
我的问题:我需要做些什么才能让appxbundle正确的出版商出现?
我检查了Comodo并重新检查了证书链.应用程序现在可以正常加载,但Smartscreen仍然无法识别发布者.
我在尝试为Windows Phone 8.1部署任何类型的HTML应用程序作为公司应用程序时遇到问题.我开发的应用程序是使用Visual Studio Apache Cordova Apps项目,但我还测试了手动创建.appx的空白应用程序(通用Windows 8.1)和空白应用程序(Windows Phone)...最后两个似乎有效是同一个项目类型,Universal也只是一个带有Windows 8.1项目的解决方案.
当我尝试安装它时,我总是得到下面详细的错误消息(尝试从电子邮件,网络和手机的本地文件夹中进行各种尝试.
安装C#Windows Phone 8.1 Hub App项目使用相同的工作流程可以完美地运行.
无法安装公司应用程序
这个公司应用程序存在问题.联系您公司的支持人员寻求帮助
Subject并拥有我们的PhonePublisherIDwinjs appx windows-phone-8.1 visual-studio-cordova win-company-app
我想了解一下Windows Store和APPX包的内部情况.例如,package.appxmanifest有一个<Identity>包含包名,发布者和版本属性的元素
<Identity
Name="MyCompany.MyGreatApp"
Publisher="CN=B408A06D-44F7-4860-A12E-644DD44FA743"
Version="1.0.0.3" />
Run Code Online (Sandbox Code Playgroud)
显然,当我在VS2013中打开此清单并转到Packaging选项卡时,它会显示一个只读的"Package Family Name"字段,它是包名称,下划线和看起来像发布者字符串的奇怪哈希的串联.
MyCompany.MyGreatApp_f08ys7xx9zb3y
Run Code Online (Sandbox Code Playgroud)
如何计算此哈希值(也称为PublisherId)?另请参见PackageId类或PACKAGE_ID结构.
以下是您渴望密码分析师的一些示例值.它是13个小写字母和数字,因此近似"质量"是67位.谢谢!
8wekyb3d8bbwe CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
amge560j0aq9g CN=C357A519-CEE3-4675-9EF4-44DE1D99A5D6
a2xxwqz7shah6 CN=07AACB4D-E1D7-4606-AF0F-77713A7C52F6
cw5n1h2txyewy CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
54ggd3ev8bvz6 CN=2180B9A4-DDFD-4BFD-8D7E-EADC9C394EF5
azstdzfk4mfqj CN=246910D1-A42D-4A04-8CF1-0C2A5CD42D4D
rxzpp8adhbvh8 CN=7882B094-0135-443F-8362-164AA239F2A0
pwh22gvzcj20c CN=9C2E3884-8027-4E71-97C7-BB7731A649A4
q4d96b2w5wcc2 CN=DCD4AC3C-C7E0-46FF-8387-51FDC8CBC467
r6rtpscs7gwyg CN=54157592-46DE-47CD-AF04-3B89DE46E29B
8xx8rvfyw5nnt CN=6E08453F-9BA7-4311-999C-D22FBA2FB1B8
kzf8qxf38zg5c CN=Skype Software Sarl, O=Microsoft Corporation, L=Luxembourg, S=Luxembourg, C=LU
a76a11dkgb644 CN=40886CD1-D5C5-48D6-B914-AB6E72010FFC
6bhtb546zcxnj CN=BBC567E9-A52C-43A3-A890-F8B17D68310E
46hhcags7zat8 CN=ABF01D82-FF53-447D-B7E8-61B6F2105F68
pd2za7f9waemw CN=B408A06D-44F7-4860-A12E-644DD44FA740
h0ed56e8a88dc CN=B408A06D-44F7-4860-A12E-644DD44FA741
wcvtzcf7freyj CN=B408A06D-44F7-4860-A12E-644DD44FA742
f08ys7xx9zb3y CN=B408A06D-44F7-4860-A12E-644DD44FA743 …Run Code Online (Sandbox Code Playgroud) App1ClassLibrary1Windows 8类库项目添加到解决方案中PortableClassLibrary1针对Windows 8和Windows Phone 7.5的便携式类库添加到解决方案中HttpClientnuget包ClassLibrary1HttpClientnuget包PortableClassLibrary1ClassLibrary1和PortableClassLibrary1您在.appx包阶段遇到错误
Payload contains two or more files with the same destination path 'System.Net.Http.Primitives.dll'.
Source files:
\Projects\App1\PortableClassLibrary1\bin\Debug\System.Net.Http.Primitives.dll
\Projects\App1\packages\Microsoft.Net.Http.2.2.13\lib\win8\System.Net.Http.Primitives.dll
Run Code Online (Sandbox Code Playgroud)
请注意,如果您引用任何包含win8和便携式程序集混合的nuget包,则会再现相同的错误.
预期结果:库的大多数特定版本(win8 one)被打包到.appx中,并且忽略了可移植版本
有关如何欺骗appx打包程序并构建此类Windows 8项目的任何想法?
编辑
事件日志错误是这样的:
error 0x8007000B: The app manifest publisher name (CN=...)
must match the subject name of the signing certificate
(CN={19BE29DF-4812-4F2E-8FC1-A138B146946A}).
Run Code Online (Sandbox Code Playgroud)
现在看来下面的命令似乎有效.因此,当我看到这个时,无论是我无法识别的用户错误还是与机器状态有关的东西.与事件日志消息中的签名证书关联的guid不是证书管理器管理单元中显示的证书,这很奇怪.
原始问题
我正在尝试签署使用生成的UWP appx包MakeAppx.exe.pfx是使用https://msdn.microsoft.com/windows/uwp/porting/desktop-to-uwp-manual-conversion这些命令生成的开发人员代码签名证书.
C:\> MakeCert.exe -r -h 0 -n "CN=<publisher_name>" -eku 1.3.6.1.5.5.7.3.3 -pe -sv <my.pvk> <my.cer>
C:\> pvk2pfx.exe -pvk <my.pvk> -spc <my.cer> -pfx <my.pfx>
Run Code Online (Sandbox Code Playgroud)
私钥位于我受信任的根证书存储区中,并且在我使用Desktop App Converter从安装程序生成appx时工作.
我使用的命令行是:
signtool.exe sign -f <path to my pfx file> -fd SHA256 -v .\FishTank.appx
Run Code Online (Sandbox Code Playgroud)
但是SignTool错误的是:
The following certificate was selected:
Issued to: ...
Issued by: …Run Code Online (Sandbox Code Playgroud) signtool windows-store-apps appx desktop-app-converter desktop-bridge
基本上我们以手动安装程序(Windows powershell脚本)的形式发布我们的更改/修复.它将通过读取配置文件值在特定位置安装指定的.dll和SQL脚本文件(我们将在此文件中配置.dll和Sql脚本位置).相同的powershell脚本具有卸载代码以回滚特定的chage集.
是否有任何选项或机制来为上述要求创建Windows安装程序?
我正在尝试使用Visual Studio 2012 Express为我的appx文件签署Windows应用商店应用程序,但是收到以下错误:
SignTool Error: The specified algorithm cannot be used or is invalid
Run Code Online (Sandbox Code Playgroud)
我正在通过STORE-> Create App Packages菜单运行该过程,因此我无法直接访问SignTool的参数.
起初我以为是因为它使用了我们其他开发人员的自签名证书,所以我改为使用我们的真实证书,但仍然遇到同样的问题.
什么可能导致这个以及如何解决它?
编辑:怀疑问题是我们的普通证书不支持SHA-256,所以我在Visual Studio中创建了一个新的测试证书,但得到了相同的结果.
EDIT2:验证我的appx包中的哈希算法是SHA256,尝试使用以下命令手动运行SignTool:
SignTool sign /a /f My_TemporaryKey.pfx /fd SHA256 /v /debug MyAppPackage.appx
Run Code Online (Sandbox Code Playgroud)
同样的错误,控制台消息中没有有用的信息.
通用Windows应用程序位于.appx文件中,该文件只是一堆文件和元数据的压缩包。大多数元数据文件在 Microsoft 网站上都有详细记录,并且易于解析和/或重新生成。然而 AppxSignature.p7x 仍然是个谜。
从这张图(来源):

AppxSignature.p7x 应该具有 AppxBlockMap.xml 的哈希值、内容和目录哈希值以及签名。但是我找不到 AppxSignature.p7x 文件本身的任何文档。理想情况下,我想使用替代工具来生成和验证此签名,例如 openssl/gnutls 或类似工具。其实际用途是在 Linux 上更新和重新打包应用程序,并为 Windows 应用商店准备 .appxupload 文件。
appx ×10
signtool ×3
windows-8 ×2
appxmanifest ×1
authenticode ×1
msix ×1
nuget ×1
package ×1
powershell ×1
signing ×1
uwp ×1
windows ×1
windows-rt ×1
winjs ×1
wix ×1