Winform 下载服务器安装包并安装

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

 1 一,定义下载委托事件(用于实现前台进度条更新和下载完成后事件的回调):
 2 private delegate void Action();
 3 private string diverUrl = ConfigurationManager.AppSettings["diverUrl"];//http:形式
 4 //页面初次加载事件
 5 private void frmProgressBar_Load(object sender, EventArgs e)
 6         {
 7             //获取存储路径
 8             GetRemovableDeviceId();
 9             if (File.Exists(_drivesName))
10             {
11                 //安装包存在,则直接进行安装
12                 var process = Process.Start(_drivesName);
13                 if (process != null) process.WaitForExit();
14                 //Process
15                 this.Close();
16             }
17             else
18             {
19                 //安装包不存在--则下载
20                 DownloadFile(diverUrl, _drivesName,DownloadProgressChanged, downloadFileCompleted);
21             }
22         }
23
24         /// 下载
25         private void downloadFileCompleted()
26         {
27             Process.Start(_drivesName);
28             this.Close();
29         }
30
31         /// 检测本机盘符
32         public void GetRemovableDeviceId()
33         {
34             List<string> drivesList = new List<string>();
35             DriveInfo[] dr = DriveInfo.GetDrives();
36             foreach (DriveInfo dd in dr)
37             {
38                 if (dd.DriveType == DriveType.CDRom || dd.DriveType == DriveType.Removable)  //过滤掉是光驱的 磁盘或移动U盘
39                 {
40                     break;
41                 }
42                 else
43                 {
44                     drivesList.Add(dd.Name);
45                 }
46             }
47             //已驱除驱动盘
48             for (int i = 0; i < drivesList.Count; i++)
49             {
50                 //其它盘符
51                 if (drivesList[i].IndexOf("C") == -1)
52                 {
53                     _drivesName = drivesList[drivesList.Count - 1].Replace(":\\", "")+ ":Cam_Ocx.exe";
54                     return;
55                 }
56                 else
57                 {
58                     _drivesName = drivesList[i].Replace(":\\","") + ":Cam_Ocx.exe";
59                 }
60             }
61         }
62 //下载文件
63  private void DownloadFile(string url, string savefile, Action<int> downloadProgressChanged, Action downloadFileCompleted)
64         {
65             WebClient client = new WebClient();
66             if (downloadProgressChanged != null)
67             {
68                 client.DownloadProgressChanged += delegate (object sender, DownloadProgressChangedEventArgs e)
69                 {
70                     this.Invoke(downloadProgressChanged, e.ProgressPercentage);
71                 };
72             }
73             if (downloadFileCompleted != null)
74             {
75                 client.DownloadFileCompleted += delegate (object sender, AsyncCompletedEventArgs e)
76                 {
77                     this.Invoke(downloadFileCompleted);
78                 };
79             }
80             client.DownloadFileAsync(new Uri(url), savefile);
81         }
82 //显示进度条
83  private void DownloadProgressChanged(int val)
84         {
85             progressBar1.Value = val;
86             lbValue.Text = val + "%";
87         }

时间: 2024-08-01 22:45:03

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

使用yum下载RPM包而不安装

方法一:yum yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了--downloadonly(只下载)的选项来达到这个目的. yum install --downloadonly <package-name> 默认情况下,一个下载的RPM包会保存在下面的目录中: /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages 以上的[repository]表示下载包的来源仓库的名称(例如:base.fedo

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

18.1.说明: 经常遇到服务器没有网络的情况下部署环境,或者创建自己的 yum 仓库等,这时就需要下载 rpm 包. 18.2.方法一,yumdownloader(推荐): 如果只想通过 yum 下载软件包,但是不需要进行安装的话,可以使用 yumdownloader 命令, yumdownloader 命令在软件包 yum-utils 里面. 1.安装 yum-utils 软件包: yum install yum-utils -y 参数说明: --destdir:指定下载的软件包存放路径,不

离线下载pip包进行安装

Host-A 不能上网,但是需要在上面安装python-package 通过另外一台能上网的Host-B主机 1. 本地下载安装包 更新本机pip: pip install --upgrade pip 本地新建一个安装包保存目录,如pypack cd pippack pip download requests 然后把整个pypack目录scp到服务端 2. 远程服务器安装 pip install --no-index --find-links="/tmp/tranferred_packages&

7.6 yum更换国内源;7.7 yum下载rpm包;7.8 -7.9 源码包安装

扩展: 1. 配置yum源优先级 http://ask.apelearn.com/question/7168 2. 把源码包打包成rpm包 http://www.linuxidc.com/Linux/2012-09/70096.htm 7.6 yum更换国内源 1. 进入/etc/yum.repos.d目录下: [[email protected] ~]# cd /etc/yum.repos.d 2. 删除本地仓库配置文件:rm -f 仓库配置文件 [[email protected] yum.

Rpm包的安装与yum的配置

RPM包管理器的常用命令和示例: 1.安装程序包: rpm [option]/path/to/package_file –i:安装程序包 –v:显示安装的过程 -h :显示安装进度 -vv:显示详细信息 -vvv:显示更更详细信息 -ivh --nodeps: 强制安装程序包(不解决依赖关系情况下强制安装,将不能正常使用) 2.  卸载程序包 rpm [option] package_name -e:卸载包 [[email protected] Packages]# rpm -ev zsh -e

7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装

7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装 扩展 1. 配置yum源优先级 http://ask.apelearn.com/question/7168 2. 把源码包打包成rpm包 http://www.linuxidc.com/Linux/2012-09/70096.htm # 7.6  yum更换国内源 ![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170812/154757717.png?imagesl

如何使用yum来下载RPM包而不进行安装

方法一:yum yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了--downloadonly(只下载)的选项来达到这个目的. $ sudo yum install --downloadonly <package-name> 默认情况下,一个下载的RPM包会保存在下面的目录中: /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages 以上的[repository]表示下载包的来源仓库的名称(例如:ba

下载android sdk更新包离线安装解决方案

本文转载自:http://xljboox.blog.163.com/blog/static/7628448320111159354738/ 第一次安装android sdk后进行开发包的更新,你应该了解到需要的时间会很长,那么是否有办法提升安 装的进度呢?办法自然是有的,这里提供一个取巧的方法,不会太麻烦,又能加快android开发环境的部 署过程.具体请参考如下.1.通过访问和分析android更新列表的xml在线地址 *************************************

yum更换国内源、下载rmp包,源码包安装

yum 本身自带的yum源是国外的地址. 自定义yum源,需要先删除默认yum源,然后使用wget命令建立新yum源. 执行完curl命令后,生成了新的yum源文件CentOS7-Base-163.repo. 查看CentOS7-Base-163.repo文件,发现其中的镜像地址更改为baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/ yum下载rpm包 安装扩展源epel(epel在光驱中没有) 使用命令yum ins