在vs2017和vs2019下发布应用之Windows程序打包-附图标修改和默认安装路径定义全教程
title: 在vs2017和vs2019下发布应用之Windows程序打包-附图标修改和默认安装路径定义全教程
date: 2020-04-25
sidebarDepth: 2
tags:
- windows
- 应用
- vs2019
- 发布
- 打包
- 图标
- 安装
- 路径
- 程序
categories: - 开发
- 微软技术
- windows
在安装项目上右键,选择生成或重新生成。会执行打包操作。并会根据你的设置在项目的Debug或Release文件夹下生成一个.msi文件和一个.exe文件。用户可以使用这个安装包进行安装。
安装依赖组件
首先打开扩展和更新:
联机查找下面的组件,然后安装,重启VS。
创建项目文件
作为应用的主程序。比如这里我就创建一个简单的项目,只有一个窗口:
创建一个打包项目
先右键解决方案,选择 添加-新建项目
我这里就起名为PackageDemo Installer
。
另外,有些人可能会想这么多安装类型,怎么选。因为我们这里说Windows程序打包,想要输出.exe和.msi,大概看一下介绍就能知道,第一个和第四个是合适的。这两个又该怎么选呢?那其实第四个就是对一些属性多了些引导,最终的项目结构和第一个是没有区别的。这里我们就选第一个。
配置
项目信息
配置项目信息,这里打开属性窗口。注意:不是在项目上右键-属性,而是选中项目后点击属性窗口查看:
然后看各种对信息进行配置:
这里对一些属性做下解释:
1.重要属性
1.Author和Manufacturer,分别是作者和制造商的意思,一般都写公司名。
2.ProductName,软件名。默认是项目名,影响到安装界面和安装目录。务必改掉。
3.Version,版本号,影响安装流程,后面会说。
3.TargetPlatform,意思很明显。表现层面上就是,决定你的安装目录是在Program Files还是Program Files (x86),根据项目决定。
4.RemovePreviousVersion,是否移除之前的版本。务必改为True,不然你更新几次软件就会发现,电脑里多个版本都在安装着。
2.不重要的属性:
1.InstallAllUsers,用户权限默认值。这个在安装界面还可以重新设置。
2.ManufacturerUrl,公司官网。
3.SupportUrl、SupportPhone,技术支持的网址和电话。
4.Description,软件描述。
5.Title,无用。一开始我以为它是安装界面的标题,但其实并不是,这个值默认和项目名一致,但你修改之后,在哪里也都看不到。所以无用。
当然,现在我们还不能执行打包。还需要添加一些别的内容。
先看一下项目的文件系统
文件系统在项目刚创建的时候会默认打开,其他时候你也可以通过在项目上右键-View-文件系统打开。
刚开始就会看到三个入口:
1.Application Folder,这个是你的应用安装之后,文件所处的目录。
2.User's Desktop,用户桌面,我们等下会需要在这里面放置一个快捷方式。
3.User's Programs Menu,用户的程序菜单。就是按Windows徽标键或者是屏幕左下角的Windows徽标,会出现的一些文件夹和快捷方式。
添加文件或文件夹
有时候我们会需要手动添加一些默认文件到安装目录里,比如一些默认配置、一些DLL等。接下来演示怎么创建文件夹和添加文件。
比如我重复使用上边的操作,创建了多级的文件夹,接下来我们可以通过添加文件,往里面添加一些icon图标,等下可以用作快捷方式的icon。
添加可运行文件及其快捷方式
先创建项目输出文件(一般都是.exe文件),即快捷方式要指向的文件:
上面的流程也可以重复进行。针对多个项目创建多个项目输出,那样的话,就可以用启动不同的项目了。比如我们知道Git有GUI版本,也有命令行版本。就可以通过这种方式,创建多个输出文件。
添加完输出文件之后,我们就可以为这个输出创建快捷方式了:
比如这里创建出来的就是上面的那个Shortcut ....balabala的东西。这个快捷方式的名字需要修改,不然会直接在界面上显示这个名字。这里重命名一下即可。
输出文件(这里的主输出balabala)是不能改名字的,它是对应的安装目录里的输出文件。比如我这个项目在安装后,安装目录里就会有一个PackageDemo.exe的文件。
也可以多次为这个输出创建快捷方式。这样的话,之后可以直接将快捷方式复制到别的入口文件夹里(User's Desktop/User's Programs Menu)。
这里我创建了多个快捷方式,并为它们改了不一样的名字。接下来,也为它们设置不一样的icon。
设置icon
先修改快捷方式的icon属性,这里默认为None,我们需要把它改为之前添加的icon图标。
在选择界面打开Browse...,找到之前添加的图标点击确认
点击OK即可为快捷方式应用图标。其他的快捷方式也是一样的操作。
生成安装包并安装
在安装项目上右键,选择生成或重新生成。会执行打包操作。并会根据你的设置在项目的Debug或Release文件夹下生成一个.msi文件和一个.exe文件。用户可以使用这个安装包进行安装。
安装界面如下:
1.那个任何人\只有我
的选项就是我们之前提到过的InstallAllUsers指定值。
2.PackageDemo Installer的问题,可以看出来,这个名字很不合适,那我们能不能改掉这个名字呢?这里就是之前提到过的,项目属性窗口中的ProductName属性,将该属性设置为软件名称即可。
再看下安装之后的效果:
可以看到桌面和程序目录里各有一个快捷方式,它们的名字和图标也正是我们在文件系统设置的那样。
再来看看安装目录里的东西:
一些问题
版本号问题
假设,你当前电脑上已经使用一个安装包安装了1.0.0版本的软件:
此时你再次点击同样的安装包:
如果,你对项目做了一些修改后重新打包,却没修改版本号:
如果,你对项目做了一些修改后,也增加了版本号:
这样是可以正常安装的。并且如果你设置了移除旧版本,也会同时卸载掉旧版本软件。
生成失败
有时你执行了生成或重新生成却发现左下角提示生成失败
生成失败
然后打开错误列表,如果有错误的话,去修改错误(警告等是不会导致失败的,只查看错误就可以)。可是,有时候,会出现这种情况:
生成失败却没有提示任何错误
明明没有一个错误,却导致生成失败了?
这种问题,基本上都是文件系统引用到的文件位置发生了改变。就是说,你在上边执行的添加文件,其实只是把你电脑上的文件地址保存了起来,之后如果你的文件被删了或是换了位置,那之前添加的文件引用自然就会失效。这时候去仔细查看一下文件系统。
比如我把几个图标文件移动到别的文件夹之后:
这时候,把错误的引用删掉,重新将文件添加进来即可。注意:icon文件修改后,引用icon的快捷方式也需要修改icon路径。
一个建议
在安装项目内创建一个文件夹,专门用于放置安装项目所依赖的文档、图标等,避免引用的文件移动后还需要重新设置。
C#使用VS2019打包安装程序(图标修改和默认安装路径修改)
这次主要是记录一下我在C#打包时遇到的一些坑。
环境:Vs2019+C#
要打包安装程序,第一件事就是去扩展——》管理扩展 里面下载installer Projects,
就是这搜索列表里面的第一个。
如果不能安装,自己就去网上找一下来安装。
首先这个installer好像版本有些老了,所以只支持.net Framework 4…6.1。所以请把你本身的代码框架修改成net Framework 4…6.1。如果你一开始使用的其他框架,可以右键项目,点击属性,弹出下面这个对话框。
在这个目标框架里面选择.net Framework 4.6.1 就可以了。
如果下拉菜单里面没有这个选项的话,那你就点击下拉菜单里的安装其他框架,下载一个就可以了。还有就是安装的时候要选择 developer pack 版本,安装,否则没用。
注意如果没有修改框架为.net Framework 4.6.1版本,它会提示要你安装,可是不论你怎么安装,安装什么版本都没有,只能修改目标框架,这都是血的教训啊!
还有就是如果你要修改图标,可以左键你的setup project,在左下角里面有个这种菜单栏
其中的AddRemoveProgramIcon就是设置图标的。
不过还有一点要注意,你如果直接在网上下载,或者是自己修改后缀名的图片是没有办法使用的。
你需要先在网上下载相应的icon文件,然后先设置下方对话框中的图标,然后才能去设置AddRemoveProgramIcon中的icon文件。
并且还要注意 将这个icon文件写入到application Folder,只有这样才能安装到别人电脑上也能使用。
还有就是设置这个安装文件的默认安装位置。
你需要做的就是左键点击 你的setup project文件——》view——》文件系统
出现这样一个界面
左键点击第一个文件夹 application Folder,然后找到右下角属性面板
在DefaultLocation里面设置你想要设置的文件夹路径。
在vs2017和vs2019下发布应用之Windows程序打包-附图标修改和默认安装路径定义全教程的更多相关文章
- centos下 Apache、php、mysql默认安装路径
centos下 Apache.php.mysql默认安装路径 http://blog.sina.com.cn/s/blog_4b8481f70100ujtp.html apache: 如果采用RPM包 ...
- linux下Apache默认安装路径
如果采用RPM包安装,安装路径应在 /etc/httpd目录下apache配置文件:/etc/httpd/conf/httpd.conf 可以修改相关的访问路径及配置Apache模块路径:/usr/ ...
- 【linux】linux下yum安装后Apache、php、mysql默认安装路径
原文:http://blog.csdn.NET/u010175124/article/details/27322757apache:如果采用RPM包安装,安装路径应在 /etc/httpd目录下apa ...
- Linux下Apache PHP MYSQL 默认安装路径
apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下apache配置文件:/etc/httpd/conf/httpd.confApache模块路径:/usr/sbin/apa ...
- Linux下Apache PHP Mysql默认安装路径
Apache 假设採用RPM包安装.安装路径应在 /etc/httpd文件夹下 Apache配置文件: /etc/httpd/conf/httpd.conf Apache模块路径: /usr/sbin ...
- CentOS下Apache默认安装路径
apache:如果采用RPM包安装,安装路径应在 /etc/httpd目录下apache配置文件:/etc/httpd/conf/httpd.confApache模块路径:/usr/sbin/apac ...
- Linux下Apache、PHP、MySQL默认安装路径
Apache: 如果采用RPM包安装,安装路径应在 /etc/httpd 目录下 Apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/ ...
- Redhat下 Apache, php, mysql的默认安装路径
apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下 apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/a ...
- Linux下发布javaWeb项目,配置环境变量,tomcat,和安装mysql数据库
如果不懂,可以联系微博本人:QQ:3111901846 (原创) 1.配置java中jdk 注意一切操作,都是在root这个目录下进行的,不要选择其他目录,不然会出现一些小问题的 第一步: 你需要一个 ...
随机推荐
- Spring Cloud Gateway 雪崩了,我 TM 人傻了
本系列是 我TM人傻了 系列第六期[捂脸],往期精彩回顾: 升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了 这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了 获取异 ...
- Css预编译(Sass&&Less)
目录 Less与Sass是css的预处理技术 而CoffeeScript.TypeScript则是javascript的预处理技术. Less与Sass是css的预处理技术 而CoffeeScript ...
- JVM学习笔记——堆
堆 Heap 一个 JVM 只有一个堆,堆也是 Java 内存管理的核心区域.在 JVM 启动时堆被创建,同时大小在启动时已设定好,堆是 JVM 管理最大的一块内存空间,其大小可以调节. 堆的内存空间 ...
- 洛谷3783 SDOI2017 天才黑客(最短路+虚树+边转点+线段树优化建图)
成功又一次自闭了 怕不是猪国杀之后最自闭的一次 一看到最短路径. 我们就能推测这应该是个最短路题 现在考虑怎么建图 根据题目的意思,我们可以发现,在本题中,边与边之间存在一些转换关系,但是点与点之间并 ...
- noip2017D1T3逛公园(拓扑图上dp,记忆化搜索)
QWQ前几天才刚刚把这个D1T3写完 看着题解理解了很久,果然我还是太菜了QAQ 题目大意就是 给你一个n个点,m条边的图,保证1能到达n,求从1到n的 (设1到n的最短路长度是d)路径长度在[d,d ...
- Kubernetes-Service介绍(三)-Ingress(含最新版安装踩坑实践)
前言 本篇是Kubernetes第十篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...
- .Net Core微信服务商二次进件
最近商城进行微信服务商二次进件的开发,大致有几个点 一,服务商签名 二,服务商证书获取 三,图片上传 四,敏感信息加密 五,查询进件状态 除此之外,就是进件信息的拼装 电商二级商户进件申请单-状态流转 ...
- 注解,@Qualifier+@Autowired 和 @Resource
摘要: 项目中,对于AOP的使用,就是通过用注解来注入的. 更改之前的注解,是使用:@Qualifier+@Autowired 但是,通过这样注解,在项目启动阶段,需要自动扫描的过程是非常缓慢的, ...
- Hadoop集群的配置(一)
摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问题.但是网上一些文档大多互相抄 ...
- Spring Security Jwt Token 自动刷新
token的自动刷新 一.功能需求 二.功能分析 1.token 的生成 2.token 的自动延长 3.系统资源的保护 4.用户如何传递 token 三.实现思路 1.生成 token 和 refr ...