C# VS2017 WinForm 打包和升级
C# WinFrom打包不怎么常用,但一年总有那么一两次,每次都记不全,为了方便自己回看,于是有了本篇文章。
本例使用《C#工具类LogHelper》的解决方案作为例子,实现WinForm打包,以及升级的功能,本文使用VisualStudio2017工具。
一、在解决方案--添加--新建项目,选择其它项目类型--Visual Studio Installer,选择Setup Project。

点击确定后如下图所示,会安装一个Setup1的安装程序配置项目。

如果没有找到“Visual Studio Installer”,可到 VS 工具栏 > 工具 > 扩展和更新 > 联机 > 搜索 Microsoft Visual Studio Installer Projects 并安装。安装完成后需要重启 VS。

二、设置软件图标。
到https://www.easyicon.net/随便搜索一个ico后缀的图标,并放到项目的Icon文件夹下。

为主窗体添加图标:

三、设置导入内容
1、点击Application Folder ->Add -> 文件。

2、选择项目bin Debug文件夹,Ctrl+A 全选所有内容,之后点击"打开"。


3、如果有文件夹,需在 Application Folder ->Add-> Folder中添加。本项目有Log文件夹和Icon,所以在 Application Folder 需要添加Log文件夹和Icon文件夹,如下图所示。

添加Log文件夹和Icon文件夹后:



四、设置输出内容
1、选择在Application Folder-->Add-> 项目输出 。

2、点击确定。


3、在"主输出from xxx",右键--Create Shortcut to 主输出 from xxx


4、将"Shortcut to 主输出 from xxx"拖动到 User's Desktop。


将 User's Desktop的"Shortcut to 主输出 from xxx"自定义名称,此处我改为WinFormDemo,并设置图标。


五、设置卸载项
1、点击Application Folder ->Add -> 文件,选择“C:\Windows\System32” 中的 msiexec.exe。

2、将msiexec.exe 创建一个快捷方式,并改名为 Uninstall 。


3、创建好Uninstall 快捷方式后,点击SetUp的属性,复制ProductCode中的内容。

4、 将复制好的ProductCode 内容,粘贴到创建好的Uninstall的属性Arguments中,并在ProductCode 前加入“/X”

5、总的来讲就是将“主输出from xxx”和msiexece.exe创建快捷方式,并分别重命名后,拖动到 User's Programs Menu。这个的作用就是在用户程序菜单显示程序的进入快捷方式和卸载快捷方式。


创建文件夹WinFormDemo,并将两个Shortcut移到文件夹里,如下图所示。

六、设置版本覆盖。

七、生成
在Setup1右键,生成。

生成后,在Setup1的项目的Debug下就有安装文件的exe了。

八、效果
安装后效果如下:


九、升级
1、在AssemblyInfo.cs设置新版本号。

2、将Setup1属性里的Version同步更改,会提示会改会ProductCode,点击“是”即可。

注:这里Version的版本号只有3位,如果设为1.0.0.1,则在发布时显示此错误“ERROR: Invalid product version '1.0.0.1'. Must be of format '##.##.####'”,若有知晓的朋友请告知。
3、修改所有Unistall的Arguments为:/X {新的ProdcutCode}

4、生新发布Setup后,安装exe,最后效果如下:

