尝试捆绑.NET框架依赖时,WiX无法找到文件

cav*_*ick 1 wix burn wix3.6

在尝试构建依赖于.NET 4框架的Burn引导程序时,我遇到了一个奇怪的错误.我已经下载了WiX设置的源代码并将其包含NetFx.wxs在我的项目中并在Chain中添加了PackageGroupRef,但是我收到以下错误:

错误LGHT0103:系统找不到文件'dotNetFx40_Full_x86_x64.exe'

档案Netfx.wxs:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
    <Fragment>
        <WixVariable Id="WixMbaPrereqPackageId"
                     Value="Netfx4Full" />

        <WixVariable Id="WixMbaPrereqLicenseUrl"
                     Value="NetfxLicense.rtf" />

        <util:RegistrySearch Root="HKLM"
                             Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                             Value="Version"
                             Variable="Netfx4FullVersion" />

        <util:RegistrySearch Root="HKLM"
                             Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                             Value="Version"
                             Variable="Netfx4x64FullVersion"
                             Win64="yes" />

        <PackageGroup Id="Netfx4Full">

            <ExePackage Id="Netfx4Full"
                        Cache="no"
                        Compressed="no"
                        PerMachine="yes"
                        Permanent="yes"
                        Vital="yes"
                        SourceFile="dotNetFx40_Full_x86_x64.exe"
                        DownloadUrl="http://go.microsoft.com/fwlink/?LinkId=164193"
                        DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)" />

        </PackageGroup>
    </Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

soh*_*hil 7

在制作msi时,您需要在本地存在dotNetFx40_Full_x86_x64.exe文件.WiX不会将其打包在msi中,只有在需要时才会在安装时下载.

  • 有时WiX的一半看起来很疯狂!;-) (2认同)
  • 在创建Bundle时,WiX工具集需要从可执行程序包中获取哈希,大小,签名和其他信息,以正确安装/缓存程序包.这就是文件必须存在或使用RemotePayload元素直接提供数据的原因.当你在引擎盖下看时,这并不疯狂. (2认同)

Vik*_*son 6

通过使用RemotePayload Element中<RemotePayload>记录的选项,您实际上可以在不存在dotNetFx40_Full_x86_x64.exe文件的情况下构建程序包.