在Wix中如何设置ComponentGroupRef的目录?

3
我使用了Heat工具根据需要安装的文件夹生成了一个wxs文件。这给我提供了一个类似于以下内容的大文件:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="TARGETDIR">
            <Directory Id="dir1FC8A0605F7DF8B33E3EECB0A1270FA2" Name="DirectoryName" />
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="ComponentGroupId">
            <Component Id="cmp1FB67A60B41F3170889B7E5739A23560" Directory="dir1FC8A0605F7DF8B33E3EECB0A1270FA2" Guid="{2DC3B790-D29C-4090-B4CF-5C27687C6ABE}">
                <File Id="filF1E1262E52254B1846C7CB2393126A6F" KeyPath="yes" Source="PathToFile" />
            </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

在我的主Wix文件Product.wxs中,我有一个特性引用了上面由Heat创建的ComponentGroup。该特性类似于以下内容:
<Feature Id="FeatureId" Title="FeatureTitle" Level="1" AllowAdvertise="no" Absent="disallow" Description="Feature description.">
    <ComponentGroupRef Id="ComponentGroupId" />
</Feature>

这是有效的,但当我运行我的安装程序时,组件组中的文件被放置在C驱动器的根目录下(即C:\DirectoryName),但我希望它们进入Program Files(例如C:\Program Files\DirectoryName)。
有什么想法吗?
谢谢, Alan
1个回答

6

您可以使用-dr参数将要引用的目录的Id传递给heat,例如:

heat -dr AutogeneratedComponentsDir

如果您在msbuild中使用HeatDirectory任务,则需要使用DirectoryRefId属性。

然后只需在主要的Product.wxs文件中定义该目录的位置即可。

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLDIR" Name="YourProduct">
      <Directory Id="AutogeneratedComponentsDir"/>
    </Directory>
  </Directory>
</Directory>

非常感谢你,Dave。一旦你知道了方法就很简单! - Alan Spark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接