【小白专用】WinForm项目打包成一个exe安装包教程(VS2022)

2023-12-25 17:19:17

1、下载扩展Microsoft?Visual Studio Installer Projects

1.1?点击扩展 ---> 管理扩展

1.2?搜索Microsoft?Visual?Studio?Installer?Projects,点击下载

1.3 关闭VS2022(一定要关掉它才会有下面的弹窗哦)自动弹窗,点击Modify,即可安装

2、新建Set up项目

2.1?右击解决方案?---> 添加?---> 新建项目,在搜索框中搜索Setup,选择如图所示工程

2.2?配置新项目信息(项目名称及位置)?

安装项目,三个目录的作用
Application Folder:即 “应用程序文件夹”,表示要安装的应用程序需要添加的文件(注:如果项目中用了三方开源插件,也需要在里面添加上)
User‘s Desktop:即 “用户桌面”,表示这个应用程序安装完,用户的桌面上的创建的.exe快捷方式
User’s Programs Menu:即 “用户的程序菜单”,表示应用程序安装完,用户的“开始菜单”中的显示的内容,一般在这个文件夹中,需要再创建一个文件夹用来存放:应用程序.exe和卸载程序.exe
?

3、应用程序文件夹下添加文件

3.1?右击Application Folder(应用程序文件夹)---> Add ---> 文件

3.2?把你需要打包的项目下的--->?bin?--->?Debug目录下的所有文件添加到Application?Folder中(比如下图所示的一些.dll、.pdb文件,如果Debug目录下还有子目录那也需要把子目录里的文件一并添加进去)?假如有子目录,需要在“Application Folder”新建文件夹,并修改为相同名称,并把文件文件中的内容同样添加,防止程序中的调用找不到路径

4、添加卸载程序

4.1?右击Application?Folder ---> Add?--->?文件?--->把C:\Windows\System32下的msiexec.exe文件添加到Application?Folder中,添加进来并重命名为???Uninstall.exe

4.2?右击Uninstall.exe文件 ---> 点击Create Shortcut to msiexec.exe,创建快捷键方式,重命名为?卸载程序.exe

4.3?点击您刚刚新建的Setup项目,复制ProductCode 属性的值

4.4?点击卸载程序.exe ---> 将复制的ProductCode 的属性值粘贴在Arguments 属性中,然后在最前面加上 /X?(PS:/X后有一个空格哦)?

4.5?将卸载拖动到User‘s Programs Menu(用户的程序菜单)中

5、添加运行环境

5.1?右击?Application?Folder?--->?Add?--->项目输出,选择项目、主输出?---> 确定?

5.2?创建了主输出文件的快捷方式(方法同4.2),拖进User's Desktop(用户桌面)

5.3?右击您新建的Setup项目---> 属性--->点击Prerequisites…

5.4?选择所使用的.net的版本(根据自己项目选择)---> 确定

6、添加程序图标(选做)

6.1?右击Application Folder(应用程序文件夹)---> Add ---> 文件,将你的icon文件导入

6.2?右键User’s Desktop下的主输出快捷方式-->选择属性窗口

6.3?选择ICON属性的下拉箭头--->(Browse...),选择刚刚添加的ICON文件,选中图标后点击OK?

7、生成项目exe

7.1?右击您新建的Setup项目---> 生成

7.2?在您新建的Setup项目的目录下即可看到如下文件,debug文件夹,会看到生成了两个文件“XX.exe”和“XX.msi”。其中如果使用exe文件进行安装,则必须要有.msi文件。如果选择.msi文件进行安装,可以不需要exe文件

setup.exe里边包含了对安装程序的一些条件的检测,比如需要.net的版本是否安装等,当条件具备后,setup.exe接着调用setup.msi,而setup.msi则可以直接运行,如果你确定条件都具备的情况下

7.3?双击exe即可启动安装向导

重新生成下安装项目,这样一来安装后的目录中就会有?这些依赖的文件了

文章来源:https://blog.csdn.net/zgscwxd/article/details/135198115
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。