2016-05-12 1 views
4

Auparavant, nous avions un certificat de signature de code, tout fonctionnait correctement. Récemment, le certificat a expiré, donc nous avons pris un nouveau certificat de Comodo et avons sorti une nouvelle version avec ce certificat. Voici donc le problème: Nom de la famille du package Modifié avec ce nouveau CERT, je ne suis donc pas en mesure de mettre à niveau les anciennes applications installées avec cette nouvelle version fournie avec le nouveau CERT.Le nom de famille du package a été modifié avec le nouveau code de signature de signature

Vous avez besoin de la solution pour que le nom de la famille de packages reste constant ou pour les nouveaux certificats. Nous devons également mettre à niveau les anciennes applications.

Comment pouvons-nous y parvenir?

Erreur msg tout package mise à niveau de 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:\Users\\Desktop\\myappName_1.0.193.1_x64_Test\Add-AppDevPackage.ps1:388 char:13 
+    Add-AppxPackage -Path $DeveloperPackagePath.FullName -DependencyPath ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : WriteError: (C:\Users\myuser....193.1_x64.appx:String) [Add-AppxPackage], IOException 
    + FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand 
Error: Could not install the app.
+0

Exception dit tout. Désinstallez l'ancien paquet avant d'en installer un nouveau avec le même nom, non? –

+0

notre intention doit mettre à jour l'application, sans perdre les données enregistrées –

Répondre

4

Le suffixe Nom de famille (PFN) Package (dans votre cas hs446qhh7vdt4) est un hachage sujet (AKA nom sujet) du certificat: Si vous vous assurez que le nouveau certificat que vous générez a le même sujet, vous obtiendrez le même PFN. Notez que vous ne pourrez peut-être pas générer de certificats de magasin à partir de Visual Studio (au moment de l'écriture, il ne peut pas analyser des sujets complexes comme celui ci-dessus avec plusieurs 'parties' comme , O=Y). Dans ce cas, vous devrez créer le vôtre, mais il doit être conforme au store validations.

Heureusement, il existe une commande simple qui génère le certificat exact dont vous avez besoin. Ouvrez une invite de développement Visual Studio et exécuter (une ligne): (! Pas plus d'un an d'intervalle)

makecert -sv foo.pvk -n "CN=Contoso, O=Contoso, L=Redmond, S=Washington, 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 

Assurez-vous de remplacer les dates de validité ainsi que le sujet (extrait de votre cert précédente en utilisant certutil -dump) . Les noms du certificat de sortie (cer) et de la clé privée (pvk) n'ont aucune signification. Cette commande va générer foo.pvk et foo.cer, que vous pourrez alors combiner à un PFX comme ceci:

PVK2PFX -pvk foo.pvk -spc foo.cer -pfx foo.pfx 

Une autre option pour la génération avancée

Si vous avez des exigences de cert plus avancées, vous devrait être en mesure d'utiliser certreq (ne l'ai pas testé si). Créez un fichier nommé cert.inf avec le contenu suivant:

[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, O=Contoso, L=Redmond, S=Washington, 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}" 

Remplacer le sujet et la période de validité, et d'ajuster les paramètres avancés dont vous avez besoin pour les docs (ou plus probablement sur le web). Ensuite, procédez comme suit:

  1. certreq -new cert.inf cert.cer
  2. Double-cliquez sur le résultat cert.cer et l'installer au magasin de confiance Autorités de certification racine (soit l'utilisateur ou à la machine).
  3. certreq -accept -user cert.cer OU certreq -accept -machine cert.cer (en fonction du magasin que vous avez choisi à l'étape précédente).
  4. Accédez au Personal stocker dans le gestionnaire de certificats (utilisateur ou machine, selon ce que vous avez choisi ci-dessus) et trouver le certificat que vous venez d'installer. Double-cliquez dessus et copiez le numéro de série dans l'onglet Détails (j'ai rencontré du vaudou ici où le CERT apparaîtrait après un long moment, ou après avoir installé un CERT différent (avec un nom de sujet différent). (remplacer le mot de passe et le numéro de série avec leurs valeurs réelles)

Vous devriez maintenant avoir un PFX magasin valide.

une autre option pour la génération encore plus avancée

utilisation OpenSSL. Assez sûr qu'il peut faire tout ce qui précède et plus, mais je ne l'ai pas essayé personnellement donc vous aurez à le comprendre - et nous espérons partager ici une fois que vous faites!

+1

Parfait! Lorsque Visual Studio a trouvé mon certificat expiré, il en a créé un nouveau avec un nom d'éditeur différent. Cela a créé le même problème de mise à jour –