Comment enregistrer les types de fichiers/extensions avec un WiX installateur?
Je n'ai pas trouvé de réponse explicite à cette question dans le WiX Documentation (ou Google, d'ailleurs). Bien sûr, je pourrais juste écrire les clés de registre appropriée dans HKCR, mais il me fait me sentir sale et je m'attends à ce être une tâche standard qui doivent avoir une belle solution par défaut.
Pour les points de bonus, je voudrais savoir comment faire pour le rendre "sûr", c'est à dire ne pas écraser les enregistrements existants pour le type de fichier et de supprimer l'enregistrement sur désinstaller uniquement si elle a été enregistrée lors de l'installation et est inchangé.
Vous devez vous connecter pour publier un commentaire.
Malheureusement, il n'y a pas moyen de faire un "coffre-fort" l'association avec le programme d'installation de Windows.
Nous suffit d'écrire tout en œuvre pour le registre et ensuite avoir un composant distinct qui prend le pas sur le système par défaut et est installé uniquement si aucune autre application a déjà inscrit en tant que par défaut.
Avec Vista il y a la nouvelle "programmes par défaut" de l'interface, encore une fois vous écrire tout en œuvre pour le registre. Voici un exemple complet que nous utilisons dans notre programme d'installation. (WiX 3.0)
Mise à jour: 12 mois ont passé depuis mon original de réponse et j'ai une meilleure compréhension des associations de fichiers. Plutôt que d'écrire tout manuellement, je suis maintenant en utilisant la bonne
ProgId
définitions qui améliore la maniabilité des packages publiés. Voir le code mis à jour posté en réponse à cette question.Après quelques recherches supplémentaires, j'ai trouvé une réponse partielle à cette question dans le WiX Tutoriel. Il montre une annoncés solution et ne fonctionne pas avec WiX 3.0, mais compte tenu de cette information, j'ai tout compris. Ajouter un ProgId élément le composant contenant l'exécutable, comme suit:
myext est l'extension du fichier sans le point, et MyApplication.exe est l'id de fichier (pas le nom) du fichier exécutable (c'est à dire l'attribut Id de l'élément du Fichier).
Cela va enregistrer le type de fichier avec votre exécutable et vous offre un icône par défaut (une page blanche avec l'icône de l'application sur celui-ci), ce qui est suffisant pour mes besoins. Si vous souhaitez spécifier une icône spécifique, il semble que vous avez encore à faire vous-même, comme la suivante (code de la liés tutoriel):
Je n'ai pas trouvé une bonne solution pour ma question bonus si.
Edit: j'ai commencé à écrire ce avant que la précédente réponse est venue. Cependant, ma solution fonctionne réellement, contrairement à la réponse précédente.
"Si votre application gère son propre fichier de type de données, vous devrez vous inscrire à une association de fichiers pour elle. Mettre un ProgId à l'intérieur de votre composant. FileId devrait se référer à l'attribut Id de l'élément du Fichier décrivant le fichier conçu pour traiter les fichiers de cette extension. Remarque le point d'exclamation: il sera de retour le court chemin d'accès du fichier au lieu de la longue:"
Référence: https://www.firegiant.com/wix/tutorial/getting-started/beyond-files/