Licence CC BY-SA

Cas particuliers

Dans ce chapitre, nous verrons certains cas particuliers. Ils ne seront probablement pas utiles à la majorité des personnes, mais il faut quand même les préciser.

Support de différentes versions du .NET Framework

Il est assez fréquent de créer des applications supportant plusieurs versions du .NET Framework.
Or, pour que cette configuration marche sur une application ClickOnce, il faut éditer le fichier manifeste de notre application ClickOnce.

Le mani-quoi ?

Le manifeste. C'est grosso modo le fichier de configuration d'une application ClickOnce. Écrit en XML, il contient les stratégies de mise à jour, les stratégies de sécurité et les hash de tous les fichiers pour déterminer les fichiers qui ont changé lors des mises à jour.

Il se situe à la racine de notre dossier de déploiement et a pour extension .application. Ouvrez le avec votre éditeur XML favori et cherchez la balise <compatibleFrameworks />.

Vous devriez voir quelque chose comme ça :

1
2
3
<compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2">
  <framework targetVersion="4.6" profile="Full" supportedRuntime="4.0.30319" />
</compatibleFrameworks>

Ajoutez entre ces deux balises les codes XML des versions que vous voulez supporter. Voici un tableau récapitulatif des XML à ajouter en fonction des versions les plus récentes du .NET Framework :

Version du .NET Framework XML correspondant
4.6 <framework targetVersion="4.6" profile="Full" supportedRuntime="4.0.30319" />
4.5.2 <framework targetVersion="4.5.2" profile="Full" supportedRuntime="4.0.30319" />
4.5.1 <framework targetVersion="4.5.1" profile="Full" supportedRuntime="4.0.30319" />
4.5 <framework targetVersion="4.5" profile="Full" supportedRuntime="4.0.30319" />
4 Client <framework targetVersion="4.0" profile="Client" supportedRuntime="4.0.30319" />
4 Full <framework targetVersion="4.0" profile="Full" supportedRuntime="4.0.30319" />
3.5 Client <framework targetVersion="3.5" profile="Client" supportedRuntime="2.0.50727" />
3.5 Full <framework targetVersion="3.5" profile="Full" supportedRuntime="2.0.50727" />
3.0 <framework targetVersion="3.0" supportedRuntime="2.0.50727" />

(Pour vous aider, voici un tableau dans lequel je lie les versions du Framework .NET avec les OS dans lesquels ils sont disponibles par défaut)

Version du .NET Framework Inclus par défaut dans… Installable dans…
.NET 4.6 10 Vista (et ultérieur)
4.5.2 - Vista (et ultérieur)
4.5.1 8.1 Vista (et ultérieur)
4.5 8 Vista (et ultérieur)
4 - Vista (et ultérieur)
3.5 10, 8.1, 8, 7 Vista (et ultérieur)
3.0 Vista Vista (et ultérieur)

Ensuite, il vous faudra éditer le fichier App.config de votre projet pour ajouter les mêmes versions. C'est une nouvelle fois un fichier XML, cherchez la balise <startup /> cette fois. Vous devriez avoir quelque chose comme ceci :

1
2
3
<startup> 
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
</startup>

Faites comme la dernière fois. Ajoutez le code XML des versions du .NET Framework que vous souhaitez supporter, j'ai re-fait un tableau récapitulatif ci-dessous :

Version du .NET Framework XML correspondant
4.6 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
4.5.2 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
4.5.1 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
4.5 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
4 Client <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" />
4 Full <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0" />
3.5 Client <supportedRuntime version="v2.0.50727" sku="Client"/>
3.5 Full <supportedRuntime version="v2.0.50727"/>
3.0 <supportedRuntime version="v2.0.50727"/>

Une fois que c'est terminé, ré-ouvrez le fichier manifeste de notre application ClickOnce. Cherchez cette fois la balise <dependency />.
Entre les deux balises, insérez le code suivant :

1
2
3
<dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
  <assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="<!-- version du CLR ici -->" />
</dependentAssembly>

Et enfin, ajoutez la plus petite version commune du CLR (par exemple, si vous voulez supporter le .NET Framework 4.0 et 3.5, vous n'aurez pas le choix, il faudra ajouter la version 2.0.50727 du CLR.

Signature de l'application ClickOnce

Une application ClickOnce ne peut pas être publiée sans être signée. La signature d'une application lui permet de déterminer la validité des mises à jour disponibles (si elles ont bien été publiées par la même personne que l'application initiale).
Par défaut, ces certificats sont auto-signés. L'application ClickOnce sait donc si une mise à jour est valide. Mais elle ne sait pas si celui qui a publié la première version est une personne de confiance.
C'est à cela que servent les certificats signés. Ils sont payants et permettent à l'utilisateur de savoir qui est réellement l'éditeur d'une application, le gérant d'un site, le propriétaire d'une adresse mail…

Pour ajouter votre certificat acheté, allez dans le menu Signing des paramètres de votre projet. Vous verrez les informations de votre certificat auto-signé, générées automatiquement. Les boutons Select from Store et Select from File vous permettent respectivement de récupérer un certificat déjà référencé ou un certificat se situant dans vos fichiers.

Menu « signature » du certificat


Voilà, j'espère que ça vous aura été utile :)