专业的软件安装包可以这样做!

C/S客户端开发完成,需要将程序交付给用户,直接压缩发给用户是可以的(只是有点不专业),如果能有一个比较好看的安装界面,那档次就不一样了。

本文介绍怎么使用Adanced Installer 17.9 制作专业的Windows 客户端安装包,其他软件或者本软件其他版本制作步骤也是类似的,下面是软件安装包制作完成后的安装演示:

软件安装演示

本文提供打包的程序源码下载及制作好的软件安装包体验,欢迎浏览下载:

  • 制作好的软件安装包:下载测试安装包

  • 测试打包的项目仓库:访问项目源码

下面介绍安装包制作步骤:

1、下载Adanced Installer 17.9

首先下载软件安装包制作软件,安装包从360软件管家下载,其他途径亦可:

下载安装包制作软件

下载后,按默认步骤安装即可。

2、创建安装包制作工程

制作软件安装包与软件开发一样,我们先创建一个安装包制作工程,相当于保存安装包配置的过程,方便以后再次修改、打包:

创建软件安装包配置工程

3、安装包产品信息

  • 填写程序释放的目录名称:乐趣课堂

  • 填写公司名称,和程序释放的目录名称组成安装路径:Dotnet9

比如默认安装后的路径为:C:\Program Files (x86)\Dotnet9\乐趣课堂,安装的时候路径是可以修改。

安装包产品信息

4、输入安装参数

应用程序的文件夹,可以不用修改,默认即可:

安装参数

5、选择程序运行环境

打包的测试程序(访问乐趣课堂源码仓库)依赖.NET 5运行时(发布时选择的依赖于环境),所以在下面的配置里可以选择安装时下载、安装.NET 5运行时(独立发布可以忽略这个步骤):

程序运行环境配置

6、设置程序启动条件

看下面的界面,选择程序可运行的操作系统,分x86和x64各版本Windows操作系统:

设置启动条件

7、选择安装文件

下面是目标程序目录结构结构,即待打包的目录,运行程序和依赖文件都在这个文件夹中:

乐趣课堂的程序输出目录文件一览

在软件安装包制作界面,添加应用程序的文件(夹),即选择上面的文件夹,注:子目录和文件需要分别选择。

选择程序包文件菜单

添加后,软件安装包制作界面的目录如下,中间显示添加的各子目录,右侧显示Application Folder目录下文件:

选择后的文件结构

8、添加快捷方式

正常程序,需要在开始菜单和桌面添加程序的快捷方式,如下图:

开始菜单快捷方式
桌面快捷方式

完成上面的效果,简单需求:

  • 开始菜单添加程序目录:在【Start Menu】=>【Programs】下添加子文件夹【乐趣课堂】(改成你自己程序的名称)

  • 开始菜单程序目录需要添加启动程序快捷方式、卸载程序快捷方式

  • 桌面添加启动程序快捷方式

8.1 添加快捷启动方式

如下图,选中中间的”乐趣课堂“目录(Desktop目录操作同理),右侧右键菜单从安装程序添加快捷方式:

从安装文件中选择启动的程序

下图出现了选择文件列表,需要在前面的第7步中选择了文件才会出现,LQClass.AdminForWPF.exe 是主程序的exe,将它作为开始菜单、桌面的启动程序快捷方式:

选择程序作为启动程序快捷方式

8.2 添加卸载快捷方式

我看大部分程序开始菜单都没添加卸载快捷方式,不过我们自信,添加上去吧,用户想卸就卸:

添加卸载快捷方式

下面弹出的卸载快捷方式编辑界面,可以不用修改,如果不想显示程序版本号,去掉也无妨:“卸载[ProductName]”显示效果为“卸载乐趣课堂”:

弹出卸载快捷方式编辑

9、设置打包文件输出格式

如图中备注,选择第四个,在运行软件安装包时,可在线下载、安装运行时,可修改MSI安装文件的名字和EXE安装文件的名字:

打包文件输出格式

10、配置安装界面主题风格

该软件提供的主题风格很多,站长浏览了一遍,图中的效果比较清爽,看个人喜欢选择:

