Установка директории ComponentGroupRef в Wix? - PullRequest
3 голосов
/ 28 июня 2011

Я использовал инструмент 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, у меня есть функция, которая ссылается на вышеуказанную ComponentGroup, которая была создана Heat. Функция выглядит примерно так:

<Feature Id="FeatureId" Title="FeatureTitle" Level="1" AllowAdvertise="no" Absent="disallow" Description="Feature description.">
    <ComponentGroupRef Id="ComponentGroupId" />
</Feature>

Это работает, но когда я запускаю мой установщик, файлы в группе компонентов помещаются в корень диска C (т. Е. C: \ DirectoryName), но я бы хотел, чтобы они вошли в Program Files (например, C: \ Программные файлы \ DirectoryName).

Есть идеи?

Спасибо, Alan

1 Ответ

6 голосов
/ 29 июня 2011

Вы можете передать идентификатор каталога, на который хотите сослаться, с помощью аргумента -dr, например

heat -dr AutogeneratedComponentsDir

или атрибута DirectoryRefId, если вы используете задачу HeatDirectory в msbuild.

Затем просто укажите местоположение этого каталога в вашем основном файле Product.wxs.

...