Publier une application WPF avec les styles visuels activés

Les styles visuels permettent de modifier l’apparence des contrôles communs en fonction du thème choisi par l’utilisateur. Par défaut, les styles visuels ne sont pas activés pour les applications WPF (Windows Presentation Foundation). Vous devez donc les activer manuellement. Toutefois, l’activation des styles visuels pour une application WPF et la publication de la solution provoque une erreur. Cette rubrique explique comment résoudre cette erreur et le processus de publication d’une application WPF avec des styles visuels activés. Pour plus d’informations sur les styles visuels, consultez Vue d’ensemble des styles visuels. Pour plus d’informations sur le message d’erreur, consultez Résoudre les erreurs spécifiques dans les déploiements ClickOnce.

Pour résoudre l’erreur et publier la solution, vous devez effectuer les tâches suivantes :

Publiez la solution sans styles visuels activés

  1. Vérifiez que votre projet n’a pas de styles visuels activés. Tout d’abord, vérifiez le fichier manifeste de votre projet pour le code XML suivant. Ensuite, si le code XML est présent, encadrez le code XML avec une balise de commentaire.

    Par défaut, les styles visuels ne sont pas activés.

    <dependency>
        <dependentAssembly>
            <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
        </dependentAssembly>
    </dependency>
    

    Les procédures suivantes montrent comment ouvrir le fichier manifeste associé à votre projet.

    Pour ouvrir le fichier manifeste dans un projet Visual Basic

    1. Dans la barre de menus, choisissez Project, ProjectNamePropriétés, où ProjectName est le nom de votre projet WPF.

      Les pages de propriétés de votre projet WPF s'affichent.

    2. Sous l’onglet Application, choisissez Afficher les paramètres Windows.

      Le fichier app.manifest s’ouvre dans l’Éditeur de code.

    Pour ouvrir le fichier manifeste dans un projet C#

    1. Dans la barre de menus, choisissez Project, ProjectNamePropriétés, où ProjectName est le nom de votre projet WPF.

      Les pages de propriétés de votre projet WPF s'affichent.

    2. Sous l’onglet Application, notez le nom qui apparaît dans le champ manifeste. Il s’agit du nom du manifeste associé à votre projet.

      Notes

      Si Incorporer un manifeste avec les paramètres par défaut ou Créer une application sans manifeste s’affiche dans le champ manifeste, les styles visuels ne sont pas activés. Si le nom d’un fichier manifeste apparaît dans le champ manifeste, passez à l’étape suivante.

    3. Dans l’Explorateur de solutions, choisissez Afficher tous les fichiers.

      Ce bouton affiche tous les éléments de projet, y compris ceux qui ont été exclus et ceux qui sont normalement masqués. Le fichier manifeste apparaît en tant qu’élément de projet.

  2. Générez et publiez votre solution. Pour plus d’informations sur la publication de la solution, consultez Guide pratique pour publier une application ClickOnce à l’aide de l’Assistant Publication.

Créer un fichier manifeste

  1. Collez le code XML suivant dans un fichier Bloc-notes.

    Ce code XML décrit l’assembly qui contient des contrôles qui prennent en charge les styles visuels.

    <?xml version="1.0" encoding="utf-8"?>
    <asmv1:assembly manifestVersion="1.0"
        xmlns="urn:schemas-microsoft-com:asm.v1"
        xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
        xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <dependency>
            <dependentAssembly>
                <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
            </dependentAssembly>
        </dependency>
    </asmv1:assembly>
    
  2. Dans le Bloc-notes, cliquez sur Fichier, puis sur Enregistrer sous.

  3. Dans la boîte de dialogue Enregistrer sous, puis dans la liste déroulante Type de fichier, sélectionnez Tous les fichiers.

  4. Dans la zone Nom de fichier, nommez le fichier et ajoutez .manifest à la fin du nom de fichier. Par exemple : themes.manifest.

  5. Choisissez le bouton Parcourir les dossiers, sélectionnez n’importe quel dossier, puis cliquez sur Enregistrer.

    Notes

    Les procédures restantes supposent que le nom de ce fichier est themes.manifest et que le fichier est enregistré dans le répertoire C:\temp sur votre ordinateur.

