vs2017将项目发布成可安装exe、可能出现的问题及解决方法

利用vs开发完程序后,需要将自己的项目发布成可安装的exe,以便在其他电脑上进行人机交互。之前发表过一个简单的发布过程,但是如果项目内容过大,配置环境比较复杂时,如果想发布成功,并最终安装实现运行,对我这个小白来说比较困难。事实证明,确实很痛苦,因此写下这篇博客,为同样问题所困扰的各位同志提供一些解决思路。

第一步:建立类库

解决方案—>新建项目—>选择类库 如下图所示
vs2017将项目发布成可安装exe、可能出现的问题及解决方法
同时选择框架,和其他项目所在的框架一样即可,这里自己选择的框架为 4.5.2 如下所示
vs2017将项目发布成可安装exe、可能出现的问题及解决方法
将类库下class1.cs 文件删除,并添加安装程序类 installer.cs。

第二步 创建setup project

解决方案—>新建项目—>选择setup project 如下所示
vs2017将项目发布成可安装exe、可能出现的问题及解决方法查看该项目的文件系统(file system)会发现包含三个文件夹 如下所示
vs2017将项目发布成可安装exe、可能出现的问题及解决方法
文件夹1 主要存放bin下 debug文件夹(包括所有文件和文件夹)以及其他的必要文件比如我在项目下建立了一个resources文件用来存储某些控件的image,所以在bin下必须将这些必要的文件添加到文件夹1下,直接拖拽都可以。
文件夹2 存放程序启动的exe快捷方式;
文件夹3 存放程序启动的exe快捷方式以及msiexec.exe的快捷方式

第三步 文件夹1 下添加项目输出和msiexec.exe文件

添加第一步类库作为主输出,如下所示。
vs2017将项目发布成可安装exe、可能出现的问题及解决方法
添加msiexec.exe。 将c:\windows\system32\msiexec.exe文件移到桌面(或者其他地方)(否则在setup生成时,会提示 msiexec.exe 受到c:\windows\system32文件夹保护而导致生成失败),将桌面下的msiexe.exe添加到文件夹1下。
vs2017将项目发布成可安装exe、可能出现的问题及解决方法
同时将第二步中所提及的debug文件和自己所建立的必要资源文件(我这里是resources)添加到文件夹1下,结果如下所示。
vs2017将项目发布成可安装exe、可能出现的问题及解决方法

第四步 创建msiexec.exe 和主程序的快捷方式

创建msiexec.exe的快捷方式,重命名为卸载.exe,并移到文件夹3下面,操作如下。
vs2017将项目发布成可安装exe、可能出现的问题及解决方法
两次创建主程序的快捷方式,并重命名,分别移到文件夹2和文件夹3,最终文件夹2和文件夹3包含的文件如下。
vs2017将项目发布成可安装exe、可能出现的问题及解决方法
vs2017将项目发布成可安装exe、可能出现的问题及解决方法

第五步 简单也很重要

将setuoproject的 producecode属性值复制给卸载.exe的arguments属性。
vs2017将项目发布成可安装exe、可能出现的问题及解决方法
vs2017将项目发布成可安装exe、可能出现的问题及解决方法
经过上述操作之后,基本都可以通过发布过程,并可安装并顺利运行。
但是,在发布过程中会提示一些warning(可以忽略),如果出现error,那么发布过程就会cancel,此时你要根据输出控制台显示的error进行问题解决,比如我这里有两类error,一个就是说需要移除下图的文件,因为受保护,因此我将文件在setup项目中移除,并不影响。
vs2017将项目发布成可安装exe、可能出现的问题及解决方法
第二个提示error就是内存资源不足。我觉得可能就是由于重复添加文件导致的,因此繁琐的操作就是将提示的文件依次移除,我这里就是没有添加bin文件夹下的release文件夹,至此问题解决顺利发布。
但是在安装在别人电脑上时,会有一些配置环境要求,因此对于电脑的配置环境不支持程序正常运行的,要根据自己项目中所涉及的某些配置文件,安装在需要的电脑上,才能保证安装后的程序正常运行。