8

我在 VS 2010 中使用 WiX 3.5,我已将所有项目程序集添加为安装项目 (.wixproj) 中的引用,并将 Harvest 属性设置为 True,以便二进制文件、内容和卫星包含在.msi 文件。

但是,我将如何将任何第三方程序集 (.dll) 添加到 .msi 输出?我是否需要将每个显式添加到 Product.wxs 文件中,还是有更好的方法?理想情况下,我想将它们添加为安装项目中的文件引用,但这似乎不是一个选项?

4

2 回答 2

7

是的,您需要手动将它们添加到某些 wxs 文件中,或者您可以使用预构建步骤使用热量为您收集这些文件(假设所有这些文件都位于单独的目录中)。

Heat是 Wix 的一部分,可以使用dir开关获取整个目录。根据命令行参数,它将生成一个单独的 wxs 文件,其中包含一个 ComponentGroup。只需从 product.wxs 中引用此 ComponentGroup。

例如,我目前如何使用热量来收获我的发布目录:

热目录“../../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>
于 2011-02-10T10:09:41.673 回答
4

当前,WiX 安装程序项目使用的Heat中存在一个错误,这意味着不会自动获取项目的引用程序集。您可能必须等待版本 4 才能得到解决。

与此同时,@Elmar de Koning 的回答可能是目前最好的。

于 2011-11-10T22:15:00.150 回答