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

Bad*_*Sen 4 c# windows wix

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

我正在使用WiX v3.14.0.5722安装程序应用程序。我按照这篇文章浏览安装文档.NET 4.8。链接:如何:使用 Burn 安装 .NET Framework

<Chain>
    <PackageGroupRef Id="NetFx48Redist"/>
    .....
    .....
</Chain>
Run Code Online (Sandbox Code Playgroud)

我还尝试检查并为该.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>
Run Code Online (Sandbox Code Playgroud)

但没有解决方案对我有用。我收到以下错误。

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

Run Code Online (Sandbox Code Playgroud)

然后我找到了一些关于.NET 4.8安装和导入NetFx48.wxs文件的实现wixtoolset/wix3,然后 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

Run Code Online (Sandbox Code Playgroud)

我还点击链接.NET 4.8 可再发行下载已更改其哈希和文件大小,但无法解决我的问题。

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

Bad*_*Sen 6

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

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

因此,我将该NetFx48.wxs文件包含在我的项目中bootstrapper.msi项目中,但我必须更新remotePayload.

那么如何remotePayload更新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" />
Run Code Online (Sandbox Code Playgroud)

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

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

对第二个文件也这样做。

heat.exe payload [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" />
Run Code Online (Sandbox Code Playgroud)