52 votes

Comment ajouter un répertoire entier ou la sortie d'un projet au package WiX

Nous avons décidé de passer de la configuration intégrée de VS à WiX.

Cependant, ce que nous faisons actuellement est d'utiliser les fichiers de sortie des projets comme entrée pour le projet de configuration. Cela nous permet d'ajouter facilement des fichiers d'application à un répertoire (pour les images, les échantillons et autres ressources...) et ces fichiers sont automatiquement ajoutés à la configuration lors de la construction.

Je n'ai trouvé aucune fonctionnalité similaire dans WiX. WiX semble nécessiter une entrée de répertoire et une entrée de fichier pour chaque répertoire et fichier. Cela nous obligerait à modifier la source de WiX à chaque ajout de fichier, ce qui, à mes yeux, est prohibitif car nous en avons tellement.

Y a-t-il un moyen intégré de le faire avec WiX ou dois-je écrire ma propre tâche qui créera une source WiX avant d'appeler candle?

24voto

sundar venugopal Points 1366

Pour WiX 2.0, la cire est très limitée ; la paraffine et le mallow offrent des fonctionnalités supplémentaires. Pour WiX 3.0, la chaleur offre la même fonctionnalité que la cire, un peu mieux.

Dans mon cas, j'ai utilisé la source de mallow et l'ai légèrement modifiée et utilisée, car la paraffine nécessite la version 3.5 de .Net.

Vous pouvez utiliser Mallow

ou outil Paraffin pour générer des fragments WiX : Getting started, The pain of WiX, A better tallow, Paraffin, Download, Paraffin for WiX 3.0

19voto

stankovski Points 1294

J'ai utilisé heat.exe dans WIX 3.5 juste pour cela. La dernière fois que j'ai vérifié cependant, la documentation n'était pas à jour avec la version 3.5 donc gardez cela à l'esprit.

Voici un exemple:

"$(WIX)bin\heat.exe" dir "$(SourcePath)" -cg MyFiles -gg -scom -sreg -sfrag -dr INSTALLDIR -out "$(ProjectDir)Fragments\FileFragment.wxs" -var wix.InstallerPath

4voto

JasonBirch Points 240

Le projet MapGuide Open Source utilise actuellement Paraffin 3.0 de John Robbins, comme d'autres l'ont mentionné.

En gros, la première fois pour une version donnée, nous exécutons notre script d'installation avec une action "generate" qui crée de nouveaux fichiers .wxs pour le dossier source avec des options spécifiques pour chacun.

Pour les constructions ultérieures de la même version, l'action "regen" est appelée pour garantir que les fichiers .wxs sont mis à jour avec de nouveaux fichiers/répertoires ajoutés.

Je crois que Heat v3 permet également de faire beaucoup (ou peut-être tout?) de cela, comme l'écrit Brian Rogers. Je me sens toujours plus à l'aise avec la manière dont Paraffin le fait plus explicitement en maintenant des GUID statiques, mais l'actuel Heat semble être une bonne option.

2voto

Coincoin Points 12823

Après des recherches approfondies, il semble qu'il y a un binaire inclus appelé tallow.exe qui fait exactement cela. Il crée un fragment à partir d'un répertoire en recherchant de manière récursive des fichiers.

0voto

EdgarVerona Points 1038

Dans mon utilisation de WIX, je n'ai jamais rencontré une fonctionnalité qui vous permet d'ajouter un répertoire entier de fichiers en une seule fois. Cela est dû au fait qu'il existe de nombreuses façons dont un fichier donné peut être utilisé (le système ne sait pas si vous voudrez plus tard faire référence à un fichier spécifique dans ce dossier, etc... et il a besoin de les connaître), et aussi parce que l'installation elle-même doit être assez spécifique.

Cela ne vous empêche pas d'écrire votre propre interface utilisateur pour WIX qui générera le fichier XML de WIX (ou des parties de celui-ci) après avoir analysé le contenu de structures de répertoires. C'est fondamentalement ce que font l'un des systèmes que nous utilisons au travail. C'est la même idée qu'un utilitaire de génération de code ou de fichiers texte. Il suffit de traverser l'arborescence, et de générer le texte approprié.

EDIT: De cette manière, vous pouvez considérer WIX comme le "langage de bas niveau" pour définir la configuration, et votre utilitaire comme le "langage de haut niveau". Si vous avez besoin d'aide pour en écrire un, faites-le nous savoir.

De plus, vous pouvez faire générer le fichier WIX dans le cadre du processus de build en ajoutant cet utilitaire aux étapes de build personnalisées dans VStudio. Ainsi, vous n'avez pas réellement de "fichier WIX enregistré" que quelqu'un construit, le système le construit simplement à la fin, prenant automatiquement en compte les nouveaux fichiers à l'étape de post-build.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X