私は次のようなソースファイルをセットアップしています: C:\Base、および Base はFolderA、FolderB、FolderCなどです.... Base の各サブフォルダーで「heat dir」を実行したいので、各フォルダーに 1 つの ComponentGroup を含む 1 つの WXS ファイル。
ヒートを実行すると (C から :)
heat dir Base\FolderA -cg FolderAGroup -gg -scom -sreg -sfrag -dr -var var.SourceDir INSTALLDIR -out Components-FolderA.wxs
(またはC:\Base から' heat dir FolderA ... ')
(スクリプトから FolderA、FolderB などごとに heat を 1 回実行することに注意してください。1 つの heat ステートメントですべてのフォルダーを処理できるとは思いません。)
Components-FolderA.wxs looks like this:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="INSTALLDIR">
<Directory Id="dirA..." Name="FolderA">
<Component Id="cmpF..." Guid="{GUID-HERE}">
<File Id="filB..." KeyPath="yes" Source="$(var.SourceDir)\RandomFile.txt" />
</Component>
</Directory>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="FolderAGroup">
<ComponentRef Id="cmpF..." />
</ComponentGroup>
</Fragment>
</Wix>
これの問題は、Source="$(var.SourceDir)\RandomFile.txtがSourceDirとして指定したものを使用することです。したがって、 C:\Base をSourceDirとして指定すると、ファイル RandomFile.txt が見つからないため、探しているためです。 C:\Base\FolderA\RandomFile.txt ではなく、C:\Base\RandomFile.txt の場合、C:\Base\FolderA をSourceDirとして指定できません。FolderB、FolderC などが間違っているためです。'$(var.SourceDir)\' と 'RandomFile.txt' の間に 'FolderA\' を挿入するように heat に指示しますか?
私はWiX で複数のディレクトリを収穫することを見てきましたが、最初の答えは手動作業が多すぎます (ほぼ完全な自動化を求めています)。数千のファイルと数十のフォルダーとサブフォルダーをインストールする必要があります。