因为打包成exe出现了好多问题,希望写下来给大家避坑
下面所有内容的前提是已经安装Visual Studio2022版本的软件
第一步:安装扩展
首先打开要打包的winform程序,工具栏中选择扩展->管理扩展。会打开扩展管理器。直接在扩展管理器里的浏览页面搜索Microsoft Visual Studio Installer Projects 2022(2022/Visual Studio都可以搜到)。因为我已经安装过了,所以显示的是已安装。我看很多博主都是推荐的直接在程序里安装,但是我当时下载特别慢,所以就去官方下载的。具体操作忘记了,觉得在程序里安装慢的小伙伴可以去看一下官方下载方法,以及如何放进程序包里。
打包程序
打包程序大多数都是选择在Debug模式下的内容,Release模式下的很少
Debug模式下编译的应用程序包含调试信息,在运行时出现问题更容易进行调试。
Release模式下的应用程序是为了最终发布构建的。它通常包含优化过的代码,这样可以提高性能并且减小程序的体积。不包含调试信息,这使得反编译和理解代码更加困难,从而提供更好的保护。
通常来说,在发布应用程序给最终用户之前,应该使用Release配置来构建应用程序,因为它布局包含了优化后的代码,而且没有调试信息,更适合生产环境。
我还是随大流使用Debug模式下的内容打包程序
如果想使用Release模型打包程序,只需在工具栏下面选择Debug或者Release后,点击工具栏中的生成->生成解决方案或者重新生成解决方案。外面这里选择Debug模式。
在项目名称上右击->选择属性。选择应用程序里的图标与清单,换成想要的图片。图片格式是ICO。可以直接使用在线工具转换图片格式。直接在线转ico图片格式即可。
注意:这里换的图片只是Debug模式下面的exe程序的图标。所以这一步为可选项。
就是创建程序的窗体左上角的图标
第二步:创建新项目。右击解决方案->添加->新建项目
新建项目后弹出该窗体,搜索Setup->选择Setup.Project->下一步
设置名称(一般不设置,默认的就是setup。如果设置也可以,设置的是msi的名称),路径不需要改动,就在你这个项目里面。创建新项目。
创建完成后会出现下面的界面
第三步:创建项目主输出。 右击Application Folder->选择Add->选择项目输出
选择字节要打包的主程序,我这里就是TagHandlerSample->然后选择主输出->配置选择活动->确定
然后就是下面的界面
第四步:创建桌面快捷方式
创建桌面快捷方式,右击主输出from TagHandlerSample->选择Create Shortcut to主输出from TagHandlerSample(Active)
得到下面的快捷方式(快捷方式带有小箭头),此快捷方式可以重新命名。比如我这里可以命名为上位机。
点击自己新创建的项目名称,我这里是Setup,会出现属性界面。然后复制ProductCode里面的内容。我这里是{CBDEAEFF-AE77-4CAA-BDB5-8880A5A9DB9A}每个人都不一样,不用复制我的。
点击快捷方式(带箭头的)—>右侧下面是他的属性,可以进行更改。必须更改的是Arguments—>将复制的ProductCode前面加上/X (斜杠大写X和空格)粘贴进去。
将快捷方式(带箭头的)从Application Folder里面拖到User’s Desktop用户桌面上去。
第五步:添加依赖(dll和exe)
选中Application Folder–>右击选择Add下面的文件。会弹出一个文件夹(自己打包项目的文件夹)---->选择bin文件下的—>Debug文件夹。Ctrl+A全选里面的文件—>点击打开后全部进入Application Folder文件夹里面。如果Debug里面有文件夹的话,无法直接加载进来,可以直接将文件夹拖到Application Folder文件里。
第六步:配置打包信息。 选择新建的项目文件(Setup)—>右击选择属性。
点击Prerequisites…
选择自己项目的运行环境---->选择需要联网安装依赖—>点击确定—>点击确定
点击新建的项目(Setup)—>右击选择生成—>然后选择在资源管理器中打开文件夹就可以看到生成的两个文件。exe文件用于安装,msi文件可用于卸载。
第七步:如何实现无网络安装依赖包
回到第六步,点击Prerequisites…
选择相应的依赖包和从应用程序相同的位置下载系统必备组件—>点击确定
打开你计算机C盘 搜索以下的路径
C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages
找到你相应的项目依赖框架
也可以直接在浏览器搜索**.net framework4.7.2离线安装包下载**选择官方下载
如果有以上的两个程序,那么可以直接点击新建的项目(Setup)—>右击生成---->然后选择在文件资源管理器中打开文件夹可以得到三个文件。
如果没有上面的两个文件,需要下载对应版本的离线安装包
下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/net472
下载好之后是这两个程序(这两个程序下的要靠运行,我下了很多次,NDP472-KB4054530-x86-x64-AllOS-CHS这个特别难下载。所以不要放弃。多下几次)
将NDP472-DevPack-ENU.exe复制到C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX472里面,把名字改为 NDP472-KB4054530-x86-x64-AllOS-ENU.exe(重命名的时候,我这里直接显示了.exe所以我写出来了,但是如果那么的文件夹不显示.exe。直接改前面的就可以)
将ndp472-kb4054530-x86-x64-allos-chs.exe复制到C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX472\zh-Hans里面并将名字改成NDP472-KB4054530-x86-x64-AllOS-CHS.exe
点击新建的项目(Setup)—>右击选择生成—>然后选择在资源管理器中打开文件夹就可以看到生成的三个文件。exe文件用于安装,msi文件可用于卸载。