VS2019打包WPF安装程序最新教程,使用Visual Studio 2019开发的WPF程序如果想要打包为安装程序,除了在VS2019找到WPF项目类库直接右键发布之外,更常用的还是将其打包为exe或者msi的安装程序;打包成安装程序的话,客户得到安装程序直接安装即可使用,即使在离线环境情况下,安装好就可以使用了。

一些传统行业发布程序时,比较常用这种方法,如医疗,教育等。

演示程序打包一览

在本教程中,我完整的打包了一个简单的WPF程序,最终安装好了以后,在桌面有一个我的程序的快捷方式图标,点击这个图标即可打开应用程序。

WPF安装程序桌面图标

 

程序运行后的效果如下所示:

VS2019打包WPF安装程序运行效果 

VS2019打包WPF安装程序步骤

使用VS2019打包WPF安装程序有很多种方法,本篇教程基于VS扩展插件Microsoft Visual Studio Installer Projects工具来打包,实际上此工具,在VS2010时自带有,只是后面版本的Visual Studio取消了此插件,现在需要单独安装。

安装打包Installer插件

安装Microsoft Visual Studio Installer Projects插件有两种方式。一是下载插件单独安装,二是在VS里面在线安装。

Microsoft Visual Studio Installer Projects下载地址:

官方下载地址:点击下载

 

下载下来后,你会在你的保存目录看到此文件的图标是这样的,直接双击安装就可以了,如果打开了Visual Studio,先将VS关闭后再安装即可。

安装插件

如果你不能从官网下载到,可以从本站直接下载即可。离线下载安装的方式适用于断网环境开发。

VS在线安装Microsoft Visual Studio Installer Projects

Microsoft Visual Studio Installer Projects插件也可以在线直接安装,步骤为:点击菜单栏【扩展(X)】,然后在弹出来的一个窗体里面,在右侧搜索框里面搜索“Microsoft Visual Studio Installer Projects”,一般第1个就是它了,然后点击Download(下载),然后安装就可以了。

VS在线安装Microsoft Visual Studio Installer Projects

点击Download后如下:

下载插件

下载完毕后,你需要把VS关闭掉,它会自动的安装。

自动安装插件

安装好了后,启动VS即可。

创建安装项目

重新打开Visual Studio,打开一个你现有的包含WPF项目的解决方案即可,然后创建安装项目。在解决方案上右键 –> 【新建项目】–> 【Setup Project】,添加Setup Project项目时,VS2019可以搜索项目模板,如下图所示。

创建安装项目

创建好了后,主界面变成如下图所示:

安装项目主界面

左边窗口三个文件夹图片说明如下:

Application Folder:应用程序包含的文件设置,指最终在客户电脑上的安装根目录。如下图所示:

应用程序目录子目录

User’s Desktop:用户桌面快捷方式设置,用户桌面,一般放个快捷图标。

User’s Programs Menu:用户启动菜单的快捷方式设置,一般也是放快捷图标。

Application Folder是安装程序的根目录,你编写的程序生成的dll,安装后就存放在这个目录。

添加项目输出

安装项目建好了后,需要要往里面添加项目输出,操作方式为:右键Application Folder —>Add—>项目输出。

该操作也可以直接在安装程序项目类库上面通过右键操作来添加项目输出,如下图所示:

右键设置属性

设置项目属性

项目属性的设置,是用于最终一个生成安装程序的描述信息,这个描述信息,这个描述信息主要内容有程序的作者,标题,公司信息,技术支持等等。最直观的方式可以通过2种方式查看。

第一种查看方式:安装前将鼠标放到安装程序文件上,会有提示信息,如下图所示:

属性提示

第二种查看方式:安装后在控制面板处,找到安装程序,即可查看,如下图所示:

控制面板看到的安装后程序描述

 

项目属性的设置方式为:(1)左键选中项目,(2)点击解决方案栏属性,注意,不是右键选择属性,而是如下图一样选择属性。

设置安装程序属性

当你点了属性后,会出现如下的窗口。

设置属性主窗口

在当前的演示程序中,我是按照上图做的设置,设置都很简单,不需要做额外的解释,如果有不明白的,可以加群与我联系。

添加快捷方式图标

程序安装好,我们当然希望用户能够快速的打开我们的应用程序,你就需要为你的安装程序制作快捷方式,方法很简单。

