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文件,可以借助三方工具如AdvancedInstallerInno Setup进行打包

4、安装

  点击setup.exe进行安装,安装前会检测windows系统是否安装了.net framework4.7的环境,没有则需要进行确认安装,安装完成后需要重启一下系统,接着再安装WPF程序

 

posted @ 2024-02-29 16:44  Hello牛顿  阅读(160)  评论(0编辑  收藏  举报