Partager via


Créer des applications ClickOnce à partir de la ligne de commande

Dans Visual Studio, vous pouvez générer des projets à partir de la ligne de commande, même s’ils sont créés dans l’environnement de développement intégré (IDE). En fait, vous pouvez reconstruire un projet créé avec Visual Studio sur un autre ordinateur sur lequel seul le .NET Framework est installé. Cette fonctionnalité vous permet de reproduire une build à l’aide d’un processus automatisé, par exemple, dans un laboratoire de build central ou avec des techniques de script avancées au-delà de l’étendue de la génération du projet lui-même.

Note

Pour générer des applications .NET ClickOnce à partir de la ligne de commande, consultez Générer des applications ClickOnce .NET à partir de la ligne de commande.

Utiliser MSBuild pour reproduire les déploiements d’applications ClickOnce du .NET Framework

Lorsque vous appelez msbuild /target:publish à la ligne de commande, cette commande indique au système MSBuild de générer le projet et de créer une application ClickOnce dans le dossier de publication. Cette commande équivaut à sélectionner la commande Publier dans l’IDE.

Cette commande exécute msbuild.exe, qui se trouve dans le chemin dans l’environnement d’invite de commandes Visual Studio.

Une « cible » est un indicateur de MSBuild sur la façon de traiter la commande. Les cibles clés sont la cible « build » et la cible « publier ». La cible de build est l’équivalent de la sélection de la commande Build (ou en appuyant sur F5) dans l’IDE. Si vous souhaitez uniquement générer votre projet, vous pouvez entrer msbuild. Cette commande fonctionne, car la cible de build est la cible par défaut pour tous les projets générés par Visual Studio. Par conséquent, vous n’avez pas besoin de spécifier explicitement la cible de build. Par conséquent, l’entrée msbuild est la même opération que l’entrée msbuild /target:build.

La /target:publish commande indique à MSBuild d’appeler la cible de publication. La cible de publication dépend de la cible de build, ce qui signifie que l’opération de publication est un sur-ensemble de l’opération de génération. Par exemple, si vous avez apporté une modification aux fichiers sources Visual Basic ou C#, l’opération de publication régénère automatiquement l’assembly correspondant.

Pour plus d’informations sur la génération d’un déploiement ClickOnce complet à l’aide de l’outil en ligne de commande Mage.exe pour créer votre manifeste ClickOnce, consultez Procédure pas à pas : déployer manuellement une application ClickOnce.

Créer et compiler une application ClickOnce de base avec MSBuild

Le moyen le plus simple de créer un profil de publication consiste à utiliser Visual Studio. Un profil de publication est requis pour publier avec MSBuild.

Créer et publier un projet ClickOnce

  1. Ouvrez Visual Studio et créez un projet.

    Choisissez le modèle de projet Application Windows Forms (.NET Framework) ou WPF App (.NET Framework) et nommez le projet CmdLineDemo.

  2. Dans le menu Générer , sélectionnez la commande Publier .

    Cette étape garantit que le projet est correctement configuré pour produire un déploiement d’application ClickOnce.

    L’Assistant Publication s’affiche.

  3. Dans l’Assistant Publication, sélectionnez Terminer.

    Visual Studio génère et affiche la page web par défaut, appelée Publish.htm.

  4. Enregistrez votre projet et notez l’emplacement du dossier dans lequel il est stocké.

    Les étapes précédentes créent un projet ClickOnce publié pour la première fois. Vous pouvez maintenant reproduire la build en dehors de l’IDE.

Reproduire la build à partir de la ligne de commande

  1. Quittez Visual Studio.

  2. Dans le menu Démarrer de Windows, sélectionnez Outils>Ligne de commande>Invite de commandes développeur.

    L’invite de commandes du développeur Visual Studio s’ouvre.

  3. Dans l’invite de commandes Visual Studio, vérifiez que le répertoire courant indique l’emplacement du projet que vous avez créé précédemment.

    Si vous ne travaillez pas dans le répertoire du projet, entrez une commande pour passer à l’emplacement souhaité, tel que par exemple chdir C:\Users\username\source\repos\CmdLineDemo.

  4. Pour supprimer les fichiers existants générés dans la section précédente, entrez rmdir /s publish.

    Cette étape est facultative, mais elle garantit que la build de ligne de commande produit tous les nouveaux fichiers.

  5. Saisissez msbuild /target:publish.

    Les étapes précédentes produisent un déploiement complet d’application ClickOnce dans un sous-dossier de votre projet nommé Publish. CmdLineDemo.application est le manifeste de déploiement ClickOnce. Le dossier CmdLineDemo_1.0.0.0 contient les fichiers CmdLineDemo.exe et CmdLineDemo.exe.manifest, le manifeste de l’application ClickOnce. Setup.exe est le programme d’amorçage, qui est configuré par défaut pour installer le .NET Framework. Le dossier DotNetFX contient les fichiers redistribuables pour le .NET Framework. Les fichiers de cet emplacement comprennent l’ensemble des fichiers dont vous avez besoin pour déployer votre application sur le web ou via UNC ou CD/DVD.

