WiX:如何使用多文件夹设置运行heat.exe以获取多个WXS文件?

时间:2013-08-13 20:46:35

标签: wix installer wix3.7

我的源文件设置如下: C:\ Base ,在Base中 FolderA FolderB FolderC 等....我想在Base的每个子文件夹上运行“heat dir”,这样我就会得到一个包含每个文件夹的一个ComponentGroup的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等运行一次来​​自脚本的热量。我不希望有一个热量语句来处理所有文件夹。)

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:\以 SourceDir 为基础,无法找到文件RandomFile.txt,因为它正在寻找C:\ Base \ RandomFile.txt,而不是C:\ Base \ FolderA \ RandomFile.txt。我不能将C:\ Base \ FolderA指定为 SourceDir ,因为FolderB,FolderC等...将是错误的。那么如何告诉heat在'$(var'之间插入'FolderA'' .SourceDir)\'和'RandomFile.txt'

我看过Harvesting multiple directories in WiX,但第一个答案是手动工作太多(我们看起来几乎完全自动化),第二个答案是将所有内容放在一个ComponentGroup下的一个文件中,这将是一个维护噩梦,因为我们有数千个文件和几十个要安装的文件夹和子文件夹。

0 个答案:

没有答案