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 est d'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 nécessiter 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 puisque 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 va créer une source Wix avant d'appeler candle?

52
demandé sur Christopher Painter 2009-01-06 01:06:46

5 réponses

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é mallow source et modifié un peu et l'ai utilisé, car la paraffine a besoin de la version 3.5 de. Net.

Vous pouvez utiliser Mauve

Ou outil de paraffine pour générer des fragments WiX: mise en route, la douleur de WiX , un meilleur suif, Paraffine , Télécharger, paraffine pour Wix 3.0

23
répondu sundar venugopal 2009-01-06 16:30:53

J'ai utilisé de la chaleur.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\chaleur.exe " dir "$(SourcePath) " - cg MyFiles-gg-scom -sreg - sfrag-DR INSTALLDIR-out " $ (ProjectDir)Fragments\FileFragment.wxs" - var wix.InstallerPath

19
répondu stankovski 2011-04-25 21:04:06

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

Fondamentalement, la première fois pour une version donnée, nous allons exécuter notre script d'installation avec une action "generate" qui crée de nouveaux .wxs fichiers 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 s'assurer que le .les fichiers wxs sont mis à jour avec tout nouveau fichiers / répertoires qui ont été ajoutés.

Je crois que la chaleur v3 aussi maintenant vous permet de faire beaucoup(ou peut-être tous?) de ceci, comme Brian Rogers écrit . Je me sens toujours plus à l'aise avec la façon dont la paraffine le fait plus explicitement en maintenant des GUID statiques, mais la chaleur actuelle semble être une bonne option.

3
répondu JasonBirch 2009-04-29 23:28:56

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

2
répondu Coincoin 2009-01-05 22:31:42

Dans mon utilisation de WIX, Je n'ai jamais rencontré une fonctionnalité qui vous permet d'ajouter un répertoire entier de fichiers à la fois. C'est parce qu'il y a plusieurs 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 a besoin de savoir), et aussi parce que l'installation elle-même doit être assez spécifique.

Cela ne vous empêche pas d'écrire votre propre frontend pour WIX qui générera le fichier XML Wix (ou des parties de celui-ci) après avoir analysé le contenu d'une structure de répertoire. 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. Il suffit de traverser l'arbre et de générer 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 écrire un, faites-le nous savoir.

En outre, vous pouvez avoir le fichier WIX généré 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 un "fichier WIX enregistré" que n'importe qui construit, le système le construit juste à la fin, en prenant automatiquement en compte les nouveaux fichiers à l'étape post-construction.

1
répondu EdgarVerona 2009-01-05 22:29:56