方法:(1)中间窗口右键,创建新的快捷方式

创建新的快捷方式

(2)弹窗里面选择Application Folder,双击进入另外一个界面

创建新的快捷方式第2步

双击后,进入下图这个界面,选择主输出即可。

创建新的快捷方式第3步

完了后点击OK按钮,就进入下图这个界面。然后将快捷方式名称改为你应用程序的名称。

改快捷方式图标名称

改名后的效果:

改名后的效果

最后一步,也是最重要一步,在上图中选中改名后的图标,将其拖到左侧窗口User’s Desktop目录即可。

拖动快捷方式图标到对应位置

开始菜单图标(User’s Programs Menu)设置方式同上面的步骤是一样的,这里就不再重复了。

依赖文件

打包正式项目的时候,界面程序可能依赖于很多其它类库,或者第3方的dll文件,我们需要把它们一起打包,并且这些第3方程序或者dll需要同主程序在同一个安装路径下,那么在打包时,也就需要额外的把这些文件也打包进来。

所有的操作都可以在中间窗口通过右键添加文件,程序集来实现,如下图所示

添加依赖文件

添加注册表项目

制作的安装包如果要添加注册表项目,可以通过选中安装程序项目,然后右键,在弹出的菜单里面找到【View】,即可以添加注册表项目,按照提示一步一步操作即可。

另外有些打包的程序,需要在安装前或者安装后做一些额外的操作,都可以通过自定义操作来实现,如主程序安装好了以后,还得安装一个windows服务程序,再安装另外一个自动升级程序,都可以通过这里来实现。

添加注册表项目

以上的基本操作熟悉后,相信对于简单的桌面程序打包应该没有什么问题了。

另外需要注意的是,对外打包,需要更改为Release模式

打包依赖框架

最后再说一下关于 .net 环境的问题,如果你需要在打包时,将相应版本的.Net Framework一起打包到安装程序里面也是可以的,只是要注意,有可能你的打包机器上并没有安装相应的.net framework文件,则需要到官方或者网上下载对应版本的文件,例如这个演示程序,我设定的依赖框架是 4.5.2版本的,那么需要将NDP452-KB2901907-x86-x64-AllOS-CHS.exe(.net framework 4.5.2安装文件)放到指定目录才能正常的生成打包文件。

需要将.net 的离线安装文件放到以下目录,其它版本则注意下路径即可,一般C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages

目录下面有不同版本的以DotNetFX开头的目录,如下图所示:

依赖框架保存目录
依赖框架保存目录

将相应的版本的.net framework框架文件放到对应的目录即可,我这个演示程序是放到下面这个目录的。

C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX452\zh-Hans

具体打包步骤为:右键安装项目,选择属性,弹出窗口点击Prerequisites…按钮。再在弹出的窗口选择你应用程序需要的框架版本即可。可以选择多个。

Prerequisites

选择需要打包的框架版本即可。

框架版本

待安装程序打包成功后,即可在生成目录看到该框架的安装包,如下图所示:

生成目录框架文件

好了,以上就是使用VS2019打包WPF安装程序的完整步骤。

演示程序可以点击这里下载。

打包后安装一览

成生打包文件成功后,就可以双击msi或者exe文件进行安装了,安装效果图如下:

安装打包程序

选择安装目录

安装打包程序

在演示的这个打包程序里面,比较简单,实际上你可以添加用户协议文件,输入用户信息后才能安装,这些都可以在打包时设置。

演示程序源码可以在原文链接处下载

本文首发于:https://jhrs.com/2019/33231.html

