web-dev-qa-db-fra.com

Comment ajouter un répertoire entier ou une sortie de projet au package WiX

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

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

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

Existe-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 bougie?

52
Coincoin

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

Dans mon cas, j'ai utilisé la source de mauve et modifié un peu et l'ai utilisé, car la paraffine a besoin de la version 3.5 de .Net.

Vous pouvez utiliser Mallow

ou outil Paraffin pour générer des fragments WiX: Mise en route , La douleur de WiX , n meilleur suif, Paraffin , Télécharger =, Paraffine pour WiX 3.

24
sundar venugopal

J'ai utilisé heat.exe dans WIX 3.5 juste à cette fin. La dernière fois que j'ai vérifié, la documentation n'était pas à jour avec la version 3.5, alors 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

19
stankovski

Le projet MapGuide Open Source utilise actuellement Paraffin 3. de John Robbins comme d'autres l'ont souligné.

Fondamentalement, la première fois pour une version donnée, nous exécuterons 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.

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

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

4
JasonBirch

Après de plus amples recherches, il semble qu'il existe un binaire inclus appelé tallow.exe qui fait exactement cela. Il crée un fragment à partir d'un répertoire en recherchant récursivement des fichiers.

2
Coincoin

Dans mon utilisation de WIX, je n'ai jamais rencontré de fonctionnalité qui vous permet d'ajouter un répertoire entier de fichiers à la fois. En effet, il existe de nombreuses façons d'utiliser un fichier donné (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 doit 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 pour WIX qui générera le fichier XML WIX (ou des parties de celui-ci) après l'analyse du contenu d'une structure de répertoires. C'est essentiellement ce que fait l'un des systèmes que nous utilisons dans mon travail. C'est la même idée que n'importe quel utilitaire de génération de code ou de fichier texte. Parcourez simplement l'arbre et générez le texte approprié.

EDIT: De cette façon, 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 rédiger un, faites-le nous savoir.

En outre, vous pouvez générer le fichier WIX dans le cadre du processus de génération en ajoutant cet utilitaire aux étapes de génération personnalisées dans VStudio. De cette façon, vous n'avez pas réellement de "fichier WIX enregistré" que quiconque construit, le système le construit simplement à la fin, prenant automatiquement en compte les nouveaux fichiers à l'étape post-génération.

0
EdgarVerona