c# - 如何在我的项目安装中包含 .NET Framework?
问题描述
我有一个使用.NET Framework (版本 4.6.2)构建的 Windows 服务。它是使用 Visual Studio 2017 中的“Windows 服务 (.NET Framework)”模板制作的。作为参考,我遵循了本指南。
将制作自定义安装程序以在客户端计算机上安装/更新/维护此 Windows 服务。以下是安装程序的概述:
- 用户在表单/UI 中输入一些信息。
- 验证用户输入。
- 将 Windows 服务项目二进制文件放在用户指定的目录中。
- 运行命令安装 Windows 服务。它将使用 Windows sc实用程序。
- 创建一个注册表项。将值插入此注册表项。
- 确保计算机上安装了 .NET Framework 4.6.2。如果尚未安装,请安装它。
据我所知,当服务启动时,需要在机器上安装 .NET Framework 4.6.2 才能使服务正常工作。
如何确定客户端计算机上安装了 .NET Framework 4.6.2?
此外,其他版本的 .NET Framework(例如 4.8 版)是否已安装在机器上会导致问题?
我在网上做了一些搜索,但没有找到适合我情况的任何解决方案。此解决方案仅在我们决定为我们的安装程序使用 Visual Studio 安装程序项目时才有效。自包含部署显然只适用于基于 .NET Core 的项目,而不适用于 .NET Framework。
解决方案
虽然我们还没有实现我们的自定义安装程序,但经过一些研究,这是我们最有可能做的:
- 在我们的自定义安装程序中包含 .NET Framework 的离线安装程序(在我们的例子中,我们需要版本 4.6.2 )。
让我们的自定义安装程序检查现有版本的 .NET Framework。有关确定已安装的 .NET Framework 版本的详细信息,请参阅此文档。
- 如果客户端具有 .NET Framework 版本 4.6.2。(或更高版本)安装,然后继续安装过程。
如果客户端安装了旧版本的 .NET Framework,请询问他们是否要更新到版本 4.6.2。如果他们拒绝,请中止自定义安装程序。如果他们选择更新到 .NET Framework 4.6.2 版,那么我们将调用离线安装程序。请参阅下面调用离线安装程序的基本代码示例:
// NOTE: This code is just a crude example. // Invoke the offline installer. System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/C path\\to\\offline\\installer\\NDP462-KB3151800-x86-x64-AllOS-ENU.exe"; process.StartInfo = startInfo; process.Start(); process.WaitForExit(); // Handle the exit code. if (process.ExitCode == ...) { ... }
参考
- 本文档介绍了重新分发 .NET Framework。
- 本文档提供了有关重新分发 .NET Framework 的详细信息。
- 本文档包含有关 .NET Framework 的最低系统要求的信息。
- 虽然更面向 IT,但本教程和本教程包含有关安装 .NET Framework 的有用详细信息。
有关的
在我的一些测试/研究中发现了以下内容:
- 默认情况下,这些操作系统安装了以下版本的 .NET Framework:
- Windows 7 SP1 – .NET Framework 版本3.5.30729.5420
- Windows 2019 年 11 月 10 日更新(版本 1909)– .NET Framework 版本4.8
- Windows Server 2012 R2 Standard(版本 6.3.9600)- .NET Framework 版本4.5.1
- Windows Server 2019(版本 10.0.17763;又名版本 1809)– .NET Framework 版本4.7.2
- 通过最近的更新(大约 2020 年 2 月),这些操作系统安装了以下版本的 .NET Framework:
- Windows 7 SP1 – .NET Framework 4.8版
- Windows 2019 年 11 月 10 日更新(版本 1909)– .NET Framework 版本4.8
- Windows Server 2012 R2 标准版(版本 6.3.9600)- .NET Framework 版本4.8
- Windows Server 2019(版本 10.0.17763;又名版本 1809)– .NET Framework 版本4.7.2