VS2019打包WPF安装程序最新教程的更多相关文章

  1. .net core 和 WPF 开发升讯威在线客服系统:把 .Net Framework 打包进安装程序

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 系列文章目录: https://blog.shengxunwei.com/Home/Post/44a3 ...

  2. win7下nsis打包exe安装程序教程

    下载软件包: NSIS中文版 :https://pan.baidu.com/s/1mitSQU0 装好之后会出现两个软件:Nullsoft Install System 和 VNISEdit 编译环境 ...

  3. [WPF]VS2019打包WPF程序

    原文:[WPF]VS2019打包WPF程序 版权声明:本文为本人原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37316917/article/details/8 ...

  4. sencha touch打包成安装程序

    为了更好地向大家演示如何打包一个sencha touch的项目,我们用sencha cmd创建一个演示项目,如果你的sencha cmd环境还没有配置,请参照 sencha touch 入门系列 (二 ...

  5. sencha touch 扩展篇之将sencha touch打包成安装程序(上)- 使用sencha cmd打包安装程序

    由于最近一直忙着android原生的开发,很久没有更新博客了,官方的sencha cmd工具功能非常强大,创建项目,压缩项目,打包安装程序都能轻松实现,这讲我们就给大家介绍下如何使用sencha cm ...

  6. C#打包制作安装程序过程全记录

    该文是根据网上的文章并结合自己实际打包的过程而整理的. 开发平台:VisualStudio2005中文版. 步骤如下: 1. 创建一个安装向导项目或安装部署项目 新建项目-〉其他项目类型-〉安装与部署 ...

  7. C# winform 打包成安装程序(exe)

    C# 打包成安装程序 1.扩展-> 安装扩展 联网搜索 install     2.新建安装程序项目      3.添加程序   4.添加打包需要的文件 5. 添加x86与x64文件夹,并添加s ...

  8. 图解 VS2015 如何打包winform 安装程序

    http://learn.flexerasoftware.com/content/IS-EVAL-InstallShield-Limited-Edition-Visual-Studio?lang=10 ...

  9. VS2015 打包winform 安装程序

    最近开发了一个小软件.由于需要打包.网上找了一些资料.然后整合了起来.希望对大家有所帮助.不全面请见谅. 打包控件 InstallShield-Limited-Edition  下面是注册地址 htt ...

随机推荐

  1. WeCenter3.1.7 blind xxe 分析

    xxe漏洞危害大,可以查看任意文件,执行系统命令,进行ddos等,但是本次漏洞有一条件,需要后台登录,所以危害降低了,下面是详细分析 在models/weixin.php public functio ...

  2. PHP 插入排序 -- 希尔排序

    1.希尔排序 -- Shell Insertion Sort 时间复杂度:数学家正在勤劳的探索! 适用条件: 直接插入排序的改进,主要针对移动次数的减少,这取决于"增量队列"的取值 ...

  3. 《锋利的jQuery》学习总结

    通过对<锋利的jQuery>(第二版)一书的学习,发现此书讲解通俗易懂,是学习jQuery的一本很好的指导书,特作如下总结.此书主要讲解了jQuery的常用操作,包括认识jQuery,jQ ...

  4. CentOS6.5下搭建FTP服务

    一.FTP协议 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中FT ...

  5. 关于vue使用的一些小经验

    这一年来说,vue的势头很猛,用户量“噌”“噌”“噌”的涨 为了不掉队不落伍.在后台大哥的胁迫下,不得不选择用了它 刚开始很难接受vue的写法,在编辑器里很容易报错,基本上每行都会出现红色的波浪线 这 ...

  6. Vue系列---源码构建过程(四)

    在了解源码如何构建之前,我们有必要了解下 项目中一个简单的目录结构如下: |---- vue | |---- dist # 打包后的存放文件目录 | |---- scripts # 存放构建相关的代码 ...

  7. 基准测试了 ArrayList 和 LinkedList ,发现我们一直用 ArrayList 也是没什么问题的

    ArrayList 应该是 Java 中最常用的集合类型了,以至于我们说到集合就会自然而然的想到 ArrayList.很多同学都没有用过除了 ArrayList 之外的其他集合,甚至于都已经忘了除了 ...

  8. Java中Object类hashCode的底层实现

    Java中Object类hashCode的底层实现 openjdk\jdk\src\share\native\java\lang\Object.c 42 static JNINativeMethod ...

  9. day10作业(函数实现注册''')

    在猜年龄的基础上编写登录.注册方法,并且把猜年龄游戏分函数处理,如 登录函数 注册函数 猜年龄函数 选择奖品函数 '''在猜年龄的基础上编写登录.注册方法,并且把猜年龄游戏分函数处理,如 2. 登录函 ...

  10. mysql的一些常用操作(二)

    紧跟上一节,我们创建了四个表: Student.Teacher.Course.Score 接下来就是实际的一些操作了:1.求每门课程的学生人数. select course.cname '课程名称', ...