【问题标题】:WiX cannot find file when trying to bundle .NET framework dependency尝试捆绑 .NET 框架依赖项时,WiX 找不到文件
【发布时间】:2012-05-03 11:47:39
【问题描述】:

我在尝试构建我的 Burn 引导程序时遇到一个奇怪的错误,该引导程序依赖于 .NET 4 框架。我已经下载了 WiX 设置的源代码,并在我的项目中包含了 NetFx.wxs,并在链中添加了 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>

我该如何解决这个问题?

【问题讨论】:

    标签: wix wix3.6 burn


    【解决方案1】:

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

    【讨论】:

    • WiX 所做的一半有时看起来很疯狂! ;-)
    • 这是否意味着我必须将可再发行文件提交到我的版本控制系统中才能在构建服务器上构建?圣牛!!!
    • @TimLong 您可以使用此处记录的&lt;RemotePayload&gt; 选项wix.sourceforge.net/manual-wix3/wix_xsd_remotepayload.htm
    • @ViktorElofsson 如果您将其放在答案中,我会接受并投票
    • WiX 工具集在创建 Bundle 时需要从可执行包中获取哈希、大小、签名等信息,以正确安装/缓存包。这就是为什么文件必须存在或使用 RemotePayload 元素直接提供数据的原因。深入了解这并不疯狂。
    【解决方案2】:

    您实际上可以使用 RemotePayload Element 中记录的&lt;RemotePayload&gt; 选项在不存在 dotNetFx40_Full_x86_x64.exe 文件的情况下构建您的包。

    【讨论】:

      猜你喜欢
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 2015-10-04
      相关资源
      最近更新 更多