VS2019 打包WPF安装程序
说明
最近开发了一个WPF的小工具,最初想发布成一个免安装版的可执行程序,发现有点困难,因为是基于.Net Framework 4.7开发,还引用了一些其他库,WPF程序的运行是依赖.Net Framework 环境的,所以必须提前安装。于是在官网上找到ClickOne的相关说明,可以把WPF打包成安装程序,当安装时会校验安装环境是否已经安装.Net Framework 4.7,没有安装的话会先离线安装,安装完成后再安装WPF程序
1、安装VS的Installer插件
从VS菜单【扩展】-【管理扩展】,搜索“Microsoft Visual Studio Installer Projects”,进行下载安装
2、创建打包部署项目
需要在原项目的解决方案下,【添加】-【新建项目】,搜索Setup,选择Setup Project,然后填写项目名称后,进行创建
3、制作安装包
(1)添加项目输出内容
右击Application Folder,【Add】-【项目输出】,选择项目,主输出。
这里因为我使用了自定义配置文件appsettings.json,所以也需要添加进来,同样右击Application Folder,【Add】-【文件】,将appsettings.json文件添加进来,如果还有其他文件的话,进行类似操作
(2)添加卸载程序
右击Application Folder,【Add】-【文件】,选择目录C:\windows\system32,找到msiexec.exe文件添加进来
设置卸载程序属性,需要找到打包部署项目的ProductCode,选择打包部署项目,按F4,可以看到ProductCode的值,复制出来,这里可以配置安装部署包的基本信息,可以自行配置,这里不多做说明
在卸载工具的Aguements属性中输入:/x {ProductCode}
(3)创建快捷方式
比如我们需要在桌面显示WPF程序的快捷方式,在windows程序菜单中显示WPF程序和卸载的快捷方式,方便我们使用,所以只需要创建主输出的快捷方式和msiexec.exe的快捷方式,并分别自定义重命名为“我的工具”和“卸载工具”
将快捷方式剪切到User's Desktop和User's Programs Menu文件夹中,User's Programs Menu中有两个快捷方式,可以创建一个文件夹进行存放
(4)配置系统必备组件及安装位置
这里需要检查一下本地是否存在离线版的.Net Framework版本,如果没有需到官网上,下载脱机安装程序的运行时和中文语言包
再将下载的ndp47-kb3186497-x86-x64-allos-enu.exe文件,复制到C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX47目录下;
ndp47-kb3186497-x86-x64-allos-chs.exe文件,复制到C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX47\zh-Hans目录下。
然后打开部署项目的属性页,进行系统必备配置,如下图所示
这里指定组件的安装位置为“从与我的应用程序相同的位置下载系统必备组件”,当打包时会把刚下载的.net framework离线版一同进行打包,方便安装时直接检测安装
(5)生成安装程序
右击部署项目生成,会在\Debug目录下生成安装程序,这里可以看到多了DotNetFX47文件夹,里面就是下载的.net framework
这里存在多个文件,如果想要生成一个exe文件,可以借助三方工具如AdvancedInstaller、Inno Setup进行打包
4、安装
点击setup.exe进行安装,安装前会检测windows系统是否安装了.net framework4.7的环境,没有则需要进行确认安装,安装完成后需要重启一下系统,接着再安装WPF程序
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器