visual studio 开发的MFC程序打包

这是我的处女作,写得不好,大家多多包涵

前言:

(1)项目就要验收了,可是项目一直在自己的机器上运行,而且一直用都是在集成开发环境(VS2008)中运行,没想过在别的机器上运行会怎么样

(2)之所以要写这个博客是因为在网上找不到我的问题的解决方案(当然有相似问题),我的问题难点是在项目里面调用了其它的exe程序,是别人用VB写好的程序,然后生成的exe文件,我直接在MFC里面调用了,在自己的电脑上调试运行还好,但是一旦打包到别的机器就不行了。

(3)开发项目的集成环境已经说过了,另外还使用了OpenCV、OpenGL。

好了,下面进入正题:

一般开发的mfc程序,直接把debug或者release下的**.exe文件拷贝出来,直接双击就能运行,但是前提条件是该机器要安装好vs开发环境或者装好其它插件(网上Google有,这里就不详解了)。但是这对于真正使用的软件显然是不现实的,没理由要求使用该软件的人都去安装visual studio开发环境或者安装插件吧,平时我们从网上下载的软件一般都有安装过程的,这是别人打包好的。

废话说了一堆,该说说我是怎么从失败到成功的。

1、首先我直接使用vs2008自带的安装部署,创建了一个工程,然后把编译好需要打包的工程导入该工程,设置输出属性,编译,搞定(可参考http://wenku.baidu.com/view/8790880b7cd184254b353588.html),要是这样能成功就太好了,我在其他机器上安装了该应用程序,结果能正常运行,包括OpenGL、opencv等功能,唯一没有反应(不报错)的就是调用VB写好的exe的地方。

2、然后我使用了InstallShield 2010(下载地址)对项目进行打包(可参考http://blog.csdn.net/liuhongwei_study/article/details/8586930),然后找到工程下面的setup.exe安装即可,我的setup.exe路径C:\InstallShield 2010 Projects\UnOceanV1.0\PROJECT_ASSISTANT\SINGLE_EXE_IMAGE\DiskImages\DISK1(红色是工程的目录,紫色是工程的名称,也是软件的名称,后面的应该都一样了)。这次的运行情况还是跟上面一样。

3、最后,我分析了原因,可能是包含关系、或者静态库的关系失败的,所以把(2)参考链接的第六步Application Files,不仅添加了debug下面的exe文件,还将工程目录下一级的debug文件夹添加了,(注意,不是**.sln同一级的debug文件夹,而是与.cpp同一级的debug文件夹)。经过编译之后生成的setup.exe安装之后即可正常运行所有功能,其实原理我也没弄明白,望大神赐教。添加了debug文件夹之后的确定是原来只有几兆的软件变成了几十兆,故慎用。

好了,就写这么多了,谢谢。

你可能感兴趣的:(研发管理,编程语言,开发)