ClickOnce部署(4) 下载多个安装包

有时候,我们可能会一次性发布多个安装包,当然在网页上多加几个链接让用户逐个安装也是可取的。不过,也可以弄得更方便些,即用户先安装一个,作为一个"引导程序",然后通过这个程序去下载安装其他应用程序。

我们还是说说真实的例子,这样好理解一点。假设我开发了两个应用程序,一个叫App1,另一个叫App2。我把这两个应用程序同时发布。

我们可以在IIS服务器的根目录下新建两子目录,我们分别把这两个应有程序发布到这两个文件夹下,如下面两张截图所示。

第一个应用

第二个应用

最后,重点是如何做这个"引导"安装包,即我们通过这个应用程序来下载前面两个应用来安装。

别急,在开工之前,我想让大家背书,不多,小学生也能背下来的,总共就两句话:

第一句:凡是和ClickOnce部署有关的类都位于System.Deployment.Application命名空间下。

第二句:开菜单——做菜——试菜——开饭。

第一句话就不用解释了,如果你不明白说明你还没入门。我们把重点放在第二句话,这句话可能大家觉得很搞笑,怎么好像在做饭啊? 是啊,"民以食为天",做饭很重要。

这里说的是做这个"引导"安装应用的步骤,我们要用到InPlaceHostingManager类,它可以实现实时下载安装应用程序包,不要问我这个类在哪里,前面叫你背了第一句话。

InPlaceHostingManager类使 用按以下几步。

第一、new一个InPlaceHostingManager对象,这是废话。构造函数中我们要传 一个URI,部署清单的URI,打包ClickOnce后,那个以.application后缀结尾的文件就是。

第二、开菜单。调用GetManifestAsync方法获取清单,获取后,无论成功与否会引发GetManifestCompleted事件,所以在调用方法前要为GetManifestCompleted事件附加处理代码,这是基础知识,估计我不必解释了。

第三、做菜。调用AssertApplicationRequirements方法检查一下你有没有这个权限,要明白自己是吃几碗饭的,如果权限不够会引发异常,如果力所能及,方法调用后一切正常。一个bool类型的参数表示当权限不足时是否尝试提升,你懂的。

如果权限检查通过,调用DownloadApplicationAsync方法就可以下载应用程序了,在这过程中会引发DownloadProgressChanged和DownloadApplicationCompleted,这两个事件我不说了,你知识怎么处理了,和使用BackgroundWorker一样,如果你不懂,请回家好好细读《C#入门经典》。

第四、试菜。打开"开始"菜单或"开始"屏幕,看看有没有新安装应用的快捷方式,如果有,那就下载安装成功了。

第五、吃饭。尽情享用吧。

好吧,光说不行,还是要做一做。

界面是包括两个Label和两个ProgressBar,标签用来显示文本,进度条当然表示下载的进度。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/

时间: 2024-11-01 05:17:34

ClickOnce部署(4) 下载多个安装包的相关文章

eclipse-安装SDK后下载不了安装包

问题描述 安装SDK后下载不了安装包 我用的是eclipse,安装好了JDK和配置了环境变量.下载好了SDK,运行,下载安装包,发现报错.于是在网上查了些方法,跟着上面说的方法弄.在system32,hosts文件里加了#google_android更新 的字样,可还是下载不了安装包.我是菜鸟,求大神相助. 解决方案 试试这里面的操作,看还有效不.http://blog.csdn.net/chinacsharper/article/details/38072711 解决方案二: 可以下载个绿色版

android实现程序自动升级到安装示例分享(下载android程序安装包)

复制代码 代码如下://程序下载升级 zhouxiang@JavascriptInterfacepublic void UpdateCAECP(final String path){try{AlertDialog.Builder builder = new Builder((Context)obj);builder.setMessage("检测到有新版本发布,是否进行下载升级?");builder.setTitle("程序更新提示");builder.setPosi

taptap下载的安装包在哪 taptap游戏安装包位置介绍

很多玩家在taptap上下载了安卓手游之后,想要上传到电脑上用安卓模拟器来玩,但是不知道下载的游戏储存位置在哪,接下来,小编就为各位玩家带来taptap游戏安装包位置介绍. taptap游戏安装包位置介绍: 首先可以在手机目录搜taptaptmp. 不过taptap平台默认是装完直接删掉安装包的. 如果需要保存游戏的话,最好先去设置里面关闭[自动删除安装包]. taptap下载的游戏安装包具体地址: /sdcard/Android/data/com.taptap/files/Download/t

使用LNMP一键安装包配置CentOS服务器环境教程_Linux

因为不用职守,不用编译安装时输入大量的命令.作为使用linux配置生产环境的新手,无疑是最不想看到的.下面介绍如何在CentOS安装LNMP. 什么是LNMP LNMP指的是Linux系统下Nginx+MySQL+PHP这种网站服务器架构.这种网站服务器架构使用更少的资源,支持更多的并发连接,体现更高的效率.非常适合配置比较低的VPS. 安装LNMP 这里只介绍在CentOS下安装. 1.登录SSH(如何使用SSH?),键入以下命令下载LNMP一键安装包. wget -c http://soft

金山毒霸2012内测 安装包只有10M 7秒即可安装完成

6月22日夜间,http://www.aliyun.com/zixun/aggregation/31216.html">金山毒霸2012启动了内测.本次内测仅针对金山毒霸体验团队成员.如果你是金山毒霸体验团队的成员,即可抢先感受到到金山毒霸2012超乎想象的全新查杀体验.根据金山网络发布的信息此版本最大的特点就是"快",从下载.安装到升级.对新病毒的响应速度都会让用户感受到明显的"快".比如安装包只有10M.整个安装过程不超过10秒.对新病毒的反应速

解决node.js安装包失败的几种方法_node.js

镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 1.通过config命令 npm config set registry https://registry.npm.taobao.org npm info underscore (如果上面配置正确这个命令会有字符串response) 2.命令行指定 npm --registry https://registry.npm.taobao.org info underscore 3.编辑 ~/.npmrc

ios开发中能不能用一个app去下载另一个app的安装包并自动安装

问题描述 ios开发中能不能用一个app去下载另一个app的安装包并自动安装 需求:有一个主APP,用来下载其他APP,比如下载完成后自行安装到主APP中(就像插件),然后会产生一个图标,点击这个图标就会启动新安装的APP,当安装这个APP后又返回到主APP中.---------有点像Iphone的桌面. 有没有大神知道类似的实现方法. 解决方案 你看看腾讯的qq农场,其中需要跳转到qq牧场的时候就和你的情况一样,ps:QQ农场和qq牧场是俩app 解决方案二: 一般来说都是跳到APP stor

vs2012 打包应用程序(创建部署/安装包)

原文 http://www.cnblogs.com/wangchunming/archive/2012/09/28/2707731.html   新建这么一个项目,点OK,如果是第一次使用的话,会打开一个网页,按照提示的步骤来做, 点击上面的step2的网址,进入到另一个网页: 填写完右边的信息,点击"download now"即会收到一封邮件,里面有下载地址和激活码.   点击上面的连接进行下载,会下载到一个名为:InstallShield2012SPRLimitedEdition.

欧尼sdo-goodgle的adb安装包在什么地方下载?

问题描述 goodgle的adb安装包在什么地方下载? 请问在什么地方下载Goodgle的adb工具包?我可不可以用其他的代替? 解决方案 可以去android-studio.org下载整套的程序和工具