Autoriser ClickOnce à installer plusieurs programmes publiés à partir du même projet dans le même environnement (éditions .NET Framework uniquement)

Page mise à jour :
Date de création de la page :

Environnement de vérification des opérations

Visual Studio
  • Visual Studio 2022
.NET Framework
  • .NET Framework 4.8

Environnements requis

cadre
  • Windows Forms (.NET Framework) en général
  • WPF (.NET Framework) en général

Au début

Ces conseils décrivent comment installer plusieurs ClickOnce publiés à partir du même projet séparément dans le même environnement.

A propos de la procédure de publication de plusieurs copies à partir du même projet dans différentes configurations

Par exemple, même dans le même projet, si le contenu du traitement est modifié en fonction de la configuration de build, vous pouvez publier en tant que programme distinct. Cela est possible dans la version .NET (Core), mais pas dans la version .NET Framework avec les fonctionnalités standard de Visual Studio.

Cette méthode est résumée dans les conseils suivants à l’aide d’un programme batch. Ces conseils sont expliqués en partant du principe que les contenus suivants sont complétés.

Conditions dans lesquelles ClickOnce s’installe en tant qu’applications distinctes

Si vous publiez à l’aide du programme batch décrit ci-dessus, la configuration de build est modifiée, mais les deux sont traités comme la même application, Si vous essayez d’en installer deux dans le même environnement, il y aura un conflit et l’installation échouera même si vous essayez d’installer ultérieurement.

Je dois faire en sorte que cela semble être une application distincte, mais selon l’article référencé, les paramètres suivants identifient l’application:

Référence: (.NET) Lorsque je lance l’application après la publication avec ClickOnce, j’obtiens que « l’ID de placement ne correspond pas à l’abonnement »

  • Nom de l’application
  • Jeton de clé publique
  • Culture
  • Architecture du processeur (par exemple, x86)

Parmi ceux-ci, je pense qu’il n’est pas souhaitable de changer la « culture » et « l’architecture du processeur » car il existe une possibilité de résultats de traitement involontaires.

Je pense qu’il y a un moyen de changer le « nom de l’application », Fondamentalement, ce n’est pas recommandé car un seul nom peut être donné à un projet. Il est possible que plusieurs définitions puissent être faites par la configuration de build et les paramètres de condition dans le contenu du fichier projet, Étant donné qu’une seule interface utilisateur peut être définie dans Visual Studio, elle est un peu dangereuse car elle peut être écrasée en fonction de l’opération.

Le reste est un « jeton de clé publique », mais celui-ci vous permet de créer plusieurs certificats, Comme il peut être spécifié en tant que paramètre au moment de la publication clickonce, je voudrais identifier l’application avec ce temps.

Procédure de contrôle de fonctionnement

Du moment de la création du projet au point où il est prêt à être publié en tant que fichier batch, il est identique aux conseils suivants, veuillez donc vous y référer pour la procédure jusqu’à ce point.

Création d’un certificat

Cette fois, nous confirmerons avec un certificat de test pour l’échantillon. À l’origine, cela devrait être fait avec un certificat régulier, mais comme cela nécessitera une procédure autre que le sujet principal tel que la création de certificat et la préparation de l’autorité de certification, j’exclurai l’explication liée aux certificats. En production, vous pouvez remplacer le fichier de certificat de test par le fichier de production.

Après avoir créé le projet et créé le lot pour la publication, revenez à Visual Studio. Ouvrez les propriétés du projet et choisissez Signer dans le menu de gauche. Il y a une vérification pour « Signer le manifeste ClickOnce » alors vérifiez-le.

Maintenant, créez deux certificats. Cette fois, nous allons le créer sur cet écran, mais « . pfx » format de fichier, il n’y a aucun problème avec la création de certificats par d’autres moyens.

Il y a un bouton « Créer un certificat de test » dans le coin inférieur droit, alors cliquez dessus.

Vous pouvez également mettre un mot de passe, mais cela fonctionne que vous le mettiez ou non. Cependant, si vous voulez mettre un mot de passe, la procédure sera gênante, donc je ne le mettrai pas cette fois-ci.

Un fichier de certificat (.pfx) a été généré pour votre projet. Le nom de fichier généré ici est fixe mais peut être modifié ultérieurement. Soit dit en passant, la validité du certificat de test créé ici est d’un an. Après un an, vous devrez recréer un nouveau certificat.

Suivez les mêmes étapes pour en créer un autre.

Cette fois, nous publierons dans la version Debug et la version Release, nous allons donc changer le nom en un nom clair.

Modification des lots

Ouvrez le fichier de commandes que vous avez créé (.bat) dans un éditeur de texte et ajoutez les éléments suivants aux paramètres de msbuild :

description paramètre
du nom durequise
ManifestKeyFile Nom de fichier (.pfx) du certificat. Spécifiez un chemin d’accès relatif ou absolu à partir du fichier projet.
ManifestCertificateThumbprint Empreinte numérique du certificat de manifeste. La valeur à mettre peut être n’importe quoi, mais elle doit être mise par tous les moyens.
Nom du produit Nom du produit. Il devient le nom complet du menu Démarrer ou de la liste des programmes.
Nom de l’éditeur Nom de la société publique. Il devient le nom du dossier lors de l’organisation des programmes dans le menu Démarrer.

Sur la base de ce qui précède, modifiez le fichier de correctif comme suit.

ClickOnceDebug publie.bat (exemple)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\" /p:ManifestKeyFile="ClickOnceMultipleInstallDebug.pfx" /p:ManifestCertificateThumbprint="Debug" /p:ProductName="CliclOnce テスト Debug システム" /p:PublisherName="Sorceryforce"

ClickOnceRelease Issue.bat (Exemple)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\" /p:ManifestKeyFile="ClickOnceMultipleInstallRelease.pfx" /p:ManifestCertificateThumbprint="Release" /p:ProductName="CliclOnce テスト Release システム" /p:PublisherName="Sorceryforce"

ManifestKeyFile Chaque valeur spécifie un fichier de certificat différent. ManifestCertificateThumbprint La valeur de peut être n’importe quoi, mais assurez-vous de l’inclure car l’application ne peut pas être identifiée comme une autre si vous ne la mettez pas.

À propos, comme deux programmes sont installés dans le même environnement cette fois, des paramètres ont été ajoutés afin qu’ils ProductName puissent être distingués. PublisherName à votre goût.

émettre

Après l’entrée, exécutez chaque fichier batch et publiez-le.

Si xxxx.application se trouve dans le fichier que vous avez publié, ouvrez-le dans un éditeur de texte et assurez-vous qu’il apublicKeyToken une valeur différente.

installer

Après avoir copié les fichiers publiés dans le dossier public, exécutez-les pour les setup.exe installer .

Si vous entrez le certificat au moment de l’émission, l’écran suivant s’affiche au moment de l’installation. S’il s’agit d’un certificat de test, l’éditeur ne peut pas être confirmé, alors installez-le tel quel.

Le premier programme a été installé et lancé.

Je vais essayer d’installer l’autre.

L’autre a également été installé et lancé.

Bien sûr, les deux travaillent en même temps.

ProductName Comme il a été attaché, il est affiché séparément dans le menu Démarrer.

Vous pouvez également voir les deux dans la liste des applications.