快速创建软件安装包-ClickOnce

大家好,我是沙漠尽头的狼。

.NET是免费,跨平台,开源,用于构建所有应用的开发人员平台。

今天介绍使用ClickOnce制作软件安装包,首先我们先了解什么是ClickOne。

1. 什么是ClickOnce

以下段落摘自微软文档:https://learn.microsoft.com/zh-cn/visualstudio/deployment/clickonce-security-and-deployment?view=vs-2022


ClickOnce 是一种部署技术,使用该技术可创建自行更新的基于 Windows 的应用程序,这些应用程序可以通过最低程度的用户交互来安装和运行。

ClickOnce 部署克服了部署中所固有的三个主要问题:

  1. 更新应用程序的困难

使用 Microsoft Windows Installer 部署,每次应用程序更新,用户都必须重新安装整个应用程序;使用 ClickOnce 部署,则可以自动提供更新。只有更改过的应用程序部分才会被下载,然后从新的并行文件夹重新安装完整的、更新后的应用程序。

  1. 对用户的计算机的影响

使用 Windows Installer 部署时,应用程序通常依赖于共享组件,这便有可能发生版本冲突;而使用 ClickOnce 部署时,每个应用程序都是独立的,不会干扰其他应用程序。

  1. 安全权限

Windows Installer 部署要求管理员权限并且只允许受限制的用户安装;而 ClickOnce 部署允许非管理用户安装应用程序并仅授予应用程序所需要的那些代码访问安全权限。

过去,这些问题有时会使开发人员决定创建 Web 应用程序而不是基于 Windows 的应用程序,为便于安装而牺牲了 Windows窗体丰富的用户界面和响应性。对于使用 ClickOnce 部署的应用程序,您可以集这两种技术的优势于一身。

2. 使用ClickOnce创建安装包

2.1 需要服务器

首先,我们需要一个线上的网站,用于托管软件更新文件,比如在Dotnet9网站的根目录创建一个WPFBlazorChat的目录,那么线上托管地址则是https://dotnet9.com/WPFBlazorChat,目录如下:

0201.png

2.2 开始制作安装包

记住上面的线上地址,使用前几天介绍的WPFBlazorChat做为示例做安装包,仓库地址是:https://github.com/dotnet9/WPFBlazorChat,所以上面创建的目录与项目名同名:WPFBlazorChat

  1. 选择WPFBlazorChat工程,右键发布
0202.png
  1. 在弹出的界面,选择ClickOnce,点击下一步
0203.png
  1. 发布位置随意
0204.png
  1. 选择软件安装包获取地址
0205.png
  1. 设置
  • 可配置程序运行时自动检测更新、软件版本号等,如下图:
0206.png

如上图,如果勾选【自动递增修订号】,那么每次点击发布,修订号会递增(感觉说的是废话,主要是方便版本号管理)。

  • 点击应用程序文件,可勾选哪些文件可以不用下载,如下图:
0207.png
  • 选择先决条件,即选择程序的运行时,因为程序默认支持.NET 6和.NET 7,所以站长勾选了.NET 7 x64,win7 32位的同学如有需要,按需选择:
0208.png
  • 选项配置

配置软件安装包信息,其中比较重要的是发布者名称和套件名称,决定软件程序释放位置:

0209.png
0223.png

部署文件配置,其中Publish.html配置了安装包下载页面

0210.png
  1. 签名清单

未设置,直接下一步:

0211.png
  1. 程序发布配置

按情况选择,站长选择的.NET 7 64位发布,注意需要和前面选择.NET桌面运行时版本一致

0212.png
  1. 点击发布

最后一个操作,点击发布

0213.png

发布完成,点击【发布位置】路径:

0214.png

2.3 上传

上面制作了软件安装包,还差一个步骤,就是把安装包丢网站上去,这个就比较简单了,前提是网站已经部署了哈:

0215.png
0216.gif

2.4 程序安装、运行

地址是:https://dotnet9.com/WPFBlazorChat/Publish.html

0217.png

如上图,显示了我们创建安装包配置的软件安装包名称、版本号、发布者、需要的.NET运行时版本等,点击【安装】按钮,会下载一个setup.exe安装文件,这个文件很小,666KB,好吉利的数字:

0218.png

运行setup.exe,会自动从上面的服务器(https://dotnet9.com/WPFBlazorChat/)中检测版本号、文件更新情况,自动下载程序文件了:

下图是服务器软件安装包信息:

0224.gif

下图是安装过程截图:

0219.gif

安装包下载完成后,程序自动运行,下面就是测试程序运行界面了,WPF Blazor开发的哟,点击戳源码

0220.gif

3. Q&A

  1. ClickOnce 部署的工作原理

核心 ClickOnce 部署体系结构基于两个 XML 清单文件:应用程序清单和部署清单。 这些文件用于描述从哪里安装 ClickOnce 应用程序、如何更新这些应用程序以及何时更新它们。

更多请访问微软文档:https://learn.microsoft.com/zh-cn/visualstudio/deployment/clickonce-security-and-deployment?view=vs-2022

本文完,下篇介绍WPF中如何使用Blazor开发应用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容