【C#】VS中打包C#桌面软件为exe文件

目录

1.安装 Installer Projects

打开VS,选择 扩展→管理扩展→浏览,搜索Installer Projects,点击安装按钮,待安装完成后,重启vs。

2.设置软件图标

右键项目,选择属性:

在搜索栏中搜索"图标",并浏览相应的图标:

3.新建setup项目

右键项目的解决方案→添加→新建项目:

搜索setup,找到Setup Project→点击下一步:

配置项目名称后,点击"创建"按钮创建Setup项目:

创建成功后,显示的是一个文件系统:

4.添加主输出

右键 Application Folder→ Add → 项目输出:

5.生成项目

在菜单栏中选择生成配置为Release和Any CPU:

右键解决方案,点击生成解决方案。

6.添加项目文件

右键 Application Folder→ Add → 文件:

进入项目的bin文件夹,选择Release,全选所有的文件,并点击打开:

注,如果Release中有文件夹,那么按住Ctrl键的同时将该文件夹拖动到Application Folder下即可。

7.添加桌面快捷方式

在 Application Folder 文件夹中选中"主输出",并右键选择Create Shirtcut to 主输出 from ...生成快捷方式:

将快捷方式拖动移到 User's Desktop 文件夹中,并右键选择属性窗口,修改快捷方式的名称和图标。

8.添加卸载程序

在 Application Folder 文件夹右键中添加 C:\Windows\System32\msiexec.exe文件:

创建快捷方式,并设置其属性的 Arguments 值 为 :

shell 复制代码
/x {C7895BCC-599F-4A99-ACC3-5A2E0CEB3618} 

其中,{C7895BCC-599F-4A99-ACC3-5A2E0CEB3618} 为 Setup 项目属性中的 ProductCode ,当项目属性中 ProductCode 改变时,此处的 Arguments 值也需要跟着改变)

接着可以选择将卸载程序的快捷方式拖动到"User's Programs Menu"文件夹中,即,用户在程序菜单中可使用该快捷方式卸载已安装的程序。

9.无需卸载旧包直接覆盖升级

安装以上步骤生成的安装包,若程序更改后再次生成的安装包,安装时会提示已经安装了该产品的另外一个版本,此时则需要使用控制面板或卸载程序卸载掉旧包,然后才能安装新包。

若程序更改想要直接覆盖升级,则需要修改 Setup 项目属性,将 Version 改为大于原版本号,修改后系统会自动提示是否修改 ProductCode,此时点"是",此时生成的安装包运行则不会再提醒了。

同时,需要修改所有程序集的版本号(项目右键属性-->应用程序-->程序集信息),修改程序集版本和文件版本,大于原版本号即可。

同时,需要设置Setup项目的RemovePreviousVersion属性为True。

10.生成Setup安装包

右键 Setup 项目,选择"生成":

接着在之前设置Setup项目路径的位置的Release下即可找到安装程序。

其中setup应用程序是包含msi安装包的安装指引,用户在安装软件时直接双击setup.exe进行安装即可。

相关推荐
似水明俊德5 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
阿蒙Amon7 小时前
C#常用类库-详解SerialPort
开发语言·c#
似水明俊德8 小时前
02-C#.Net-反射-学习笔记
开发语言·笔记·学习·c#·.net
.NET修仙日记14 小时前
Acme.ReturnOh:让.NET API返回值处理更优雅,统一响应格式一步到位
c#·.net·webapi
阿蒙Amon15 小时前
C#常用类库-详解YamlDotNet
开发语言·c#
Sunsets_Red18 小时前
乘法逆元的 exgcd 求法
c++·学习·数学·算法·c#·密码学·信息学竞赛
唐青枫18 小时前
深入理解 C#.NET TaskScheduler:为什么大量使用 Work-Stealing
c#·.net
人工智能AI技术19 小时前
Claude 3.7 企业版私有化部署技术验证:与 .NET 实战方案
人工智能·c#
呆子也有梦19 小时前
思考篇:积分是存成道具还是直接存数值?——ET/Skynet 框架下,从架构权衡到代码实现全解析
游戏·架构·c#·lua
我是唐青枫19 小时前
深入理解 C#.NET Task.Run:调度原理、线程池机制与性能优化
性能优化·c#·.net