十、下载
https://files.cnblogs.com/files/suterfo/WinFormDemo.rar
参考文章:
1、https://blog.csdn.net/u014234260/article/details/80067254
2、https://blog.csdn.net/lxrj2008/article/details/80611164
3、https://blog.csdn.net/m0_37862405/article/details/80785294
4、https://www.cnblogs.com/duanweishi/p/11114332.html
C# VS2017 WinForm 打包和升级的更多相关文章
- vs2017 winform打包
如果没有Visual Studio Installer 说明没有安装打包插件 安装打包插件:Microsoft Visual Studio 2017 Installer Projects 工具 --& ...
- 【C#】VS2017 winform 打包
首先要在想要打包的项目下创建一个新的项目, 创建好setup项目,之后点击属性,去修改打包软件的名字,ProductName....可以选填 到此已经创建好了setup工程了,那么下面开始将要打包的d ...
- VS2017 winform 打包 安装(使用 Microsoft Visual Studio 2017 Installer Project)
Microsoft Visual Studio 2017 Installer Projects SkyRiN发表于Coding+订阅 253 助力数字生态,云产品优惠大促 腾讯云促销,1核1G 99元 ...
- SNF开发平台WinForm之八-自动升级程序部署使用说明-SNF快速开发平台3.3-Spring.Net.Framework
9.1运行效果: 9.2开发实现: 1.首先配置服务器端,把“SNFAutoUpdate2.0\服务器端部署“目录按网站程序进行发布到IIS服务器上. 2.粘贴语句,生成程序 需要调用的应用程序的Lo ...
- Windows2000安装Winform Clickonce提示升级系统版本的解决方案
Windows2000安装Winform Clickonce提示升级系统版本.只需要把所有应用的DLL的独立性设置为false就可以了.
- C# winform打包(带数据库安装)<转>
使用VS自带的打包工具,制作winform安装项目 开发环境:VS2008 Access 操作系统:Windows XP 开发语言:C# 项目名称:**管理系统 步骤: 1.打开开发环境VS2010, ...
- winform打包发布安装包详解..
winform打包发布安装包详解.. 使用VS 自带的打包工具,制作winform安装项目 开发环境:VS 2008 Access 操作系统:Windows XP 开发语言:C# 项目名称:**管 ...
- Winform 打包 混淆 自动更新
路径: 最终的解决方案是,ConfuserEx+Installshield+AutoUpdater.NET,ConfuserEx做代码混淆工作,Installshield可以解决注册表的问题,Auto ...
- Winform打包工具SetupFactory 9 的使用
写了个WinForm的小程序..以前没打过包..只是直接把Bin里的东西复制出来使用..自己使用是足够.但是发给别人毕竟不太好看(不牛逼)..所以就想着打包.. Vs2012自带的有打包的功能..相信 ...
随机推荐
- vcs/verdi filist
. 现在很多verilog 的filelist 文件中用如下形式来指定文件所在的目录就行了,而不必指定具体文件 ./testbench/ppc460_PLB4/p464s_test_top_tb.v ...
- python学习记录(八)
0910--https://www.cnblogs.com/fnng/archive/2013/04/28/3048356.html Python异常 Python用异常对象(exception ob ...
- android studio sqlite实际应用中存在的问题
原项目已上传到github long f = dbdatabase.update("user", values, "id=?", new String[]{St ...
- VMware复制Linux虚拟机后网络配置
1.启动虚拟机,点击我已复制 点击已复制后,VMware将会为重置虚拟机网卡mac地址. 2.修改网卡mac地址 3.ifconfig显示网卡名称与配置不一致处理 Centos6中ifconfig显示 ...
- centos6.x下yum安装heartbeat
[root@heartbeat ~]# uname -n #<===配置heartbeat时,节点的主机名必须和 uname -n 命令的结果要一致 heartbeat [root@heartb ...
- indexedDB 使用
数据库的打开/新增/删除 initDB() { let _this = this; let obj = { id: 1, name: _this.addForm.content } let index ...
- MySQL全文索引、联合索引、like查询、json查询速度大比拼
目录 查询背景 一.like查询 二.json函数查询 三.联合索引查询 四.全文索引查询 结论 查询背景 有一个表tmp_test_course大概有10万条记录,然后有个json字段叫outlin ...
- Java集合效率问题
凑算式 B DEFA + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比如:6+8/3 ...
- IntelliJ 如何找到项目中 Deprecated 的方法
在一个项目中,如果我们标记了某些元素为 Deprecated 的话,如何让我们能够快速找到? 简单来说,你可以对项目进行 Code Inspection. 选择 Analyze > Inspec ...
- 「Flink」Flink 1.9 WebUI运行作业界面分析
运行作业界面 在以下界面中,可以查看到作业的名称.作业的启动时间.作业总计运行时长.作业一共有多少个任务.当前正在运行多少个任务.以及作业的当前状态. 这里的程序:一共有17个任务,当前正在运行的是1 ...