WiX - 如何将ExePackage元素链接到产品中

时间:2014-07-21 11:27:28

标签: wix fragment exe linkage prerequisites

我正在尝试在我的MSI安装程序中包含VC ++ Redistributable 2013先决条件安装。

我修改了this guy写的Fragment,以便在执行注册表检查(文件 - MyWixProject / vcredist.wixobj)后安静地下载并安装vcredist_x86.exe包:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
    <?define vcredist_x86="http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe"?>

    <Fragment>
        <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\DevDiv\vc\Servicing\12.0\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\vc\Servicing\12.0\RuntimeMinimum" Value="Install" Variable="vcredist" />
        <PackageGroup Id="vcredist">
            <PackageGroupRef Id="InstallVCRedist"/>
            <ExePackage Id="vcredist_x86"
                        Cache="no"
                        Compressed="no"
                        PerMachine="yes"
                        Permanent="yes"
                        Vital="yes"
                        Name="Redist\vcredist_x86.exe"
                        SourceFile="Redist\vcredist_x86.exe"
                        DownloadUrl="$(var.vcredist_x86)"
                        InstallCommand="/q"
                        DetectCondition="vcredist AND (vcredist &gt;= 1)">
                <ExitCode Value ="3010" Behavior="forceReboot" />
            </ExePackage>
        </PackageGroup>
    </Fragment>
</Wix>

我正在尝试从Fragment元素(文件MyWixProject / Product.wxs)引用此Product。我读到了“The contents of a Fragment element can be linked into a product by utilizing one of the many *Ref elements”。但是如何从主ExePackage元素引用PackageGroupRef或其Product?或者是否有另一种方法可以在.wixobj Fragment内编译.wxs及其Product?&gt;

1 个答案:

答案 0 :(得分:1)

ExePackage仅适用于Bundle,而不适用于产品。 MSI不支持同时安装多个产品,VC ++可再发行组件只是一个包含多个产品的捆绑包。