安装程序主题

11、设置界面语言包

默认简体中文:

语言包配置

12、前面的配置差不多了,该浏览安装效果了

安装的每一步都可以看看效果:

安装步骤浏览

13、构建、运行

就像编程一样,前面的只是代码编写,一个简单功能完成,需要执行代码编译,生成可执行文件,制作软件安装包也是一样,先执行构建,然后就可以点击Run进行安装测试了,见开头的安装运行动画:

构建运行菜单

构建后产生的文件如下,下面的文件名在第9步中可以修改,当然你现在也可以手动修改:

安装包文件

好了,安装包制作完成,有什么问题欢迎留言交流。

参考文章:

  • Advanced Installer 11.0实战教程

  • Advanced Installer 在开始菜单添加卸载选项及设置桌面快捷方式

文末资源分享

  • 公众号后台回复数字【00】:获取DotNet、Java、Android、C++、Qt前端等技术资料

  • 添加号主微信号【dotnet9】:备注【入群】加入微信技术交流群

  • 添加QQ群【771992300】:备注【Dotnet9】加入技术交流


时间如流水,只能流去不流回。

  • 公众号:Dotnet9

  • 号主微信号:dotnet9

  • 仓库地址:lqclass.com

  • 作者及编辑:沙漠之尽头的狼

  • 日期:2021-01-31

微信公众号:Dotnet9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IT人喝酒,不同岗位不同姿势

这是Boss们的常用套路,频频举杯,给大家鼓劲加油,但是自己不喝。有的销售,业绩好,酒品也好,不管和自己人喝酒,还是和客户喝酒,都是一副舍我其谁的霸气!这是某些销售的写照…

国产CPU群雄逐鹿谁主沉浮

当下,国内(桌面、服务器)CPU与外商有较大差距,除了海光在性能上可能具有一拼之力外,其它国产CPU在商业市场上面对英特尔、AMD基本不具备竞争力,因而只能在篱笆墙内的市场角逐。而为了能够进入篱笆墙内的市场…

蒙特卡罗方法入门

本文通过五个例子,介绍蒙特卡罗方法(Monte Carlo Method)。一、概述蒙特卡罗方法是一种计算方法。原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。它非常强大和灵活,又相当简单易懂&#xf…

面向业务的微服务消息总线

源宝导读:移动PaaS项目的异步场景中,随着订阅主题数的增加,会出现开发维护成本高、管理难度大等问题,本文将分享如何通过构建面向业务的微服务消息总线应对这些问题。一、背景面向业务的消息总线本质上是对消息队列进行二次封装&a…

模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序_操作系统基础6-支持操作系统的最基本的硬件-中断...

无论是桌面PC操作系统还是嵌入式都是多任务的操作系统,而很遗憾,处理器往往是单个的,即便在硬件成本逐渐下降,而硬件配置直线上升的今天,PC机的核心可能已经达到4核心,8核心&#xf…

XMLhttp学习应用

Client.htm页面代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w3.org/1999/xhtml"><head><title>客…

机器学习没有想象中的那么难

文末彩蛋&#xff0c;不容错过&#xff01;背景从去年的AlphaGo到今年人工智能首次写进政府工作报告&#xff0c;人工智能正在席卷全球&#xff0c;引发第4次工业革命&#xff0c;而AI的核心技术是机器学习和深度学习。目前&#xff0c;机器学习已广泛应用于数据挖掘、计算机视…

Docker查看应用的实际内存

前言 我们把应用部署到Docker里面之后&#xff0c;有什么办法查看这个应用占用了多少内存呢&#xff1f;docker本身提供了一个命令让我们可以直接看到当前时间所有容易占用的情况。docker stats --no-stream从上面来看&#xff0c;这几个应用用的内存加起来已经是将近12G了。但…

如何动态的生成某种类型的集合呢_知乎画报」的移动端动态化工程实践

本文基于移动端动态化方案在知乎原生推广落地页「知乎画报」上的实践经验&#xff0c;对该方案技术升级过程中的思考以及技术关键细节做了详尽的解读。商业化是互联网公司发展的重要阶段&#xff0c;App 端的商业广告业务对移动端动态化能力的需求很强烈&#xff0c;一方面需要…

