Microsoft Système de déploiement ClickOnce offre un gestionnaire d'association de fichiers facile à utiliser qui est intégré dans le processus de déploiement de Visual Studio . Les développeurs peuvent ajouter jusqu'à 8 associations de fichiers qui seront automatiquement associées à leur application lorsque l'utilisateur exécutera le programme d'installation de ClickOnce.
J'aimerais aller un peu plus loin, cependant : Je veux permettre aux utilisateurs d'ajouter ou de supprimer manuellement supplémentaire les associations de fichiers après l'installation à partir de mon application.
J'ai deux motivations pour accomplir cette tâche :
- Je ne " forcerai " pas les associations de fichiers supplémentaires à l'utilisateur, ce qui est la façon dont les associations de fichiers sont gérées par les déploiements ClickOnce.
- Les utilisateurs peuvent ajouter ou supprimer leurs propres associations de fichiers uniques à leur guise.
La partie délicate : L'association directe d'un type de fichier à un exécutable n'est pas compatible avec les déploiements de ClickOnce.
Contrairement aux applications Windows traditionnelles, les applications ClickOnce ne sont pas lancées directement via leur exécutable. Au lieu de cela, elles sont lancées via un programme spécial .appref-ms
qui gère la magie de ClickOnce en coulisse (mises à jour automatiques, localisation des fichiers exécutables dans un répertoire obfusqué dans le dossier de l'ordinateur). %LOCALAPPDATA%
etc).
Si une application déployée par ClickOnce est ouverte directement via son exécutable, les mises à jour automatiques sont désactivées et les méthodes spécifiques à ClickOnce ne fonctionnent plus. Pour cette raison, les associations traditionnelles de fichiers de registre ne sont pas possibles dans mon cas d'utilisation.
Comment Visual Studio gère les associations de fichiers ClickOnce
L'image ci-dessous illustre le gestionnaire d'association de fichiers ClickOnce intégré à Visual Studio 2010. Ces informations sont stockées dans le fichier .manifest de l'application et sont ajoutées au registre Windows lors de l'installation.
J'ai fait quelques recherches dans mon registre et j'ai identifié plusieurs entrées faites par le programme d'installation de ClickOnce pour associer des types de fichiers à l'application déployée par ClickOnce.
Un exemple de clé de registre pour une association de type de fichier ClickOnce que j'ai trouvé dans mon registre :
rundll32.exe dfshim.dll, ShOpenVerbExtension {ae74407a-1faa-4fda-9056-b178562cf98f} %1
Où {ae74407a-1faa-4fda-9056-b178562cf98f}
est un GUID utilisé à plusieurs autres endroits dans le registre pour l'application associée.
Mon objectif est d'apprendre quelles informations doivent être ajoutées au registre (de manière programmatique) pour associer manuellement des fichiers à une application déployée par ClickOnce.
Toute aide est appréciée !