Inclure tous les Fichiers dans le dossier Bin dans Wix installateur
Je suis nouveau dans Wix, je succefully créer un programme d'installation MSI pour mon projet, mais mon dossier Bin ont beaucoup de DLL fichiers avec EXE fichier principal, je veux inclure tous les fichiers avec l'installateur
J'ai trouvé CETTE solution, ça me semble bon, mais malheureusement je ne peux pas accomplir cette solution, à mon Wix fichier, Voici mon Wix fichier:
<Product Id="*" Name="Setup"
Language="1033" Version="1.0.1.0"
Manufacturer="ORDER MS"
UpgradeCode="a4f0a0d0-ae64-4f62-9bb3-efa7e75072e0">
<Package InstallerVersion="200"
Compressed="yes"
InstallScope="perMachine" />
<MajorUpgrade Schedule="afterInstallInitialize"
DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="Setup" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<ComponentRef Id="ApplicationShortcutDesktop" />
<ComponentRef Id="ApplicationShortcut" />
</Feature>
<Icon Id="Icon.exe" SourceFile="$(sys.CURRENTDIR)\icon.ico"/>
<Property Id="ARPPRODUCTICON" Value="icon.exe" />
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="ProductComponent">
<File Source="$(var.Order.TargetPath)" />
</Component>
<Component Guid="A7C42303-1D77-4C70-8D5C-0FD0F9158EB4" Id="CopyComponent">
<CopyFile Id="SomeId"
SourceProperty="SOURCEDIRECTORY"
DestinationDirectory="CopyTestDir" SourceName="*" />
</Component>
</ComponentGroup>
J'obtiens cette Erreur:
Erreur 1 ICE18: chemin d'accès clé pour le Composant: 'CopyComponent' est le Répertoire: 'dossier d'installation'. Le Répertoire/Composant paire doit être répertorié dans la CreateFolders table.
- Avez-vous essayé d'ajouter à la composante Id="CopyComponent" un chemin d'accès clé="ÿes" attribut?
- Je vous suggère d'utiliser la chaleur de l'outil à la place de cette méthode de Copie.
- Avez-vous réussi à résoudre votre problème?
Vous devez vous connecter pour publier un commentaire.
Cette solution fonctionne avec WIX 3.11.
À la récolte de la totalité d'un répertoire, vous pouvez utiliser la Chaleur de l'WIX toolset. Avec la Chaleur, nous pouvons inclure automatiquement tous les fichiers d'un répertoire source à chaque génération. Pour ce faire nous avons d'abord besoin de modifier le
Setup.wixproj
:Définir la Harvestpath pour la Chaleur:
Chaleur va créer un
.wxs
fichier. Nous avons donc besoin d'ajouter ce fichier à la compilation ItemGroup:Puis d'exécuter la Chaleur dans le
BeforeBuild
cible de construction:Cela va générer le
HeatGeneratedFileList.wxs
chaque fois que le WIX programme d'installation est construite. Le répertoire..\Deploy
doit être définie sur le répertoire des fichiers à inclure.La seule chose que nous avons à faire à inclure ces fichiers dans notre programme d'installation d'éditer le principal
.wxs
de fichier (Product.wxs
dans cet exemple). La chaleur va créer unComponentGroup
avec le nom donné à partir de ci-dessus. Ce composant doit être référencé dans la section des caractéristiques de laProduct.wxs
:PropertyGroup
section) et de la consulter (comme$(MyDeployPath)
) n'importe quel nombre de fois dans le fichier de projet.- Je faire quelque chose de similaire à ce que vous avez besoin lors de mon installation. J'ai besoin de copier le contenu d'un dossier avec+ de 1000 fichiers (les fichiers d'aide).
Ce que j'ai fait pour résoudre ce problème est la suivante:
Dans le programme d'installation.wixproj j'ai défini le suivant:
Et ce sera d'exécuter la chaleur sur l' $(Configuration)\bin\ dir et de générer un fichier wxs, y compris TOUS les fichiers dans la corbeille dir.
De cette façon, si vous ajoutez ou supprimez tous les fichiers binaires dans votre bac dir il sera automatiquement sélectionné lorsque vous reconstruisez votre installateur (si le bac.wxs le fichier n'existe pas).
Maintenant, vous devez assurez-vous de définir la variable "BinDir" pour wix qui pointe vers l'emplacement de dir sur la machine de compilation. Vous devez également ajouter la poubelle.wxs fichier sur votre wixproj comme un lien (lors de l'ajout de fichier existant il y a une petite flèche déroulante sur "Ajouter". Cliquez sur et sélectionnez "Ajouter un lien".)
Je pense qu'il y a une chaleur réelle de la cible, quelque part dans wix mais je n'ai pas regardé à travers ce assez pour savoir comment l'utiliser encore.
Je pense que vous avez eu un peu d'un méli-mélo, si vous ne me dérange pas de me le dire.
CopyFile copie un fichier de copier un fichier à partir d'un seul endroit sur une machine cible (l'ordinateur sur lequel l'installation est en cours d'installation, pas votre ordinateur de développement) vers un autre dossier sur la même machine. Je ne pense pas que ce est ce que vous voulez.
Comme Brian suggéré que vous pouvez utiliser La chaleur pour analyser un dossier et de générer du code pour vous. Vous pouvez l'utiliser de deux façons:
Comme une aide au développement
Exécuter l'outil avec ce type de commande:
Ensuite, prenez le répertoire.wxs et l'utiliser comme source code.
Dans la construction de pipelines
Vous pouvez utiliser l'outil de Chaleur dans la construction du pipeline, ainsi que la compilation de l'installation de générer le code.
Contraire de Brian de suggestion, si vous utilisez MSBuild je dirais le HarvestDirectory cible. Voici ce que j'ai lorsque je fais quelque chose de semblable:
Cela va nourrir un élément dans la HarvestDirectory cible et assurez-vous que tout est géré dans le bon sens. Ce code va juste dans un ItemGroup dans votre .wixproj. (Si vous ne savez pas comment modifier le fichier de votre projet, découvrez cette vidéo)
Bien sûr, cela suppose que vous êtes à l'aide de MSBuild (ou Visual Studio, parce que utilise MSBuild).
Mise en garde
Ayant dit tout cela, si le principal problème est simplement qu'il y a beaucoup de fichiers, je dirais simplement knuckle down, et il suffit de définir la liste. Utilisez l'outil de Chaleur comme un échafaudage si vous le souhaitez, mais il n'y a pas de substitut pour juste l'apprentissage de la langue et de travailler avec elle. Essayer de faire les choses avec génération automatique de code peuvent introduire des questions subtiles, et c'est toujours plus simple de travailler avec une liste statique.