Suona come quello che si desidera utilizzare è lo strumento WiX heat
, che viene utilizzato per "raccogliere" una directory (o singoli file) e creare un file frammento WiX che è possibile utilizzare nel progetto.
Ad esempio, si dispone di una directory che si desidera raccogliere e può includere sottodirectory, ma ci sono molti file e si desidera tutto ... il calore lo farà per voi.
considerare questo struttura banale:
Somedir
|
|---A file.txt
|---An init file.ini
|---another file.txt
|---subfolder
|
|---a subfolder file.txt
Se si utilizza il calore per raccogliere questa directory, lo strumento genererà il file frammento per voi che è possibile utilizzare come riferimento componente del progetto senza dover specificare il file uno alla volta o utilizzare una soluzione alternativa.
Ad esempio, il seguente comando di calore elaborerà questa directory (da un livello in questo esempio)
heat dir somedir -o MyHarvestedStuff.wxs -scom -frag -srd -sreg -gg -cg MyComponentGroupId -dr BIN_DIR_REF
Dove:
dir = harvest a directory
somedir = directory you want to harvest
-o MyHarvestedStuff.wxs = the output fragment file
-scom -sfrag -srd -sreg = Suppress COM elements, fragments, root directory as element, registry harvesting (these options will create a grouping that most applications can use)
-gg = generate GUID's now (this will put the GUID's into your output file, rather than using a wildcard "*". The advantage here is you can use non-standard TARGETDIR, which would not qualify for autogenerated GUID's)
-cg MyComponentGroupId = component group. this is what you will use in your feature set to include these files
-dr BIN_DIR_REF = this is the directory reference for which to place the files in your final package.
L'XML risultante assomiglia a questo (questo è stato eseguito senza -Gg per evitare la pubblicazione vera e propria del GUID)
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="BIN_DIR_REF">
<Directory Id="dirF065D7446868E03DB0B296EBADA4E4A1" Name="subfolder" />
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="MyComponentGroupId">
<Component Id="cmp739547000B47E975B0452D876AF7810B" Directory="BIN_DIR_REF" Guid="PUT-GUID-HERE">
<File Id="fil09B311A6D1EABD9E94DFA5C83F59C548" KeyPath="yes" Source="SourceDir\A file.txt" />
</Component>
<Component Id="cmp84C8400F892D39B05EE3021CCEEAA14F" Directory="BIN_DIR_REF" Guid="PUT-GUID-HERE">
<File Id="fil11A22646343997D26AC54171A62DFF4C" KeyPath="yes" Source="SourceDir\an init file.ini" />
</Component>
<Component Id="cmpFA266FC6F3269CB5D9E42C38FC995117" Directory="BIN_DIR_REF" Guid="PUT-GUID-HERE">
<File Id="filA545B6E4B63B8211E982917FC78F6EB4" KeyPath="yes" Source="SourceDir\another file.txt" />
</Component>
<Component Id="cmp2EC5C1618A59F47B7BDE800EB9AA8688" Directory="dirF065D7446868E03DB0B296EBADA4E4A1" Guid="PUT-GUID-HERE">
<File Id="filB0CD0B02385137DC806112E293083459" KeyPath="yes" Source="SourceDir\subfolder\a subfolder file.txt" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
nel file di progetto, si sarebbe avere qualcosa di simile sotto la radice <Directory>
elemento:
<Directory Id="BIN_DIR_REF" Name="bin">
<!-- anything else you might put here...-->
</Directory>
E nel tuo gruppo funzione:
<Feature Id="Complete" Level="1">
...
<ComponentGroupRef Id="MyComponentGroupId" />
...
</Feature>
Legare tutto insieme ...
- rifornimento il nuovo file frammento
candle
insieme agli altri file
- Fornire il file .wixobj che
candle
produce a light
risolvere il riferimento SourceDir
nel nuovo file frammento con una variabile preprocessore WiX o con l'opzione di -b
light
Es: light ... -b "path to my directory that I harvested" ...
Non lasciate che la lunghezza della risposta scoraggiare dall'esplorazione di questa soluzione, funziona abbastanza bene ed è piuttosto semplice. Ora, se si desidera escludere qualsiasi cosa, da quella directory, che è un intera altra storia ...
http://stackoverflow.com/a/16061215/815938 – kennyzx
possibile duplicato di [Come fare copiare una cartella in Wix] (http://stackoverflow.com/questions/16061092/how-do-copy-a-folder-in-wix) –
@ La risposta di RyanJ (http://stackoverflow.com/a/26558025/5229157) deve essere contrassegnata come la risposta corretta. Molto utile. –