代码中包含了检测本地安装盘符代码

 一,定义下载委托事件(用于实现前台进度条更新和下载完成后事件的回调):
private delegate void Action();
private string diverUrl = ConfigurationManager.AppSettings["diverUrl"];//http:形式
//页面初次加载事件
private void frmProgressBar_Load(object sender, EventArgs e)
{
//获取存储路径
GetRemovableDeviceId();
if (File.Exists(_drivesName))
{
//安装包存在,则直接进行安装
var process = Process.Start(_drivesName);
if (process != null) process.WaitForExit();
//Process
this.Close();
}
else
{
//安装包不存在--则下载
DownloadFile(diverUrl, _drivesName,DownloadProgressChanged, downloadFileCompleted);
}
} /// 下载
private void downloadFileCompleted()
{
Process.Start(_drivesName);
this.Close();
} /// 检测本机盘符
public void GetRemovableDeviceId()
{
List<string> drivesList = new List<string>();
DriveInfo[] dr = DriveInfo.GetDrives();
foreach (DriveInfo dd in dr)
{
if (dd.DriveType == DriveType.CDRom || dd.DriveType == DriveType.Removable) //过滤掉是光驱的 磁盘或移动U盘
{
break;
}
else
{
drivesList.Add(dd.Name);
}
}
//已驱除驱动盘
for (int i = ; i < drivesList.Count; i++)
{
//其它盘符
if (drivesList[i].IndexOf("C") == -)
{
_drivesName = drivesList[drivesList.Count - ].Replace(":\\", "")+ ":Cam_Ocx.exe";
return;
}
else
{
_drivesName = drivesList[i].Replace(":\\","") + ":Cam_Ocx.exe";
}
}
}
//下载文件
private void DownloadFile(string url, string savefile, Action<int> downloadProgressChanged, Action downloadFileCompleted)
{
WebClient client = new WebClient();
if (downloadProgressChanged != null)
{
client.DownloadProgressChanged += delegate (object sender, DownloadProgressChangedEventArgs e)
{
this.Invoke(downloadProgressChanged, e.ProgressPercentage);
};
}
if (downloadFileCompleted != null)
{
client.DownloadFileCompleted += delegate (object sender, AsyncCompletedEventArgs e)
{
this.Invoke(downloadFileCompleted);
};
}
client.DownloadFileAsync(new Uri(url), savefile);
}
//显示进度条
private void DownloadProgressChanged(int val)
{
progressBar1.Value = val;
lbValue.Text = val + "%";
}

Winform 下载服务器安装包并安装的更多相关文章

  1. 离线下载pip包进行安装【转】

    Host-A 不能上网,但是需要在上面安装Python-package 通过另外一台能上网的Host-B主机 1. 下载需要离线安装的Packages 在Host-B上执行如下命令: 安装单个Pack ...

  2. 【转】用yum只下载rpm包而不安装

    转自:http://liucheng.name/1950/ CentOS用yum安装软件是非常方便的,有时,我们只需要下载其中的rpm包,而不直接安装时咋办呢? 一般情况下,yum是不提供只下载的功能 ...

  3. Android 演示 DownloadManager——Android 下载 apk 包并安装

    本文内容 环境 项目结构 演示下载 参考资料 本文是 github 上 Trinea-Android-common 和 Trinea-Android-Demo 项目的一部分,将下载部分分离出来,看看如 ...

  4. 18、通过yum命令只下载rpm包不安装

    18.1.说明: 经常遇到服务器没有网络的情况下部署环境,或者创建自己的 yum 仓库等,这时就需要下载 rpm 包. 18.2.方法一,yumdownloader(推荐): 如果只想通过 yum 下 ...

  5. 通过下载git包来安装git

    Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.而国外的GitHub和国内的Coding都是项目的托管平台.但是在使用Git工具的时候,第一步要学会如何安装gi ...

  6. yum仅下载RPM包不安装

    http://www.ttlsa.com/linux/howto-yum-download-rpm-without-install/

  7. pip 安装包 不行 自己下载whl 包自己安装

    https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

  8. yum更换国内源 yum下载rpm包 源码包安装

    7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装 yum更换国内源 cd  /etc/yum.repo.d/ 删除源 rm -f   dvd.repo rm -f  C ...

  9. 用yum下载rpm包(不安装)到指定目录

    用yum下载rpm包(不安装)到制定目录    用yum下载rpm包   1.安装yum-downloadonly   # yum install yum-downloadonly -y     2. ...

随机推荐

  1. (转) Spring Boot JDBC 连接数据库

    文本将对在Spring Boot构建的Web应用中,基于MYSQL数据库的几种数据库连接方式进行介绍. 包括JDBC.JPA.MyBatis.多数据源和事务. 1 JDBC 连接数据库 1.1 属性配 ...

  2. Android - 基于 Speex 的高度封装语音库,0 耦合使用

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  3. php+sqlserver实现分页效果

    找了一些实现的代码,都或多或少有点问题. 主要问题在于: 在进行一页数据查询时的sql语句格式问题, 开始尝试使用limit关键字查询,错误,limit用于mysql: 接着使用ROWNUM.row_ ...

  4. Java curator操作zookeeper获取kafka

    Java curator操作zookeeper获取kafka Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更 ...

  5. Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  6. Openresty使用Thrift安装步骤

    最新想用Golang与Openresty相互通讯调用,使用RPC协议来实现,后来研究最终选择了Thrift:主要还是FB实现了支持Lua和Go模块,直接编译就可以成功嵌套使用,非常方便:研究了两天最后 ...

  7. JavaScript:int string 相互转化

    A.把int型转换成string型 (1) var   x=100    a   =   x.toString()      (2) var   x=100;    a   =   x   +&quo ...

  8. 转载的log4cplus使用指南

    以下转载的log4cplus使用指南的版本可能不是最新,仅作参考了解.应以最新安装包中的示例代码为准. 目    录1 Log4cplus简介    52 安装方法    53 主要类说明    64 ...

  9. xxe漏洞的学习与利用总结

    前言 对于xxe漏洞的认识一直都不是很清楚,而在我为期不长的挖洞生涯中也没有遇到过,所以就想着总结一下,撰写此文以作为记录,加深自己对xxe漏洞的认识. xml基础知识 要了解xxe漏洞,那么一定得先 ...

  10. 关于dfs+剪枝第一篇:hdu1010

    最近进入了dfs关于剪枝方面的学习,遇到的第一道题就是hdu的1010.一道很基础的剪枝..可我不幸地wa了很多次(待会再解释wa的原因吧QAQ),首先我们来看一下题目. Problem Descri ...