WiX - сбор непроектных сборок в выводе настройки

Я использую WiX 3.5 в VS 2010, и я добавил все сборки проекта в качестве ссылок в проект установки (.wixproj) и установил для свойства Harvest значение True, чтобы двоичные файлы, контент и спутники были включены в файл .msi.

Однако как мне добавить какие-либо сторонние сборки (.dll) в выходной файл .msi? Нужно ли добавлять каждый из них явно в файл Product.wxs или есть более удобный способ? В идеале я хотел бы добавить их в качестве ссылок на файлы в проекте установки, но это не вариант?


person devdigital    schedule 09.02.2011    source источник


Ответы (2)


Да, вам нужно будет добавить их вручную в какой-либо файл wxs ИЛИ вы можете использовать этап предварительной сборки, который использует heat для сбора этих файлов для вас (при условии, что все эти файлы находятся в отдельном каталоге).

Heat является частью Wix и может собирать весь каталог с помощью переключателя dir. В зависимости от аргументов командной строки будет создан отдельный файл wxs, содержащий одну ComponentGroup. Просто укажите эту ComponentGroup в файле product.wxs.

Пример того, как я сейчас использую тепло для сбора моего каталога релизов:

heat dir "../../bin/release" -gg -cg CG.ApplicationBinaries -dr INSTALLDIR -scom -sfrag -sreg -srd -var var.BuildOutputDir -o ApplicationBinaries.wxs

Это создаст файл ApplicationBinaries.wxs:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="INSTALLDIR">
            <Component Id="cmp53F90D1335DD67504EC2B9E1E8620DD3" Guid="{CA2DF1B5-7B20-4596-84A4-925B4F9BA6EC}">
                <File Id="filC65F9CB88694FCA79FCB3CADB9481921" KeyPath="yes" Source="$(var.BuildOutputDir)\AsyncTCPsocket.dll" />
            </Component>
            ....
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="CG.ApplicationBinaries">
            <ComponentRef Id="cmp53F90D1335DD67504EC2B9E1E8620DD3" />
            ...
        </ComponentGroup>
    </Fragment>
</Wix>
person Elmar de Koning    schedule 10.02.2011
comment
Спасибо, думаю, я определю их явно - person devdigital; 10.02.2011
comment
Разве вам не нужно определять свойство, чтобы иметь возможность ссылаться на сгенерированный файл wxs, содержащий группу компонентов? - person KennO; 26.03.2013
comment
Затем вы каким-то образом устанавливаете $ (var.BuildOutputDir) на что-то вроде $ (var.YOURPROJECT.TargetDir) в Product.wxs? Если да, то как этого добиться? - person jpierson; 15.05.2013

В настоящее время существует ошибка в Heat, которая используется установщиком WiX project, что означает, что сборки проекта, на которые есть ссылки, не собираются автоматически. Вам, вероятно, придется дождаться версии 4, прежде чем она будет решена.

А пока ответ @Elmar de Koning, вероятно, будет лучшим на данный момент.

person David Keaveny    schedule 10.11.2011