使用ClickOnce发布Windows应用程序
前言
因本人工作需要,在一名非常非常好的老师的指导下,入门了C#,再次向老师表示感谢。
本人平时经常遇到的业务就是将数据下发给各部门,并让各部门再上报,此过程中经常会遇到数据格式不正确,数据错误等诸多问题。于是我就想到写一个数据上报系统,来规范他们的数据。但又因知识水平有限,暂时写不了MVC等网页程序,因此就做了个B/S版的WINFORM应用,但又不想每次更新后给他们每个人发客户端或者自己写代码架设服务器实现自动更新(因为本人较懒,使用了微软的ClickOnce,觉得很方便,所以就没学习自己写更新程序这部分内容,等以后了再学吧)。现创建一个简单的DEMO,希望大家可以一起交流学习。文中有部分概念性的东西是引用的。
ClickOnce简介
ClickOnce 部署使您可以将基于 Windows 的应用程序发布到 Web 服务器或网络文件共享以简化安装。Visual Studio 对通过 ClickOnce 部署的应用程序的发布和更新提供完全支持。ClickOnce 部署可用于使用 Visual Basic、Visual C# 和 Visual J# 创建的项目,但不能用于使用 Visual C++ 创建的项目。
使用ClickOnce的好处
使用ClickOnce发布Windows应用程序可以使用户方便地更新应用程序,可以起到B/S的效果,当程序更新了不必每一个用户重新安装更新。程序发布者只需要把新版本放到服务器,程序使用者在启动软件或退出软件时即可更新软件(更详细参看图解发布过程)。
当然,要使安装过程更可视化、在安装过程加入更多操作则应该自己制作安装程序。
图解发布过程
首先,配置好IIS,如下图所示:
接着,选择要发布的项目,右点击选择“属性”,然后选择“发布”选项页,如下图所示:
第一次使用ClickOnce这个功能,建议使用“发布向导”,“浏览”,选择刚才配置IIS时候的目录,如下图所示:
下一步:此处要注意,必须用管理员账户运行VS才能获取IIS的网址,否则会提示你用管理员帐户重新运行。管理员运行VS后,选择刚才配置的IIS网站,如下图所示:
接下来,根据你程序的需要,选择是否需要脱机运行,我选择的是不允许,这里的区别就是如果允许,他们从网站运行一次就会将程序集全部下载到本地,以后不用通过网站也能运行,这样可能会出现,你服务器上的已经更新到5.0了,而他们还依然使用着2.0的版本。所以我设置的是只能通过联机使用。如下图所示:
点击完成后,如果不出意外,最简单的布置就完成了,会直接跳转到配置好的IIS网页,如下图所示:
点击“运行”,会自动将程序下载并执行,如下图:
点击运行后会进入到程序,如下图所示:
接下来,我们试着更改一下程序的内容,再发布一次,看看效果,将“hello world”改为"hello my friends!",并将字体颜色更改为橙色,然后再进行到程序的发布界面,点击”立即发布“,版本编号会自动进行更新,由1.0.0.1变更成了1.0.0.2,前面的1.0.0.1指的是此次发布后程序的版本,后面的1.0.0.2指的是程序下一次发布后的版本号,如下图:
发布后,VS会自动进入新的网站,如下图所示:
可以看到,当前发布后的版本是1.0.0.1,点击运行程序后,效果如下图:
以上就实现了通过微软给我们提供的ClickOnce来实现自动更新的基本功能。接下来,我把使用过程中的问题也总结一下:
1.程序发布后,点击运行有可能会出现,没有运行按钮(我这里的图有”运行“按钮,此处win 7 和 win 10 界面不一致,大家遇到了根据情况可以试一下这个方法),错误提示界面如下图:
此时需要在注册表里面添加如下内容,即可解决此问题:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\Internet]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\Internet\MediaPermission]
"Xml"="<IPermission class=\"System.Security.Permissions.MediaPermission, WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" version=\"1\" Audio=\"SafeAudio\" Video=\"SafeVideo\" Image=\"SafeImage\"/>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\Internet\WebBrowserPermission]
"Xml"="<IPermission class=\"System.Security.Permissions.WebBrowserPermission, WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" version=\"1\" Level=\"Safe\"/>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\LocalIntranet]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\LocalIntranet\MediaPermission]
"Xml"="<IPermission class=\"System.Security.Permissions.MediaPermission, WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" version=\"1\" Audio=\"SafeAudio\" Video=\"SafeVideo\" Image=\"SafeImage\"/>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\LocalIntranet\WebBrowserPermission]
"Xml"="<IPermission class=\"System.Security.Permissions.WebBrowserPermission, WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" version=\"1\" Level=\"Safe\"/>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\TrustManager]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\TrustManager\PromptingLevel]
"MyComputer"="Enabled"
"LocalIntranet"="Enabled"
"Internet"="Enabled"
"TrustedSites"="Enabled"
"UntrustedSites"="Disabled"
2.如果你的程序集中有插件或者引用文件的话,要在【应用程序文件中添加】,如下图:
在上面这个界面中将所需的文件发布状态改为”包括“,
在上面这个界面中将所需的文件复制到输出目录改为”始终复制“,这样就能保证你的DLL或者一些引用文件能随着你的程序发布出去,否则虽然能发布成功,但程序无法正常运行。
以上就是我目前使用过程中的一些心得, CliceOnce的功能远比我说的要强大的多,我只是用了一些基础的功能,有可能以上内容中有不少错误,还请大家多多批评指正,谢谢。
使用ClickOnce发布Windows应用程序的更多相关文章
- ClickOnce 发布WinForm应用程序(非签名方式)
ClickOnce IIS7发布WinForm应用程序,非签名方式(不勾选签名中的"为ClickOnce清单签名") 一.在D盘上建一个文件夹”MyAppPath”. 该 ...
- Winform程序部署方式总结一——ClickOnce发布
针对Winform程序,介绍两种常用打包方式:ClickOnce和Windows Installer 应用程序如下: 一.ClickOnce发布 1.找到需要发布的项目文件,右击,从弹出的快捷菜单中找 ...
- C# Winform程序如何使用ClickOnce发布并自动升级(图解)
有不少朋友问到C#Winform程序怎么样配置升级,怎么样打包,怎么样发布的,在这里我解释一下打包和发布关于打包的大家可以看我的文章C# winform程序怎么打包成安装项目(图解)其实打包是打包,发 ...
- 以管理员身份启动ClickOnce部署的应用程序
ClickOnce方式部署应用简单方便,估计很多人都用过,但这种方式存在一定的“缺陷”,即以管理员方式启动应用的问题,虽然出于安全考虑可以理解,但给需要管理员权限才能正常运行的程序带来了一定的麻烦,这 ...
- Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结
最近有对一个Windows应用程序少许维护和修改.修改之后要发布新的exe安装文件,打包exe文件时,遇到了很头疼的问题,还好最后解决了,记录一下. Visual Studio版本:Visual St ...
- clickonce发布winform必备组件
ClickOnce 发布,在系统必备中勾选了 .NET Framework 4,并选择了"从与我的应用程序相同的位置下载系统必备组件"时,执行发布,会提示缺少很多文件 使用 Pac ...
- 微软发布 Windows Server 2016 预览版第三版,开发者要重点关注Nano Server
微软已经发布 Windows Server 2016 和 System Center 2016 第三个技术预览版,已经提供下载.Windows Server 2016 技术预览版第三版也是首个包括了容 ...
- SharePoint 2013 开发——发布SharePoint应用程序
博客地址:http://blog.csdn.net/FoxDave 前几篇我们介绍了开发.部署和调试SharePoint应用程序的基础,本篇介绍更实用的操作,当我们开发一个SharePoint应用 ...
- 转:vs发布window应用程序时出错:未能签名 ...\setup.exe
在vs发布window应用程序过程中,提示“SignTool 报告了一个错误‘未能签名 ...\setup.exe.SignTool 错误: ISignCode::Sign 返回的错误: 0x80 ...
随机推荐
- 《JavaScript 模式》知识点小抄本(下)
介绍 最近开始给自己每周订个学习任务,学习结果反馈为一篇文章的输出,做好学习记录. 这一周(02.25-03.03)我定的目标是<JavaScript 模式>的第七章学习一遍,学习结果的反 ...
- JQuery 操作checkbox
获取checkbox选中的状态 deleteAll全选的name 1. $("input[name='deleteAll']").is(":checked") ...
- 《Java知识应用》Java Json说明和使用(fastjson)
工具包下载:链接: https://pan.baidu.com/s/1dn5uNwiJ1ICkbPknlMmkHQ 提取码: ayzn 复制这段内容后打开百度网盘手机App,操作更方便哦 1.JSON ...
- SpringBoot微服务电商项目开发实战 --- 分布式文件系统实现
SpringBoot分布式开发系列文章已经持续了一段时间了,每一篇都有核心内容讲给大家.比如:分环境部署配置及服务端口号统一配置,子模块版本号管理及第三方jar依赖管理,单点登录实现,接口安全(签名+ ...
- c++-内联函数和函数重载和默认参数和函数指针
内联函数 C++ 内联函数是通常与类一起使用.如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方. 对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编 ...
- 亚马逊写作文档tip
亚马逊的文档要求任何一份开会备忘录/要点备忘录都需要控制在4页左右,Jeff 自己也强调过,4页的备忘录比20页的备忘录要求的更高,它不仅需要更好的思考,也需要对开会讨论各个重点之间关系的理解.ppt ...
- openssl 证书请求和签名命令req基本分析
一 基本概念: OpenSSL 是一个开源项目,其组成主要包括一下三个组件: openssl:多用途的命令行工具 libcrypto:加密算法库 libssl:加密模块应用库,实现了ssl及tls o ...
- CSS(3)---块级标签、行内标签、行内块标签
块级标签.行内标签.行内块标签 html中的标签元素三种类型:块级标签.行内标签.行内块标签. 一.概述 1.块级标签 概念 每个块元素通常都会独自占据一整行或多整行,可以对其设置宽度.高度.对齐等属 ...
- C# 网络编程之简易聊天示例
还记得刚刚开始接触编程开发时,傻傻的将网站开发和网络编程混为一谈,常常因分不清楚而引为笑柄.后来勉强分清楚,又因为各种各样的协议端口之类的名词而倍感神秘,所以为了揭开网络编程的神秘面纱,本文尝试以一个 ...
- SourceTree Mac安装跳过注册步骤
1.打开sourcetree2.关闭sourcetree3.命令终端输入defaults write com.torusknot.SourceTreeNotMAS completedWelcomeWi ...