任正非致歉华为前程序员:回来吧,公司错了

近几日&#xff0c;因着任正非连续签发邮件&#xff0c;无处不在热议华为&#xff0c;其中与所有的技术人可谓密切相关。除了一员工因说真话&#xff0c;被晋升两级&#xff0c;根据其自愿选择工作岗位及地点&#xff0c;并由无线网络产品线总裁邓泰华保护其不受打击报复之外&a…

Asp.Net Core之Identity应用(下篇)

一、前言在上篇中简单介绍了 Asp.Net Core 自带的 Identity,一个负责对用户的身份进行认证的框架&#xff0c;当我们按需选择这个框架作为管理和存储我们应用中的用户账号数据的时候&#xff0c;就会添加到自己的项目当中去。这个时候&#xff0c;默认情况我们会使用自带的数据…

如果每一种语言都对应一种女生,你会喜欢哪一个?

这几天调试都很顺利&#xff0c;今天很意外的不要加班&#xff0c;哥几个看着窗外还是白天&#xff0c;还有点不适应。没想到哥几个突然开始YY&#xff1a;如果每种语言都对应一种女生&#xff0c;你会喜欢哪一个&#xff1f;程序猿寂寞起来&#xff0c;我自己都害怕。碍于人数…

asp.net core安全事项(下)

越权越权是非常严重的安全漏洞&#xff0c;通常状态是开发人员对请求的限制逻辑不严格导致的。如果系统中有角色的概念&#xff0c;越权可能出现不同角色间的越权和同角色间的越权。相同角色&#xff1a;A用户&#xff0c;B用户是相同的角色。A用户和B用户都可以调用 /photo/{i…

[导入]php 安全基础 第八章 共享主机 文件系统浏览

8.4. 文件系统浏览 除了能在共享服务器上读取任意文件之外&#xff0c;攻击者还能建立一个可以浏览文件系统的脚本。由于你的大多数敏感文件不会保存在网站主目录下&#xff0c;此类脚本一般用于找到你的源文件的所在位置。请看下例&#xff1a; <pre> <?php if (iss…

程序员的项目周期(表情包版)

0. 需求审评会议进行中1. 开发阶段进行中….2. 代码复查阶段3. 测试阶段….4. 需求突然要改….5. 项目上线

[导入]php 安全基础 附录B. 函数

附录B. 函数 在我写作本书的时候&#xff0c;http://php.net/quickref.php列出了共3917个函数&#xff0c;其中包括一些类似函数的语法结构&#xff0c;在此我不准备把它们从函数中区分开来&#xff0c;而是把它作为函数看待。 由于函数数量很大&#xff0c;一一说明它们的正确…

6段Python代码刻画深度学习历史:从最小二乘法到深度神经网络

最小二乘法深度学习的一切都起源于这个数学片段&#xff08;我把它用Python 写了出来&#xff09;&#xff1a;这一方法是 1805 年巴黎数学家阿德利昂玛利埃勒让德首次提出的&#xff08;1805&#xff0c;Legendre&#xff09;&#xff0c;勒让德建立了许多重要的定理&#xff…

win7美化_Potplayer64位美化版,无棒子的tv推送

potplayer 64位是一款视频播放器&#xff0c;potplayer 64位目前正在新功能全力开发中&#xff0c;由于采用delphi编译程序kmplayer的一些弊端&#xff0c;姜龙喜先生为改进播放器本身的一些性能而重新用vc进行构架&#xff0c;有需要的伙伴们可以移步简易下载站获取&#xff0…

如何在 C# 8 中使用 Channels

在面对 生产者-消费者 的场景下&#xff0c; netcore 提供了一个新的命名空间 System.Threading.Channels 来帮助我们更高效的处理此类问题&#xff0c;有了这个 Channels 存在, 生产者 和 消费者 可以各自处理自己的任务而不相互干扰&#xff0c;有利于两方的并发处理&#x…