ClickOnce部署(1):一些发布方式
ClickOnce是什么玩意儿,这个问题嘛,在21世纪的互联网严重发达的时代,估计也没有必要大费奏章去介绍了,弄不好的话,还有抄袭之嫌。因此,有关ClickOnce的介绍,各位朋友可以直接查找MSDN文档,或者看下面这里,这是百度百科上的,其实也是Ctrl + C版本。http://baike.baidu.com/view/1390498.htm
如果你对这些理论的东西不感兴趣,没关系,上面所提及的内容你完全可以无视之。我们只要知道,ClickOnce是一种应用程序部署方式即可。那什么是部署呢? 我们不妨查一查词典,部署的释义为安排、布置等,而放到我们的应用程序来说,我们通俗的叫法就是安装。即把你开发好的应用程序布置到客户的计算机上,或者说安装到客户的计算机上,这就是部署。
所以我们可以说ClickOnce应用程序就是一类安装包装,它可以一步到位进行安装,而不像我们所使用的传统安装包那样,要N个"下一步",然后才是完成。
也许有人也说,发布ClickOnce包不是很简单吗? 在VS里面点几下鼠标就完事了吗? 你还拿来写博客干吗? 首先,法律并没有规定简单的东西不能拿来写博客;其次,对于许多初学者朋友来说,我想是有参考价值,至少会有;再者,有些小问题可能大家经常会忽略的。
我们先来发布一个Windows Forms应用程序,练练手。
准备条件:先确保安装了IIS,如果没有,就赶紧动手吧,因为下面我们要做的例子,是把ClickOnce同时发布到本地文件和IIS服务器上的。至于如何安装,请Search the Internet吧。
- 以管理员身份运行VS。新建一个Windows窗体应用程序项目。
- 把窗口的标题(Text属性)改成你要的标题,我这里改为"宇宙无敌应用程序"。然后再拖一个Label控件,把文本改为"超级应用,天下无敌。"。大概就如下图所示。是不是很霸气?

- 好了,就这样吧,够简单,这就是我们待会儿要发布的应用程序。
- 好,开始发布ClickOnce安装程序。打开"解决方案资源管理器",在项目节点上右击,从弹出的快捷菜单中选择【属性】,打开项目属性窗口,切换到"发布"选项卡。

- 如下图所示,有两个发布位置。

发布位置可以选择本地文件夹,也可以选择IIS上的Web服务器地址,当然FTP也行。这两个地方也没什么特别,如果你计划把应用程序直接发布到本地,就这样填:

如果你想把安装程序发布到服务器,可以这样填,也可以单击右边的
按钮来选择一个位置。

如果你希望在本地文件目录中发布一份,同时又想放到服务器上让用户下载,可以这样填。

- 安装模式一般选择第二项,不用解释,看字面意思就明白了,如下图。

- 我们的程序一般来说不可能是"终极"版,通常我们会不断更新或升级,所以,在"发布"页面中,我们可以单击"更新"按钮,随后会弹出一个窗口,如下图。

我们可以设置应用程序在什么时候检查更新,这里我改为每次运行时都检查更新。

获取更新位置,可填可不填,通常与发布位置相同。

点击确定按钮,关闭窗口。
- 发布版本号,勾选"随每次发布自动递增修订号"。这样一来,我们既可以自己填写版本号,如果忘记修改,也可以自动更新。

- 单击"发布向导"按钮,打开向导窗口,这里我们可以重新设置发布位置。

- 单击下一步,选择一种安装来源。

我们前面设置了IIS服务器的位置,所以默认是从网站安装,如果我们的应用程序是刻到光盘中来分发给客户的,也可以选择从CD/DVD安装。
- 单击下一步,选择应用程序的运行方式,如果选择CD/DVD安装,则不需要此步。

通常较好的做法是选择既可以离线使用,也可以在连接时使用。
- 单击下一步,再单击完成按钮,这时候我们会看到VS正在发布ClickOnce应用程序。

只要看到"发布成功"四个字就说明大功告成了。
下面我们来测试一下。
本地安装:我们上面的例子是生成了两个ClickOnce安装程序的,一个在本机文件中,一个在IIS服务器上。找到发布后的本地目录,如上面的d:\MyPublic\。双击setup.exe或MyApp.application文件,都可以启用安装程序。

我们看到,出现安全提示,如果确定应用程序来源合法,可以点击"安装"按钮进行安装。
安装成功后,我们的超级应用程序就运行起来了。

既然是叫ClickOnce了,那为什么我们刚才Click了不止一次呢? 那是因为缺少可信任的发布者证书导致出现安全提示的。在下一节中,我们会介绍如何自己制作证书,并在客户计算机中安装证书,那时候大家就会看到真正的ClickOnce,只要Click一下就可以安装了。
现在,我们可以打开"程序和功能"控制面板把应用程序卸载掉。
网站安装:打开浏览器,输入刚才发布的Web地址,在后面加上一个.application后缀的文件名。比如我们这个例子的清单文件叫MyApp.application。但我们会发现,找不到资源。
打开服务器上的目录一看,里面竟然是空的,我晕。
没关系,我们只要把刚才的发布选项改一下就行了。

然后重新发布就可以了。

