首页 > 编程语言 >VS2019 打包WPF安装程序

VS2019 打包WPF安装程序

时间:2024-02-29 16:59:46浏览次数:16  
标签:exe 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

4、安装

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

 

标签:exe,VS2019,安装程序,WPF,安装,快捷方式,打包
From: https://www.cnblogs.com/cdzTec/p/18044321

相关文章

  • WPF性能优化:Visual Studio性能分析工具使用介绍
    在硬件性能不断提升的现在,软件性能依旧是开发人员关注的重点。不同类型的程序关注的具体性能指标有所不同,服务器程序注重吞吐量,游戏引擎追求渲染效率,桌面程序则关注内存消耗以及界面加载效率和流畅性。当我们需要进行性能优化时,首先需要找到性能瓶颈。本文将介绍两个WPF性能优化......
  • WPF性能优化:性能分析工具
    在硬件性能不断提升的现在,软件性能依旧是开发人员关注的重点。不同类型的程序关注的具体性能指标有所不同,服务器程序注重吞吐量,游戏引擎追求渲染效率,桌面程序则关注内存消耗以及界面加载效率和流畅性。当我们需要进行性能优化时,首先需要找到性能瓶颈。本文将介绍两个WPF性能优化分......
  • WPF DataGrid交错行颜色
    代码如下<!-- AutoGenerateColumns="False"可以避免出现重复列 --><!-- CanUserAddRows="False"去除最后一行空白行 --><DataGridx:Name="datagrid"AlternationCount="2"AutoGenerateColumns="False"CanUserAddRow......
  • WPF DataGrid下的单元格嵌入CheckBox列表
    <DataGridWidth="auto"Height="auto"AutoGenerateColumns="False"CanUserAddRows="False"GridLinesVisibility="All">        <DataGrid.Columns><DataGridTempla......
  • 记一次WPF集成SemanticKernel+OneAPI+讯飞星火认知大模型实践
    开启OneAPI服务OneAPI介绍OpenAI接口管理&分发系统,支持Azure、AnthropicClaude、GooglePaLM2&Gemini、智谱ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360智脑以及腾讯混元,可用于二次分发管理key,仅单可执行文件,已打包好Docker镜像,一键部署,开箱即用.Ope......
  • WPF UI更新技巧:掌握EventHandler的基础与Dispatcher的高级应用
     概述:在WPF中,通过EventHandler可实现基础和高级的UI更新方式。基础用法涉及在类中定义事件,并在UI中订阅以执行更新操作。高级用法借助Dispatcher类,确保在非UI线程上执行操作后,通过UI线程更新界面。这两种方法提供了灵活而可靠的UI更新机制。在WPF(WindowsPresentationFounda......
  • VS2019自带的增强型指令集和自我优化的版本速度比较.
    去年年底把工程项目由VS的2015升级到2019版本,本以为直接配置下运行环境就可以了,但是一编译发现一大堆错误,所有的错误都指向一系列的指令集,比如_mm_exp_ps、_mm_log_ps、_mm_pow_ps等等,后面发现原来从2019版本开始,编译器已经自带了这些常用的函数,所以自己函数和系统的重名了,也......
  • C#程序全局异常处理—WPF和Web API两种模式
    C#程序的全局异常处理,网上搜下资料都是一大堆,我这里最近也是独立做一个B/S结构的小项目,后面又增加了需求用WPF实现相同的功能,这里将我所使用的全局异常处理方式做一个简短的总结分享。WebAPI项目的全局异常处理这种项目下,我们可以直接自定义一个全局异常的过滤器,用来处理全局......
  • C# WPF 根据RGB三色得出透明度Opacity
    当我们把ARGB压缩为RGB数据时,会丢失A透明通道那么就有可能会遇到反推A透明通道的问题原理很简单,取RGB三色最大通道除255得到A通道Randomrandom=newRandom();bytered=Convert.ToByte(random.Next(0,0xff));bytegreen=Conver......
  • Cgdata.FastWpfGrid
    安装:Install-PackageCgdata.FastWpfGrid前台代码:xmlns:FastWpfGrid="clr-namespace:FastWpfGrid;assembly=FastWpfGrid"<FastWpfGrid:FastGridControlx:Name="grid1"IsReadOnly=&quo......