Note

Le système MSBuild utilise l’option PublishDir pour spécifier l’emplacement de sortie, tel que msbuild /t:publish /p:PublishDir="<specific location>".

Publier la sortie du processus

MSBuild utilise la propriété PublishDir pour définir l'emplacement de sortie du build, y compris les artefacts de build. La PublishDir valeur utilisée par MSBuild comme destination pour la publication est obtenue par défaut à partir de la PublishDir propriété dans le fichier projet (.NET Framework). Vous pouvez remplacer ce comportement sur la ligne de commande MSBuild à l’aide du /p commutateur. Si vous remplacez le paramètre, la sortie de publication est envoyée à l’emplacement spécifié. La sortie est générée pendant l’étape MSBuild de publication. Toute cible MSBuild avec AfterTargets="ClickOncePublish" s'exécute après que cette copie est faite.

Contrairement à PublishDir, la propriété PublishUrl n'est pas utilisée à l’étape MSBuild. PublishUrl est ignoré lorsque vous appelez DIRECTEMENT MSBuild pour publier à partir de la ligne de commande.

Lorsque la publication est démarrée dans l’IDE Visual Studio, Visual Studio appelle MSBuild pour publier des artefacts dans l’emplacement PublishDir . Une fois cette étape MSBuild terminée, Visual Studio publie ensuite des fichiers spécifiques à ClickOnce à l’emplacement vers lequel pointe PublishUrl. Cette deuxième étape s’exécute à l’intérieur du processus Visual Studio. Vous ne pouvez injecter aucune cible/tâche à exécuter pendant cette étape, car il s’agit d’un processus Visual Studio.

Pour les déploiements MSBuild qui n’utilisent pas Visual Studio, copiez tous les fichiers du répertoire de déploiement vers la destination ou le média de déploiement. Le répertoire de déploiement peut être un dossier sur un site web ou un site FTP, un partage de fichiers ou un CD-ROM. Par exemple, vous pouvez utiliser un outil tiers ou une tâche MSBuild personnalisée pour copier les fichiers ClickOnce.

Pour tout post-traitement dans le PublishUrl dossier, vous devez disposer d’un script distinct.

Important

Si PublishDir est défini sur le même emplacement que PublishUrl, la sortie de compilation dupliquée est copiée vers l’emplacement PublishUrl. Vous pouvez éviter ce problème dans Visual Studio 2022 version 17.4 et ultérieure en créant un profil. Le nouveau profil définit PublishDir un emplacement différent de celui de PublishUrl. À la fin de l’opération de publication, les fichiers ClickOnce pertinents sont copiés à partir de l’emplacement PublishDirPublishUrl .

Publier des propriétés

Lorsque vous publiez l’application à l’aide des procédures précédentes, les propriétés suivantes sont insérées dans votre fichier projet par l’Assistant Publication. Ces propriétés influencent directement la façon dont l’application ClickOnce est produite.

Dans CmdLineDemo.vbproj / CmdLineDemo.csproj :

<AssemblyOriginatorKeyFile>WindowsApplication3.snk</AssemblyOriginatorKeyFile>
<GenerateManifests>true</GenerateManifests>
<TargetZone>LocalIntranet</TargetZone>
<PublisherName>Microsoft</PublisherName>
<ProductName>CmdLineDemo</ProductName>
<PublishUrl>http://localhost/CmdLineDemo</PublishUrl>
<Install>true</Install>
<ApplicationVersion>1.0.0.*</ApplicationVersion>
<ApplicationRevision>1</ApplicationRevision>
<UpdateEnabled>true</UpdateEnabled>
<UpdateRequired>false</UpdateRequired>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdateUrlEnabled>false</UpdateUrlEnabled>
<IsWebBootstrapper>true</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>

Pour les projets .NET Framework, vous pouvez remplacer ces propriétés sur la ligne de commande sans modifier le fichier projet lui-même. Par exemple, le code suivant génère le déploiement de l’application ClickOnce sans le programme d’amorçage :

msbuild /target:publish /property:BootstrapperEnabled=false

Les propriétés de publication sont contrôlées dans Visual Studio à partir des pages de propriétés Publier, Sécurité et Signature du Concepteur de projets.

Les propriétés de publication suivantes sont définies dans différentes pages de propriétés du concepteur d’application.

  • AssemblyOriginatorKeyFile détermine le fichier de clé utilisé pour signer vos manifestes d’application ClickOnce. Cette même clé peut également être utilisée pour attribuer un nom fort à vos assemblys. Cette propriété est définie sur la page Signature du Concepteur de projets.

