Déployez des applications ClickOnce pour les serveurs de test et de production sans nouvelle signature

Cet article décrit une fonctionnalité de ClickOnce introduite dans .NET Framework version 3.5 qui permet le déploiement d’applications ClickOnce à partir de plusieurs emplacements réseau sans nouvelle signature ou modification des manifestes ClickOnce.

Notes

La re-signature reste la méthode préférée pour déployer de nouvelles versions d'applications. Dans la mesure du possible, utilisez la méthode de re-signature. Pour plus d’informations, consultez Mage.exe (outil Manifest Generation and Editing).

Les développeurs tiers et les éditeurs de logiciels indépendants peuvent opter pour cette fonctionnalité, ce qui facilite la mise à jour de leurs applications par leurs clients. Cette fonctionnalité peut être utilisée dans les situations suivantes :

  • Lors de la mise à jour d’une application, et non pour la première installation d’une application.

  • Lorsqu’il n’existe qu’une seule configuration de l’application sur un ordinateur. Par exemple, si une application est configurée pour pointer vers deux bases de données différentes, vous ne pouvez pas utiliser cette fonctionnalité.

Excluez deploymentProvider des manifestes de déploiement

Dans .NET Framework 2.0 et .NET Framework 3.0, toute application ClickOnce installée sur le système pour la disponibilité hors connexion doit répertorier un deploymentProvider dans son manifeste de déploiement. Le deploymentProvider est souvent appelé l’emplacement de mise à jour ; il s’agit de l’emplacement où ClickOnce recherche les mises à jour d’application. Cette exigence, ainsi que la nécessité pour les éditeurs d’applications de signer leurs déploiements, rendait difficile la mise à jour d’une application ClickOnce à partir d’un fournisseur ou d’un autre tiers. Il est également plus difficile de déployer la même application à partir de plusieurs emplacements sur le même réseau.

Avec les modifications apportées à ClickOnce dans le .NET Framework 3.5, il est possible qu’un tiers fournisse une application ClickOnce à une autre organisation, qui peut ensuite déployer l’application sur son propre réseau.

Pour tirer parti de cette fonctionnalité, les développeurs d’applications ClickOnce doivent exclure deploymentProvider de leurs manifestes de déploiement. Cette exigence signifie que vous devez exclure l’argument -providerUrl lorsque vous créez des manifestes de déploiement avec Mage.exe. Ou, si vous générez des manifestes de déploiement avec MageUI.exe, vous devez vous assurer que la zone de texte Emplacement de lancement sous l’onglet Manifeste de l’application est laissée vide.

Note

Dans ClickOnce pour .NET Core 3.1 et .NET 5 (ou version ultérieure), utilisez dotnet-mage.exe au lieu de Mage.exe. Pour plus d'informations, consultez ClickOnce pour .NET.

deploymentProvider et mises à jour d’application

À partir de .NET Framework 3.5, vous n’avez plus besoin de spécifier un deploymentProvider dans votre manifeste de déploiement pour déployer une application ClickOnce à la fois pour une utilisation en ligne et hors connexion. Cette modification prend en charge le scénario dans lequel vous devez empaqueter et signer le déploiement vous-même, mais autoriser d’autres entreprises à déployer l’application sur leurs réseaux.

Le point important à retenir est que les applications qui excluent un deploymentProvider ne peuvent pas modifier leur emplacement d’installation pendant les mises à jour, tant qu’elles n’ont pas fourni une mise à jour qui inclut à nouveau la balise deploymentProvider.

Voici deux exemples pour clarifier ce point. Dans le premier exemple, vous publiez une application ClickOnce sans balise deploymentProvider, et vous demandez aux utilisateurs de l’installer à partir de http://www.adatum.com/MyApplication/. Si vous décidez de publier la prochaine mise à jour de l’application à partir de http://subdomain.adatum.com/MyApplication/, vous n’avez aucun moyen de le signifier dans le manifeste de déploiement qui réside dans http://www.adatum.com/MyApplication/. Vous pouvez effectuer l’une des deux opérations suivantes :

  • Indiquez à vos utilisateurs de désinstaller la version précédente et d’installer la nouvelle version à partir du nouvel emplacement.

  • Incluez une mise à jour sur http://www.adatum.com/MyApplication/ qui inclut un deploymentProvider pointant vers http://www.adatum.com/MyApplication/. Ensuite, relâchez une autre mise à jour ultérieurement avec deploymentProvider pointant vers http://subdomain.adatum.com/MyApplication/.

    Dans le deuxième exemple, vous publiez une application ClickOnce qui spécifie deploymentProvider, puis vous décidez de la supprimer. Une fois la nouvelle version sans deploymentProvider est téléchargée vers les clients, vous ne pouvez pas rediriger le chemin d’accès utilisé pour les mises à jour tant que vous n’avez pas publié une version de votre application qui a deploymentProvider restaurée. Comme dans le premier exemple, deploymentProvider doit initialement pointer vers l’emplacement de mise à jour actuel, et non vers votre nouvel emplacement. Dans ce cas, si vous essayez d’insérer un deploymentProvider qui fait référence à http://subdomain.adatum.com/MyApplication/, la prochaine mise à jour échoue.

Créer un déploiement

Pour obtenir des conseils étape par étape sur la création de déploiements pouvant être déployés à partir de différents emplacements réseau, consultez Procédure étape par étape : déployer manuellement une application ClickOnce qui ne nécessite pas de nouvelle signature et qui conserve les informations de personnalisation.