最近有对一个Windows应用程序少许维护和修改。修改之后要发布新的exe安装文件,打包exe文件时,遇到了很头疼的问题,还好最后解决了,记录一下。

Visual Studio版本:Visual Studio 2017

Visual Studio 2017 打包插件

新建项目->其他项目类型->Visual Studio Installer->Setup Project

如果其他项目类型中没有选项(Visual Studio Installer),点击“工具”,选择“拓展和更新”,点击联机,搜索“Microsoft Visual Studio 2017 Installer Projects”,安装该插件。

选择主输出

新建项目之后,默认自动打开File System,右键点击Application Folder,添加输出,选择主输出

创建快捷图标

右键点击“主输出 from xxx”,选择“Create ShortCut to 主输出 from xxx”,新增快捷方式,可以重新命名。选择快捷方式,左键长按拖动至User's Desktop

右键点击快捷方式,选择属性窗口

可自选快捷方式的显示图标icon

自定义操作

右键点击项目

如果该项目由必选的驱动需要安装,可以将该驱动安装exe文件添加到Application Folder中,选择添加“自定义操作”,选择该驱动安装文件,会在执行文件时,调用驱动的安装。

插件的好处和缺陷

好处:Visual Studio 2017自带插件,使用方便,比下载安装其他打包软件要方便的多。
缺陷:(下述缺陷很可能是因为,我没有弄清楚该插件的深入使用方法)

  1. 驱动安装流程执行结束之后,无法继续主安装流程。
  2. 无法将所需framework环境打包进exe文件。

打包.NET Framework环境

生成的时候,报错,点击提示的报错,跳转至微软官网如何:创建本地化的引导程序包
看文档看半天并不能解决。搜索了很久,终于找到一篇文章【C#】vs2017 发布工具 Visual Studio Installer 发布包遇到的问题处理经验
按照该文章的方式找到路径:
C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages\DotNetFX461
将下载的文件NDP461-KB3102436-x86-x64-AllOS-ENU.exe复制到该路径下。
最后虽然能生成成功,但是并不是我想要的打包成一个exe文件,很显然,可能需要对插件更了解吧,我是没找到解决办法。

InstallShield

官网
又是一番折腾,下载安装,InstallShield安装包不小,下载和安装的时间花费不短。
参照使用InstallShield打包windriver驱动
下载地址:InstallShield 2018(软件打包工具)
很不幸,证书是2016的,不是2018的,最后打包的时候会出现报错:Failed to verify digital signature of IsUiServices.dll
报错类似: InstallShield 2015 错误 Failed to verify digital signature of IsUiServices.dll

InstallShield 的优点和缺点

功能强大是优点,也是缺点,因为功能强大也意味着操作复杂。

Inno Setup

官网
Inno Setup操作简单,最后会生成一个后缀iss的脚本文件。
可以自己写function。对我来说,可能会更喜欢GUI操作。Advanced Installer闪亮登场。

Advanced Installer

下一篇文章着重介绍Advanced Installer,非常好用,推荐指数五星。

转载于:https://www.cnblogs.com/AlienXu/p/8964005.html

Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结相关推荐

  1. Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer

    Advanced Installer :Free for 30 days. All features. 下载地址:https://www.advancedinstaller.com/download. ...

  2. 如何把一个java程序打包成exe文件,运行在没有java虚

    如何把一个java程序打包成exe文件,运行在没有java虚 核心提示:首先,将编译好的程序打包成jar文件,然后做出exe,这样代码就不可见了:但是exe文件在没有安装jre的电脑上不能运行,如果要 ...

  3. 用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细)

    目录 打包前置知识 一.什么是exe可执行文件? 二.为什么要将 Python 程序打包为 exe 可执行文件? 三.为什么 Python 程序不能直接运行呢? 四.我们用什么来打包 Python 文 ...

  4. 如何将写好的python程序打包成exe文件

    首先创建一个文件夹 然后打开cmd 然后cd到你创建的文件夹的目录 然后把你的py项目放到这个文件夹里面 然后再cmd里面写这行代码pyinstaller -F 你的文件名字(后缀名字是.py) 然后 ...

  5. 本文一步一步地教你如何将Python程序打包成exe文件—赶紧进来学习吧

    [先来看看几个问题] 一.什么是exe可执行文件? exe文件英文全名是executable file,翻译为可执行文件(但它不等于可执行文件),可执行文件包含两种,文件扩展名为.exe的是其中的一种 ...

  6. java swing桌面程序打包成.exe文件

    公司需要做一些数据,图片处理的小程序,所以就学了学swing,吐槽一下 现在的swing的资料真的少..基本不用这个做了. 下面的文章是介绍如何将自己编写的swing应用程序打包为.exe的可执行程序 ...

  7. java中使用pdfBox打印pdf;java web打印pdf;静默打印;jar程序打包成exe文件;exe4j的使用

    java编写打印控件 web打印一直是个棘手的问题,市面上的第三方打印插件也是贵的离谱,这里给出一个可行的解决方案. SpringBoot项目的web服务,实现的功能: 获取电脑可用的打印机列表 设置 ...

  8. 如何将java程序打包成exe文件?

    本文主要介绍如何使用exe4j对java程序进行exe打包. exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面 ...

  9. winform程序打包成exe文件

    拿到一个实现功能的winform小程序,如何利用NSIS工具制作安装包? 1.NSIS工具下载地址 点我下载 2.启动NSIS工具,如图点击 3.选择"使用脚本向导创建新的脚本文件" ...

最新文章

  1. 二、Silverlight中使用MVVM(二)——提高
  2. Nginx 搭建图片服务器
  3. 安装linux并卸载windows,如何在安装双启动后卸载 Windows 或者 Linux
  4. Android 基础 —— 活动的启动模式
  5. xmlDocument来操作xml文档
  6. cacti批量添加脚本
  7. Spring框架零基础学习(一):IOC|DI、AOP
  8. Photoshop2019 安装破解
  9. AVR单片机EEPROM存储空间的初始化
  10. nexus 启动报错 The nexus service was launched, but failed to start
  11. 计算机组成原理编码键盘实验报告,计算机组成原理实验报告-杨睿
  12. NYOJ - 独木舟上的旅行
  13. 雅可比迭代,高斯-赛德尔迭代
  14. 最新历史版本 :LINUX KERNEL 配置编译中文指南
  15. QTP破解方法,插件延长使用时间方法,及mgn-mqt82.exe下载
  16. 富士x-e4参数 怎么样?测评值得买吗?
  17. windows 2003 删除一键恢复EISA
  18. 联萌十一大决战之如日中天 C. Cinderella(灰姑娘新编)
  19. 发送linux键盘消息,在C#程序中模拟发送键盘按键消息
  20. 从零开始的VIO——Eigen和Sophus的安装配置

热门文章

  1. 【ubuntu工具】Atom的简介及安装
  2. #Java夜未眠# 读书笔记
  3. 动态展开所有_库存与市场需求之间如何“动态”共舞?库存计划动态模型构建分享...
  4. php ajax替换数据,如何用ajax替换php函数
  5. oracle判断非空并拼接,oracle sql 判断字段非空,数据不重复,插入多跳数据
  6. mysql管理用户数据库_MySQL 数据库管理(一)(用户与受权)
  7. matlab 迭代 混沌与分形实验报告,实验四 函数的迭代混沌与分形.doc
  8. python max函数_Python3
  9. 【硬件基础】振荡(时钟)周期、状态周期、机械周期、指令周期
  10. matlab中的expotest,提高Fortran矩阵指数性能(Expokit比Matlab、Python慢)