我们看到,安装程序可以被激活了。
无论是哪种方式发布,无非就是把安装给客户,然后安装到他们的机器上罢了,所以,大家觉得哪种做法最简单就用哪种。这些东西也没有说什么硬性的条条框框,一切都是技巧而已。
好吧,本篇就说到这里吧。88
ClickOnce部署(1):一些发布方式的更多相关文章
- ClickOnce 部署 API 以编程方式检查应用程序更新
private void InstallUpdateSyncWithInfo() { UpdateCheckInfo info = null; if (ApplicationDeployment.Is ...
- ClickOnce部署
(1):一些发布方式 ClickOnce是什么玩意儿,这个问题嘛,在21世纪的互联网严重发达的时代,估计也没有必要大费奏章去介绍了,弄不好的话,还有抄袭之嫌.因此,有关ClickOnce的介绍,各位朋 ...
- 以管理员身份启动ClickOnce部署的应用程序
ClickOnce方式部署应用简单方便,估计很多人都用过,但这种方式存在一定的“缺陷”,即以管理员方式启动应用的问题,虽然出于安全考虑可以理解,但给需要管理员权限才能正常运行的程序带来了一定的麻烦,这 ...
- 摘:ClickOnce部署
ClickOnce部署 http://www.cnblogs.com/weixing/p/3358740.html#undefined (1):一些发布方式 ClickOnce是什么玩意儿,这个问题嘛 ...
- Excel催化剂开源第6波-Clickonce部署之自动升级瘦身之术
Clickonce无痛自动更新是我最喜欢使用VSTO开发并Clickonce部署的特性之一,但这个自动更新,通常会更新整个程序文件,包含所有的引用dll和一些资源文件等. 一般来说,我们更新的都是主程 ...
- Excel催化剂开源第4波-ClickOnce部署要点之导入数字证书及创建EXCEL信任文件夹
Excel催化刘插件使用Clickonce的部署方式发布插件,以满足用户使用插件过程中,需要对插件进行功能升级时,可以无痛地自动更新推送新版本.但Clickonce部署,对用户环境有较大的要求,前期首 ...
- ClickOnce部署(5):自定义安全权限
今天我们来探讨一下在ClickOnce部署中如何严格控制应用程序的权限. 演示应用 为了在下文中能更好地演示,我们先要做一个测试项目.也为了显得简单易懂,我使用最常用且最常见的WinForm项目,这是 ...
- ClickOnce部署(4):下载多个安装包
有时候,我们可能会一次性发布多个安装包,当然在网页上多加几个链接让用户逐个安装也是可取的.不过,也可以弄得更方便些,即用户先安装一个,作为一个"引导程序",然后通过这个程序去下载安 ...
- ClickOnce部署(3):使用证书
在讲述证书的使用前,我们先来了解另外一个知识——发布网页. 在前面所说的ClickOnce部署中,如果大家细心的话,应该会发现这么个问题. 如上图,发布成功后,在"输出"窗口中提示 ...
- 为通过ClickOnce部署的应用程序进行数字签名
为通过ClickOnce部署的应用程序进行数字签名 ClickOnce是.NET用于Windows应用程序的一种便捷部署方式.不过由于便捷,导致缺少自定义操作的空间.比如需要对通过ClickOnce部 ...
随机推荐
- hoops暂时用过的一些方法
(中文全部为谷歌翻译) HC_EXTERNAL void HC_CDECL HC_Show_Shell HC_PROTO ((HC_KEY, int *, HC_POINT *, int *, int ...
- ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力
Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS Memory Limit:65536KB 64bit IO Fo ...
- 【BZOJ1497】[NOI2006]最大获利 最小割
裸的最小割,很经典的模型. 建图:要求总收益-总成本最大,那么将每条弧与源点相连,流量为成本,每个收益与汇点相连,流量为收益,然后每条弧与它所能到达的收益相连,流量为inf. 与源点相连的是未被选中的 ...
- Linux上的free命令详解、swap机制
Linux上的free命令详解 解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free ...
- 关于“模仿"和”创新“
互联网刚刚进入中国的前10年,国内互联网企业基本处于模仿和学习阶段.三大门户新浪.搜狐和网易,师从雅虎:现在如日中天的BAT三巨头,百度学习谷歌.阿里巴巴学习亚马逊和EBAY.腾讯学习ICQ. 关于模 ...
- Swing学习笔记1-----Swing组件类的层次
1. 从结构上划分 Swing 组件类分为两种,一种是JComponent类,一种是Windows类.其中windows类包含的是一些可以独立显示的组件,而JComponent类包含的是不可以独立显 ...
- <十>JDBC_处理Blob类型数据
/* * 读取BLOB数据: * 使用getBlob方法读取到Blob对象 * 调用Blob的getBinaryStream(方法得到输入流,在使用IO操作 * */ @Test publ ...
- HDU2159 二维完全背包
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- git上传文件出错的时候
$ git pull --rebase origin master 运行这个基本OK!
- 百度编辑器ueditor的简单使用
最近刚被分配了以个消息发布的任务,其中用到了富文本编辑器.以前也用过,不过这次我选择的是百度富文本编辑器ueditor1_4_3-utf8-jsp版的. 其实看ueditor功能很强大,不过百度的设计 ...