程序安装时检查是否已经安装.NETFramework

简介:

添加新项中添加一个安装程序类
None.gif using  System;
None.gif
using  System.Collections;
None.gif
using  System.ComponentModel;
None.gif
using  System.Configuration.Install;
None.gif
using  Microsoft.Win32;
None.gif
using  System.Diagnostics;
None.gif
using  System.IO;
None.gif
namespace  DOTNETCheck
ExpandedBlockStart.gif
{
ExpandedSubBlockStart.gif    
/// <summary>
InBlock.gif    
/// CheckDotnet 的摘要说明。
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    [RunInstaller(true)]
InBlock.gif    
public class CheckDotnet : System.Configuration.Install.Installer
ExpandedSubBlockStart.gif    
{
ExpandedSubBlockStart.gif        
/// <summary>
InBlock.gif        
/// 必需的设计器变量。
ExpandedSubBlockEnd.gif        
/// </summary>

InBlock.gif        private System.ComponentModel.Container components = null;
InBlock.gif
InBlock.gif        
public CheckDotnet()
ExpandedSubBlockStart.gif        
{
InBlock.gif            
// 该调用是设计器所必需的。
InBlock.gif
            InitializeComponent();
InBlock.gif
InBlock.gif            
// TODO: 在 InitComponent 调用后添加任何初始化
InBlock.gif
            
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
ContractedSubBlock.gif        
Component Designer generated code
InBlock.gif
InBlock.gif        
public override void Install(System.Collections.IDictionary stateSaver)
ExpandedSubBlockStart.gif        
{
InBlock.gif        
InBlock.gif            
//入口
InBlock.gif
            RegistryKey key=null;
InBlock.gif            key 
= Registry.LocalMachine.CreateSubKey("Software\\Microsoft\\.NETFramework\\policy\\v1.0");
InBlock.gif            
if(key==null||key.GetValue("3705")==null)
ExpandedSubBlockStart.gif            
{
InBlock.gif                    Process MyProcess
=new Process(); 
InBlock.gif                    MyProcess.StartInfo.FileName
="dotnetfx.exe";
InBlock.gif                    MyProcess.StartInfo.WindowStyle
=ProcessWindowStyle.Hidden;
InBlock.gif                    MyProcess.Start();
InBlock.gif                    MyProcess.WaitForExit(); 
//等待程序执行
InBlock.gif
                    MyProcess.Close();
ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif



本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2005/10/25/262052.html,如需转载请自行联系原作者
相关文章
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
2月前
|
开发框架 缓存 前端开发
实战.NET Framework 迁移到 .NET 5/6
从.NET Framework 迁移到.NET 5/6 是一次重要的技术革新,涵盖开发环境与应用架构的全面升级。本文通过具体案例详细解析迁移流程,包括评估现有应用、利用.NET Portability Analyzer 工具识别可移植代码、创建新项目、逐步迁移代码及处理依赖项更新等关键步骤。特别关注命名空间调整、JSON 序列化工具更换及数据库访问层重构等内容,旨在帮助开发者掌握最佳实践,确保迁移过程平稳高效,同时提升应用性能与可维护性。
66 2
|
2月前
|
开发框架 JSON 监控
实战指南:从 .NET Framework 迁移到 .NET 5/6 的策略与最佳实践
【8月更文挑战第28天】从 .NET Framework 迁移到 .NET 5/6 是一次重要的技术升级,涉及开发环境与应用架构的改进。本文通过具体案例分析,介绍迁移策略与最佳实践,帮助开发者顺利完成转变。
33 1
|
2月前
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
|
3月前
|
开发框架 前端开发 JavaScript
基于SqlSugar的数据库访问处理的封装,支持.net FrameWork和.net core的项目调用
基于SqlSugar的数据库访问处理的封装,支持.net FrameWork和.net core的项目调用
|
2月前
|
XML JSON 程序员
总结一下 .NET FrameWork 和 .NET Core 创建的项目的不同点
总结一下 .NET FrameWork 和 .NET Core 创建的项目的不同点
|
2月前
|
消息中间件 开发框架 .NET
闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?
闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?
|
2月前
|
开发框架 前端开发 .NET
闲话 .NET(3):.NET Framework 的缺点
闲话 .NET(3):.NET Framework 的缺点
|
2月前
|
开发框架 前端开发 .NET
闲话 .NET(1):.NET Framework
闲话 .NET(1):.NET Framework
|
4月前
|
安全 程序员 Shell
老程序员分享:NSIS自定义界面,下载并安装Net.Framework4.8
老程序员分享:NSIS自定义界面,下载并安装Net.Framework4.8