WiX - 在设置输出中收集非项目程序集

dev*_*tal 8 .net installation wix visual-studio-2010 wix3.5

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

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

小智 7

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

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

有关我当前如何使用heat来获取我的发布目录的示例:

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>
Run Code Online (Sandbox Code Playgroud)