c# - 通知用户 .exe 是针对比当前安装的更新版本的 .NET
问题描述
使用简单的单个 .exe 应用程序,是否可以针对比最终用户计算机上安装的版本更新的 .NET 框架版本,并在启动应用程序时以某种方式通知最终用户他/她需要安装较新版本的 .NET 以使用该应用程序?
在正常情况下,当启动为比当前安装的版本更新的 .NET 版本编译的 .NET .exe 时,有时似乎会弹出一条易于理解的消息,指出要运行应用程序,您必须先安装版本.NET 框架的 X。这很好。但是,它不一定会通知安装正确/需要的版本(请参阅下面的屏幕截图,即使需要 4.6 也需要安装 4.0.30319),有时弹出的消息似乎只是一个通用的 CLR 错误没有解释这是由于安装了错误的 .NET 版本。
是否有任何聪明的方法可以为最终用户生成/显示一致/可靠的更有意义或定制的消息,以便他/她永远不会收到通用 CLR 错误或说明 .NET 版本是的消息需要,但它说明安装错误的版本?
当应用程序面向 .NET 4.6 时,安装了 .NET 3.5.1 的 Windows 2008R2:
当应用程序面向 .NET 4.6 时,安装了 .NET 4.5 的 Windows 2012R2:
解决方案
您可以编写一个预启动程序来检查 Windows 系统以查看已安装的内容。然后你可以弹出你想要的任何警告,或者如果一切正常,那么只需启动你的主程序。
此外,正如 Lex Li 所发布的,您可以创建一个安装程序包。我们在我工作的地方使用 Inno Setup,它是免费的,而且非常全面。
推荐阅读
- google-sheets - 谷歌表格 - 将编辑历史记录添加到已输入数据的特定单元格
- python - 我可以将字符串中的所有内容都转移到 int 并保留逗号吗
- javascript - 在使用 useHistory() 重定向到另一个页面之前,React Toaster 不起作用
- azure - 无法运行 Arm 模板来重新部署资源
- android - 如何使用 Flavor ConfigField 覆盖 Release 中的 ConfigField 变量?
- vuejs3 - VueJS 的多选组件
- javascript - 将来自后端的日期与 javascript 时间进行比较
- flutter - 更新 UI 时出错,setState() 无法正常工作
- arrays - 具有多个自动生成的 importxml 查询的列表
- javascript - React Native Paper ProgressBar 不可见