Les propriétés suivantes sont définies sur la page Sécurité :

  • Activer les paramètres de sécurité ClickOnce détermine si les manifestes ClickOnce sont générés. Lorsqu’un projet est initialement créé, la génération de manifeste ClickOnce est désactivée par défaut. L’assistant active automatiquement cet indicateur lors de la première publication.

  • TargetZone détermine le niveau de confiance à émettre dans votre manifeste d’application ClickOnce. Les valeurs possibles sont « Internet », « LocalIntranet » et « Custom ». Internet et LocalIntranet entraînent l’émission d’un jeu d’autorisations par défaut dans votre manifeste d’application ClickOnce. LocalIntranet est la valeur par défaut, et cela signifie essentiellement une confiance totale. Personnalisé spécifie que seules les autorisations explicitement spécifiées dans le fichier app.manifest de base doivent être émises dans le manifeste de l’application ClickOnce. Le fichier app.manifest est un fichier manifeste partiel qui contient uniquement les définitions d’informations d’approbation. Il s’agit d’un fichier masqué, automatiquement ajouté à votre projet lorsque vous configurez des autorisations sur la page Sécurité .

Les propriétés suivantes sont définies sur la page Publier :

  • PublishUrl est l’emplacement où l’application est publiée dans l’IDE. Elle est insérée dans le manifeste de l'application ClickOnce si les propriétés InstallUrl et UpdateUrl ne sont pas spécifiées.

  • ApplicationVersion spécifie la version de l’application ClickOnce. La version est un nombre à quatre chiffres. Si le dernier caractère est un « * » (astérisque), alors le ApplicationRevision est remplacé par la valeur insérée dans le manifeste au moment de la génération.

  • ApplicationRevision spécifie la révision. Cette valeur est un entier, qui incrémente chaque fois que vous publiez dans l’IDE. Notez qu’il n’est pas incrémenté automatiquement pour les builds effectuées sur la ligne de commande.

  • Install détermine si l’application est une application installée ou une application run-from-Web.

  • InstallUrl (non affiché) est l’emplacement à partir duquel les utilisateurs installent l’application. Si elle est spécifiée, cette valeur est intégrée dans le programme d’amorçage setup.exe si la IsWebBootstrapper propriété est activée. L'élément est également inséré dans le manifeste de l'application si le UpdateUrl n'est pas spécifié.

  • SupportUrl (non affiché) est l’emplacement lié dans la boîte de dialogue Ajouter/Supprimer des programmes pour une application installée.

Les propriétés suivantes sont définies dans la boîte de dialogue Mises à jour d’application , accessibles à partir de la page Publier .

  • UpdateEnabled indique si l’application doit vérifier les mises à jour.

  • UpdateMode spécifie les mises à jour au premier plan ou les mises à jour en arrière-plan.

  • UpdateInterval spécifie la fréquence à laquelle l’application doit vérifier les mises à jour.

  • UpdateIntervalUnits spécifie si la UpdateInterval valeur est exprimée en unités d’heures, de jours ou de semaines.

  • UpdateUrl (non affiché) est l’emplacement à partir duquel l’application reçoit des mises à jour. Si elle est spécifiée, cette valeur est insérée dans le manifeste de l’application.

Les propriétés suivantes sont définies dans la boîte de dialogue Options de publication, accessibles à partir de la page Publier .

  • PublisherName spécifie le nom de l’éditeur affiché dans l’invite affichée lors de l’installation ou de l’exécution de l’application. Pour une application installée, elle est également utilisée pour spécifier le nom du dossier dans le menu Démarrer .

  • ProductName spécifie le nom du produit affiché dans l’invite affichée lors de l’installation ou de l’exécution de l’application. Pour une application installée, elle est également utilisée pour spécifier le nom du raccourci dans le menu Démarrer .

Les propriétés suivantes sont définies dans la boîte de dialogue Conditions préalables , accessibles à partir de la page Publier .

  • BootstrapperEnabled détermine s’il faut générer le programme d’initialisation setup.exe.

  • IsWebBootstrapper détermine si le programme d’amorçage setup.exe fonctionne sur le web ou en mode disque.

Options d’utilisation : InstallURL, SupportUrl, PublishURL, UpdateURL

Le tableau suivant présente les quatre options d’URL pour le déploiement ClickOnce.

Option d’URL Descriptif
PublishURL Requis pour publier l’application ClickOnce sur un site web.
InstallURL Optional. Définissez cette option d'URL si le site d'installation est différent de PublishURL. Par exemple, vous pouvez définir la PublishURL valeur sur un chemin FTP et définir la InstallURL valeur sur une URL web.
SupportURL Optional. Définissez cette option d’URL si le site de support est différent du PublishURL. Par exemple, vous pouvez définir le SupportURL sur le site web du support client de votre entreprise.
UpdateURL Optional. Définissez cette option d’URL si l’emplacement de mise à jour est différent de celui du InstallURL. Par exemple, vous pouvez définir la PublishURL valeur sur un chemin FTP et définir la UpdateURL valeur sur une URL web.