您当前的位置:首页 > 文章 > 【小白专用】WinForm项目打包成一个

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

作者:zgscwxd 时间:2024-04-25 阅读数:81 人阅读

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即可启动安装向导

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

本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com