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

 一,定义下载委托事件(用于实现前台进度条更新和下载完成后事件的回调):
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. ES6对象扩展

    前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象 ...

  2. linux kill杀死进程

    背景:这个命令总是记不住,在此稍作记录,方便查看! 1 杀死进程 1.1 查看进程 此时如果我想杀了火狐的进程就在终端输入: $ kill -s 9 1827 其中-s 9 制定了传递给进程的信号是9 ...

  3. UVALive - 5107 - A hard Aoshu Problem

    题目链接:https://vjudge.net/problem/UVALive-5107 题目大意:用ABCDE代表不同的数字,给出形如ABBDE___ABCCC = BDBDE的东西: 空格里面可以 ...

  4. 用java写一个用户登陆界面

    一.课堂测试源代码及其结果截图 用java的swing写一个用户登录界面,采用网格布局.源代码如下: /** * */package LiuLijia; import java.awt.CardLay ...

  5. 小明历险记:规则引擎drools教程一

    小明是一家互联网公司的软件工程师,他们公司为了吸引新用户经常会搞活动,小明常常为了做活动加班加点很烦躁,这不今天呀又来了一个活动需求,我们大家一起帮他看看. 小明的烦恼 活动规则是根据用户购买订单的金 ...

  6. TypeScript基础数据类型

    Typescript与Javascript 二者的区别 作为前端开发的基础语言javascript已经深入人心,人人皆知.作为变成入门的最简单语言,Javascript语言以动态.弱类型语言而著名,学 ...

  7. Oracle数据库常用关键字以及函数

    常用关键字 insert into---插入数据 delete---删除数据 update---更新一条数据 select---实际工作中尽量不要写* set---设置某些属性 where---给执行 ...

  8. 万能头文件#include

    #include<bits/stdc++.h>包含了目前c++所包含的所有头文件!!!! 测试结果POJ不支持HDU,NYOJ支持

  9. ASP.NET windows验证IIS配置

    Windows验证时,需要配置IIS,把匿名验证设为disable,windows验证设为enable,window7 默认为匿名验证为enable,windows验证为disable. 否则会sys ...

  10. CSDN社区投诉申请表

    最近两天我发现我的个人网站,业余草:www.xttblog.com,流量急速下滑.经过分析,发现是被CSDN社区的一个博客网友将我网站上的内容搬到了他的CSDN博客上.导致了已搜索就全部导流到了CSD ...