powershell – 使用新代码签名证书更改了包系列名称
以前我们有一个代码签名证书,每件事都很好.最近证书已过期,因此我们从Comodo获得了新证书,并发布了该证书的新版本.
所以这就是问题:软件包系列名称已更改为新的证书,因此我无法使用新证书打包的新版本升级旧的已安装应用程序. 需要解决方案来将Package Family Name维持为常量或新证书,我们还需要为旧应用程序提供升级. 我们怎样才能做到这一点? 从PowerShell升级包时出错错误: Add-AppxPackage : Deployment failed with HRESULT: 0x80073CF3,Package failed updates,dependency or conflict validation. Windows cannot install package df70dbc9-455c-4c32-b052-7ac2943630b7_1.0.193.1_x64__qbsrcgy0j364g because a different package df70dbc9-455c-4c32-b052-7ac2943630b7_1.0.0.191_x64__hs446qhh7vdt4 with the same name is already installed. Remove package df70dbc9-455c-4c32-b052-7ac2943630b7_1.0.0.191_x64__hs446qhh7vdt4 before installing. NOTE: For additional information,look for [ActivityId] b0deec37-ac10-0001-81fd-deb010acd101 in the Event Log or use the command line Get-AppxLog -ActivityID b0deec37-ac10-0001-81fd-deb010acd101 At C:UsersDesktopmyappName_1.0.193.1_x64_TestAdd-AppDevPackage.ps1:388 char:13 + Add-AppxPackage -Path $DeveloperPackagePath.FullName -DependencyPath ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (C:Usersmyuser....193.1_x64.appx:String) [Add-AppxPackage],IOException + FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand Error: Could not install the app. 解决方法
包名称系列名称(PFN)后缀(在您的情况下为hs446qhh7vdt4)是证书主题的哈希值(AKA主题名称):
certutil -dump foo.pfx Enter PFX password: ================ Certificate 0 ================ ================ Begin Nesting Level 1 ================ Element 0: Serial Number: xxxxxxxxxxxxxxxxx Issuer: CN=Microsoft,O=Contoso,L=Redmond,S=Washington,C=US NotBefore: 11/1/2016 12:00 AM NotAfter: 11/1/2017 12:00 AM Subject: CN=Microsoft,C=US <== THIS IS HASHED 如果您确保生成的新证书具有相同的主题,您将获得相同的PFN.请注意,您可能无法从Visual Studio中生成商店证书(在撰写本文时,它无法解析复杂的主题,如上面的多个’部分’,如CN = X,O = Y).在这种情况下,您必须创建自己的,但它必须符合store validations. 幸运的是,有一个简单的命令可以生成您需要的确切证书.打开Visual Studio开发人员提示并运行(一行): makecert -sv foo.pvk -n "CN=Contoso,C=US" foo.cer -b 11/01/2016 -e 11/01/2017 -r -cy end -a sha256 -eku 1.3.6.1.5.5.7.3.3 确保替换有效日期(相隔不超过一年!)以及主题(使用certutil -dump从您之前的证书中获取).输出证书(cer)和私钥(pvk)的名称毫无意义.该命令将生成foo.pvk和foo.cer,然后您可以将它们组合成一个像这样的pfx: PVK2PFX -pvk foo.pvk -spc foo.cer -pfx foo.pfx 高级生成的另一种选择 如果您有更高级的证书要求,您应该能够使用 [Version] Signature = "$Windows NT$" [Strings] szOID_ENHANCED_KEY_USAGE = "2.5.29.37" szOID_CODE_SIGNING = "1.3.6.1.5.5.7.3.3" szOID_BASIC_CONSTRAINTS2 = "2.5.29.19" [NewRequest] Subject = "CN=Contoso,C=US" Exportable = true HashAlgorithm = Sha256 KeyLength = 2048 RequestType = Cert ValidityPeriod = "Years" ValidityPeriodUnits = "1" [Extensions] %szOID_ENHANCED_KEY_USAGE% = "{text}%szOID_CODE_SIGNING%" %szOID_BASIC_CONSTRAINTS2% = "{text}" 替换主题和有效期,并根据文档调整所需的任何高级设置(或更有可能在网络上找到).然后执行以下操作: > certreq -new cert.inf cert.cer 您现在应该有一个有效的商店pfx. 更先进的一代的另一种选择 使用OpenSSL.很确定它可以做到以上所有以及更多,但我没有亲自尝试过,所以你必须弄清楚 – 并希望一旦你做到这一点就分享到这里! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为仿真输入设备编写Windows驱动程序
- 使用Qt 4 vs Qt 5开发适用于Windows和OS X的应用程序?
- windows-server-2008 – 如何在Windows Server 2008中强化T
- azure – 命名空间“Microsoft”中不存在类型或命名空间名称
- 你可以在新的Windows 10(Ubuntu)bash用户空间本地运行Docke
- Extjs窗口中的视频未扩展到全屏
- windows – Perl:“start perl.exe”与“perl.exe”有什么
- 我如何从powershell完全关闭windows defender
- 如何清除Windows命令行中的最后一行?
- windows – 使用Powershell更改只读文件夹 – 灰显
- Windows Powershell重命名列标题CSV文件
- 电子邮件 – MAPI Windows 7 64位
- Windows应用程序 – DPI问题
- 在Windows 7(64位)上使用Cython和MinGW编译Pytho
- windows-server-2008 – MSIZAP仍然有用,还是已经
- windows-server-2008-r2 – 如何配置Remoteapp服
- windows – 如何获取IPreviewHandler文件扩展名?
- 如何在Windows上获取磁盘标识符?
- Windows Vista / 7:如何对输出音频混合进行采样
- windows-installer – windows Installer – 当安