WiX 引导程序项目上的 .NET 4.8 框架安装问题

Issue with .NET 4.8 framework installation on WiX bootstrapper project

我正在开发一个带有自定义 UI 的 WiX 引导程序应用程序,它安装了一个 .msi 和一些 .exe 文件。我有一个先决条件,必须在系统上安装 .NET 4.8。如果未安装,则首先安装 .NET 4.8 框架,然后安装所有其他项目。

我正在使用 WiX v3.14.0.5722 作为安装程序。 通过文档安装 .NET 4.8 我按照这篇文章。 Link: How To: Install the .NET Framework Using Burn

<Chain>
    <PackageGroupRef Id="NetFx48Redist"/>
    .....
    .....
</Chain>

我还尝试检查 .msi 项目并设置条件,如下所示。

<PropertyRef Id="WIX_IS_NETFRAMEWORK_48_OR_LATER_INSTALLED"/>

.......
.......

<Condition Message="This application requires .NET Framework 4.8. Please install the .NET Framework then run this installer again.">
    <![CDATA[Installed OR WIX_IS_NETFRAMEWORK_48_OR_LATER_INSTALLED]]>
</Condition>

但没有任何解决方案适合我。我收到如下错误。

Bundle.wxs(67,0): error LGHT0094: Unresolved reference to symbol 'ChainPackageGroup:NetFx48Redist'

然后我发现了一些关于 .NET 4.8 安装的实现,并从 wixtoolset/wix3 导入了 NetFx48.wxs 文件,然后 ChainPackageGroup:NetFx48Redist 错误消失了,但我发现另一个问题如下:

Acquiring package NetFx48Redist, payload NetFx48Redist, download from httpsgo.microsoft.comfwlinkLinkId=2088631
Error 0x80070490 Failed to find expected public key in certificate chain.
Error 0x80070490 Failed to verify expected payload against actual certificate chain.
Error 0x80070490 Failed to verify signature of payload NetFx48Redist

我也按照link.NET 4.8 redistributable downloads have changed its hash and file size解决了我的问题

谁能帮我解决 .NET 4.8 安装问题?先感谢您。编码愉快。

查看此文件中的值 https://github.com/wixtoolset/wix3/blob/develop/src/ext/NetFxExtension/wixlib/NetFx48.wxs

Microsoft 明智地更改了其下载链接指向的 .NET 4.8 版本。

我已经解决了我的问题,我想分享我的想法,因为很多开发人员都可以从中受益。

由于 .NET 4.8 框架安装在 WixNetFxExtension 扩展中的实现是否包含在 WiX v3.14.0.5722 WiX 版本中。就我而言,它不起作用。

所以我在 bootstrapper.msi 项目中都包含了 NetFx48.wxs 文件,但我必须更新 remotePayload.

那么如何更新 remotePayload of NetFx48.wxs

<RemotePayload 
          CertificatePublicKey="D17AFCE951979605250FAEBAFA7AE974899AED22" 
          CertificateThumbprint="C82273A065EC470FB1EBDE846A91E6FFB29E9C12" 
          Description="Microsoft .NET Framework 4.8 Setup" 
          Hash="5A84A8E612E270E27D0061D58DB6B470153BE1F9" 
          ProductName="Microsoft .NET Framework 4.8" 
          Size="1479400" 
          Version="4.8.3928.0" />
<RemotePayload
          CertificatePublicKey="D17AFCE951979605250FAEBAFA7AE974899AED22" 
          CertificateThumbprint="C82273A065EC470FB1EBDE846A91E6FFB29E9C12" 
          Description="Microsoft .NET Framework 4.8 Setup" 
          Hash="8DD233698D5EB4609B86C2AC917279FE39E0EF4C" 
          ProductName="Microsoft .NET Framework 4.8" 
          Size="117380440" 
          Version="4.8.3928.0" />

首先,您必须下载 ndp48-web.exendp48-x86-x64-allos-enu.exe 文件,然后转到 wix 安装文件夹。然后运行下面的命令

heat.exe [ndp48-web.exe file directory] -out [file_name.wxs]

第二个文件也这样做。

heat.exe [ndp48-x86-x64-allos-enu.exe file directory] -out [file_name.wxs]

然后我们可以得到更新后的 remotePayload 文件,如下所示

 <RemotePayload 
          CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" 
          CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" 
          Description="Microsoft .NET Framework 4.8 Setup" 
          Hash="4181398AA1FD5190155AC3A388434E5F7EA0B667" 
          ProductName="Microsoft .NET Framework 4.8" 
          Size="1439328" 
          Version="4.8.4115.0" />

<RemotePayload
          CertificatePublicKey="F49F9B33E25E33CCA0BFB15A62B7C29FFAB3880B" 
          CertificateThumbprint="ABDCA79AF9DD48A0EA702AD45260B3C03093FB4B" 
          Description="Microsoft .NET Framework 4.8 Setup" 
          Hash="E322E2E0FB4C86172C38A97DC6C71982134F0570" 
          ProductName="Microsoft .NET Framework 4.8" 
          Size="117380440" 
          Version="4.8.4115.0" />