.net程序开发、测试完成后,还有一个很重要的步骤--部署,作为用户,自然是希望越傻瓜化、越人性化越好。.net自带的部署选项有以下几种:
1、 Xcopy 实用工具
2、Copy Web工具
3、发布 Web站点
4、部署项目
(又分为四类:创建合并模块;为客户应用程序创建安装程序;为 Web 应用程序创建安装程序; 以及为基于智能设备(Compact Framework)的应用程序创建安装程序。还可以创建 cab文件。)
5、 ClickOnce
前四种方式应用很广泛,本文主要介绍ClickOnce的一次使用过程。
ClickOnce
是一种允许应用程序自动升级的部署技术。应用程序发布到文件共享、Web站点或 CD 这样的媒介上。之后, ClickOnce
应用程序就可以自动升级,而无需用户的干涉。ClickOnce 还解决了安全权限问题。一般情况下,要安装应用程序,用户需要有管理权限。而利用
ClickOnce,用户只要有运行应用程序所需的最低权限,就可以安装和运行。
首先,我们了解一下ClickOnce与普通的windows inStaller程序有何区别:
|
ClickOnce |
Windows Installer |
应用程序的安装位置 |
ClickOnce 应用程序缓存 |
Program Files 文件夹 |
给多个用户安装 |
否 |
是 |
安装共享文件 |
否 |
是 |
安装驱动程序 |
否 |
是 |
安装到 GAC 中 |
否 |
是 |
在“启动”组中添加应用程序 |
否 |
是 |
在菜单中添加应用程序 |
否 |
是 |
注册文件类型 |
否 |
是 |
访问注册表 |
否。有访问 HKLM 的 Full Trust 权限 |
是 |
文件的二进制修补 |
是 |
否 |
根据需要安装程序集 |
是 |
否 |
在一些情况下,使用 Windows Installer 比较好,但 ClickOnce 也适用于许多应用程序。 ClickOnce
应用程序会显示在“添加/删除程序”控制面板选项上,这与其他安装的应用程序一样。一个主要区别是用户可以选择卸载应用程序或回退到以前的版本。
ClickOnce在 ClickOnce 应用程序缓存中保存以前的版本。
关于Winows Installer的使用,本文略过。下面介绍我的一次ClickOnce的部署过程:
1、创建主程序,并测试成功!
2、创建web程序,并发布主程序到web目录。
web程序的设置,注意部署到IIS中。
主程序的发布选项:
是否创建一个桌面图标:
此时客户可以从这个地址在线安装程序了。web程序目录下生成三个文件:
3、从指定web路径安装程序
4、升级安装程序、回滚安装程序
首先修改主程序,并发而新版本,如下:
发布后用户再次运行主程序,或访问publish.htm时,会收到如下提示:
升级成功后,界面:
此时,控制面板,如下:
此时,选择“更改/删除”可以选择前一个版本或彻底删除,如果选择前一个版本,如下:
5、问题出现:
在项目-右键-属性-发布--发布向导时,提示错误: Cannot publish because a project failed to build.
奇怪!尝试解决方法如下:
一、单独生成项目、重新生成项目、清理项目,删除所有obj及bin目录,均试过,可以生成项目,但发布时出错,如上提示。
二、怀疑是IIS权限问题,给web项目文件夹network service账号所有权限。
三、IE-选项-内容中,清除证书。
四、主动修改了一个新版本,仍然出错。
google成了我的救命稻草,终于找到一条类似的信息,说是用右键直接发布即可。终于成功!如下图:
不正确的方法:
正确的方法:
六、问题分析:
发布选项,其实是调用了vs2010自带的dos命令mage.exe或它的UI程序:mageUI.exe,它主要用来修改相应的application选项。
关于MageUI的说明,请参阅MSDN:http://msdn.microsoft.com/zh-cn/library/xhctdw55%28VS.80%29.aspx
我们可以在程序-Microsoft Visual Studio 2010-Visual Studio Tools-Visual Studio Command Prompt (2010)出现的命令状态中输入mageui.exe,得到如下界面:
其实上面出错的界面,和成功的两个界面,应该都是调用Mage.exe或mageUi.exe,只不过可能是调用时参数不一致而导致出错
,
这应该是Vs2010 RTM的一个bug。(附:ClickOnce 应用程序有两个基于XML
的清单文件,其中一个是应用程序的清单,另一个是部署清单。这两个文件描述了部署应用程序所需的所有信息。应用程序清单包含的应用程序信息有需要的权限、
要包括的程序集和其他从属文件。部署清单包含了应用程序的部署信息。应用程序清单的位置信息包含在部署清单中。)
需要注意:
1、应用程序缓存:用 ClickOnce 发布的应用程序不能安装在 Program Files
文件夹中,它们会放在应用程序缓存中,应用程序缓存位于当前用户的 Document’s and Settings文件夹的 Local
Settings子文件夹下。控制部署的这个功能,可以把应用程序的多个版本同时放在客户机上。如果应用程序设置为在线运行,就会保留用户访问过的每个版
本。对于设置为本地运行的应用程序,会保留当前版本和以前的版本。 所以,把 ClickOnce
应用程序回退到以前的版本是一个非常简单的过程。如果用户进入“添加/删除程序”控制面板选项,所显示的对话框将允许删除 ClickOnce
应用程序或回退到以前的版本。管理员可以修改清单文件,使之指向以前的版本。之后,下次用户启动应用程序时,会检查是否更新版本。应用程序不是查找要部署
的新程序集,而是恢复以前的版本,但不需要用户的干涉。这也是ClickOnce部署的一个优势。
2、ClickOnce可定制的内容还是简单了点,如果需要更为精致的用户对话界面,还是需要自定义Windows
Installer来实现,或通过第三方的InstallShield等救专业工具。但它提供了一种界面友好的自我管理机制,几乎实现了真正的无接触部署
(No Touch Deployment)。
邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。
助人等于自助!
3w@live.cn
分享到:
相关推荐
C# clickonce示例,该实例包含了publish.htm,可以build出一个package放在IIS下面以供下载
How to Write & Publish a Scientific Paper,教你怎样发布期刊,硕博士极力推荐
How to write and publish a scientific paper ContentsChapter 1 What Is Scientific Writing? Chapter 2 Origins of Scientific Writing Chapter 3 What Is a Scientific Paper? Chapter 4 How to Prepare the ...
How to write publish a scientific paper
A project model for the FreeBSD Project Niklas Saers Copyright © 2002-2005 Niklas Saers [ Split HTML / Single HTML ] Table of Contents Foreword 1 Overview 2 Definitions 2.1. Activity 2.2. Process ...
Jenkins的插件svn publisher(Publish to Subversion repository)
教你如何书写与发表科技论文 很实用哦 How to Write & Publish a Scientific Paper 英文版
How to Write & Publish a Scientific Paper 6th Edition
Jenkins插件:Publish Over SSH; 版本:1.22; 使用:直接放置 /jenkins_home/plugins 目录下,重启jenkins,即可在插件中心找到 Publish Over SSH 插件;
How to Write and Publish a Scientific Paper 非影印版,可以复制粘贴
jenkins插件:publish-over-ssh
NPM发布测试 为了测试npm,发布到Npmjs注册表。 出版 发布包: npm publish 首次发布作用域包: npm publish --access public 发布程序包并将foo标记指向它(注意:这不会更新默认的latest标记。): npm ...
GitHub在项目版本更新时自动构建,打包和发布nuget软件包的动作 用法 创建新的.github/workflows/publish.yml文件: name : publish to nuget on : push : branches : - master # Default release branch jobs ...
98年的版本,应该是第5版。经典之作。国内有第六版的影印版和翻译版。
content: How to Write and Publish a Scientific Paper.chm Opinion.pdf Writing a Scientific Paper.pdf
罗伯特•戴(Robert A. Day)为美国特拉华大学英文教授,1986年到1999年期间在该校教授本科生和研究生的科技英语写作课程。同时他还是美国科技信息所出版社(ISI Press)的前任社长以及微生物学期刊和美国微生物学会...
发布GitHub动作 该操作将为您的GitHub... publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: tgymnich/publish-github-action@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }}
Over 90 hands-on recipes to successfully build and automate development life cycle tasks following Maven conventions and best practices About This Book Understand the features of Apache Maven that ...
How to Write a Quality Technical Paper and Where to Publish within IEEE 写高质量论文