Incorporer le fichier manifeste dans le fichier exécutable de la solution publiée

  1. Ouvrez Invite de commandes développeur pour Visual Studio.

    Pour plus d’informations sur l’ouverture de l’invite de commandes développeur pour Visual Studio, consultez Invite de commandes développeur et Développeur PowerShell.

    Notes

    Les étapes restantes partent du principe que :

    • Le nom de la solution est MyWPFProject.

    • La solution se trouve dans le répertoire suivant : %UserProfile%\Documents\Visual Studio version\Projects\.

    • La solution est publiée dans le répertoire suivant : %UserProfile%\Documents\Visual Studio version\Projects\publish.

    • La version la plus récente des fichiers d’application publiés se trouve dans le répertoire suivant : %UserProfile%\Documents\Visual Studio version\Projects\publish\Application Files\WPFApp_1_0_0_0

    Vous n’êtes pas obligé d’utiliser le nom ou les emplacements de répertoire décrits ci-dessus. Le nom et les emplacements décrits ci-dessus sont utilisés uniquement pour illustrer les étapes requises pour publier votre solution.

  2. À l’invite de commandes, remplacez le chemin d’accès au répertoire qui contient la version la plus récente des fichiers d’application publiés. L’exemple suivant illustre cette étape.

    cd "%UserProfile%\Documents\Visual Studio version\Projects\MyWPFProject\publish\Application Files\WPFApp_1_0_0_0"
    
  3. À l’invite de commandes, exécutez la commande suivante pour incorporer le fichier manifeste dans le fichier exécutable de l’application.

    mt -manifest c:\temp\themes.manifest -outputresource:MyWPFApp.exe.deploy
    

Signer à nouveau les manifestes d'application et de déploiement

  1. À l’invite de commandes, exécutez la commande suivante pour supprimer l’extension .deploy du fichier exécutable dans le répertoire actif.

    ren MyWPFApp.exe.deploy MyWPFApp.exe
    

    Notes

    Cet exemple part du principe qu’un seul fichier a l’extension de fichier .deploy. Veillez à renommer tous les fichiers de ce répertoire qui ont l’extension de fichier .deploy .

  2. À l’invite de commandes, exécutez la commande suivante pour signer le manifeste de l’application.

    mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx
    

    Notes

    Cet exemple part du principe que vous signez le manifeste à l’aide du fichier .pfx du projet. Si vous ne signez pas le manifeste, vous pouvez omettre le paramètre -cf utilisé dans cet exemple. Si vous signez le manifeste avec un certificat qui nécessite un mot de passe, spécifiez l’option -password (For example: mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx - password Password).

  3. À l’invite de commandes, exécutez la commande suivante pour ajouter l’extension .deploy au nom du fichier que vous avez renommé à l’étape précédente de cette procédure.

    ren MyWPFApp.exe MyWPFApp.exe.deploy
    

    Notes

    Cet exemple part du principe qu’un seul fichier avait une extension de fichier .deploy. Veillez à renommer tous les fichiers de ce répertoire qui avaient précédemment l’extension de nom de fichier .deploy.

  4. À l’invite de commandes, exécutez la commande suivante pour signer le manifeste de déploiement.

    mage -u ..\..\MyWPFApp.application -appm MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx
    

    Notes

    Cet exemple part du principe que vous signez le manifeste à l’aide du fichier .pfx du projet. Si vous ne signez pas le manifeste, vous pouvez omettre le paramètre -cf utilisé dans cet exemple. Si vous signez le manifeste avec un certificat qui nécessite un mot de passe, spécifiez l’option -password, comme dans cet exemple :For example: mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx - password Password.

    Une fois ces étapes effectuées, vous pouvez déplacer les fichiers publiés vers l’emplacement à partir duquel vous souhaitez que les utilisateurs finaux installent l’application. Si vous envisagez de mettre à jour la solution souvent, vous pouvez déplacer ces commandes dans un script et exécuter le script chaque fois que vous publiez une nouvelle version.