1

私は次のようなソースファイルをセットアップしています: C:\Base、および Base はFolderAFolderBFolderCなどです.... 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 で複数のディレクトリを収穫することを見てきましたが、最初の答えは手動作業が多すぎます (ほぼ完全な自動化を求めています)。数千のファイルと数十のフォルダーとサブフォルダーをインストールする必要があります。

4

0 に答える 0