VS2008/VS2012/MFC/C++/ACCESS/Redistributable Package/installshield/打包/安装/部署
2015-06-13 16:36
330 查看
之所以要把标题写成这样,是为了这篇文章被检索的概率增加。方便碰到类似问题的网友,马上得到解决办法。
问题:
时间:2015年6月13日
开发环境:Win7+ VS2012
项目需求:基于ACCESS数据库的一个信息收集、存储和报警系统
本项目从去年年底开始,客户要求发行版软件要能够兼容XP和 Win7系统,当时我没有太在意,因为自己的电脑安装的是Win7,了解了下朋友们大都在用VS2012,所以就选择了2012版本。但是我给自己的要求是,考虑到系统内有串口编程,就尽量用MFC,越接近底层的语言,如果后期出现BUG就更好调试。因为用了一些高级语言,串口确实有现成的类直接调用,但是万一出了问题,或者不满足需求,修改的弹性空间就不够。当然之所以这样想,也确实因为没有windows下的编程经验。而且MFC在安装部署的时候,不需要携带大量的支持包,这样软件就可以做到更小。唯一的缺点是,MFC的UI很不好做!!!
今天开年后开始找新工作,然后上班,挺忙的,平时只能抽时间去完成去年未完成的功能。直到5月中旬才把功能写完,当然实际上还没有完全结束,线程池的关闭和发送中文短信,还没有做进去。
客户要求发软件给他试用,于是我先打包了一个win7版本。由于VS2012已经不内置InstallShield打包工具了,而是要另外下载安装,打包工具很多,但是我还是选择了安装InstallShield,大众化嘛。但是这个东东是要付费的,可以免费申请一个LimitedEdition版本,只是功能没那么多,对于我这个项目已经够了,在这里其实折腾了很久,因为一直在参考网上的方法去破解专业版InstallShield,但是一直破解不了,迫不得已用LimitedEdition,而且申请的时候还要翻墙(他的网页里面有谷歌的链接),于是只能通过国内的代理帮忙申请序列号。
于是用InstallShield2013 Limited Edition 发行了一个Win7版本,客户说,那边的机子大部分是XP,让我先再弄个XP版本。于是在研究VS2012下如何发行XP版本的软件,也就是产生了前面转载的那些文章。主要重点就是,VisualStudio 2012 - Windows XP (v110_xp)、静态库、多字节、多线程(/MT)——运行时库,又折腾了很久,安装他们帖子里面的都做了,放到XP上跑就是有感叹号警告,起不来。不管你是静态编译,不加依赖包,或者动态编译加上依赖包,都不顶用,愁死了。
最后还是想了想,往后跳一个VS版本试试,就开始弄VS2008。刚开始在Win7里面安装VS2008,然后打包扔到XP虚拟机(感谢有虚拟机这个东西)里面去跑,还是跑不起来,妈蛋,鸡巴都要碎了!任凭我装了VS2008SP1CHSX1512981更新包之后,还是没有反应。
最后的最后,出利器!我开两个XP虚拟机,一个安装VS2008(注意有的XP版本装VS2008可能又要费点儿劲儿),另外一个做实验用。按照静态库、多字节、多线程(/MT)——运行时库 的方式,编译然后打包(VS2008方便之处是自带打包插件,当然静态库打包的时候实际上不需要依赖包),扔到另外一个XP中跑,终于跑起来了,我都要哭了,太艰难了!!!
打包这个软件比我写这个软件还痛苦!!!注意用来做实验的那个虚拟机最好做一个快照,而且那个XP最好是刚刚安装好之后就用来做实验,不要安装任何软件,干干净净,最能证明你做的软件对别的库的依赖性更低。出了问题,直接恢复快照,很便捷。
然后我又回去做了几个实验,VS2012+ InstallShield + VS2012 Redistributable Package打包出来的软件还是跑不起来。而且从微软官方最新下载的补丁包里面的VS2012Redistributable Package根本就不支持XP系统,然后从CSDN上下载了一个老一点的(链接:http://pan.baidu.com/s/1sjQHwtv密码:1wba),才正确安装(也就是兼容XP),最后也还是跑不起来。
所以综上所述:
1. 微软已经全面抛弃了XP系统,用上述这样的方法来增加开发XP系统应用的障碍,让你真的不想再用XP系统了。
2. 开发XP的应用一定还是在XP + VS2008/2005这样的环境下去做。
PS: 这个帖子只是我的实验结果,到底事实是不是这样,我不知道,仍需验证,如果各位网友刚好碰到这个问题,并且有新的结果,请告知!
问题:
时间:2015年6月13日
开发环境:Win7+ VS2012
项目需求:基于ACCESS数据库的一个信息收集、存储和报警系统
本项目从去年年底开始,客户要求发行版软件要能够兼容XP和 Win7系统,当时我没有太在意,因为自己的电脑安装的是Win7,了解了下朋友们大都在用VS2012,所以就选择了2012版本。但是我给自己的要求是,考虑到系统内有串口编程,就尽量用MFC,越接近底层的语言,如果后期出现BUG就更好调试。因为用了一些高级语言,串口确实有现成的类直接调用,但是万一出了问题,或者不满足需求,修改的弹性空间就不够。当然之所以这样想,也确实因为没有windows下的编程经验。而且MFC在安装部署的时候,不需要携带大量的支持包,这样软件就可以做到更小。唯一的缺点是,MFC的UI很不好做!!!
今天开年后开始找新工作,然后上班,挺忙的,平时只能抽时间去完成去年未完成的功能。直到5月中旬才把功能写完,当然实际上还没有完全结束,线程池的关闭和发送中文短信,还没有做进去。
客户要求发软件给他试用,于是我先打包了一个win7版本。由于VS2012已经不内置InstallShield打包工具了,而是要另外下载安装,打包工具很多,但是我还是选择了安装InstallShield,大众化嘛。但是这个东东是要付费的,可以免费申请一个LimitedEdition版本,只是功能没那么多,对于我这个项目已经够了,在这里其实折腾了很久,因为一直在参考网上的方法去破解专业版InstallShield,但是一直破解不了,迫不得已用LimitedEdition,而且申请的时候还要翻墙(他的网页里面有谷歌的链接),于是只能通过国内的代理帮忙申请序列号。
于是用InstallShield2013 Limited Edition 发行了一个Win7版本,客户说,那边的机子大部分是XP,让我先再弄个XP版本。于是在研究VS2012下如何发行XP版本的软件,也就是产生了前面转载的那些文章。主要重点就是,VisualStudio 2012 - Windows XP (v110_xp)、静态库、多字节、多线程(/MT)——运行时库,又折腾了很久,安装他们帖子里面的都做了,放到XP上跑就是有感叹号警告,起不来。不管你是静态编译,不加依赖包,或者动态编译加上依赖包,都不顶用,愁死了。
最后还是想了想,往后跳一个VS版本试试,就开始弄VS2008。刚开始在Win7里面安装VS2008,然后打包扔到XP虚拟机(感谢有虚拟机这个东西)里面去跑,还是跑不起来,妈蛋,鸡巴都要碎了!任凭我装了VS2008SP1CHSX1512981更新包之后,还是没有反应。
最后的最后,出利器!我开两个XP虚拟机,一个安装VS2008(注意有的XP版本装VS2008可能又要费点儿劲儿),另外一个做实验用。按照静态库、多字节、多线程(/MT)——运行时库 的方式,编译然后打包(VS2008方便之处是自带打包插件,当然静态库打包的时候实际上不需要依赖包),扔到另外一个XP中跑,终于跑起来了,我都要哭了,太艰难了!!!
打包这个软件比我写这个软件还痛苦!!!注意用来做实验的那个虚拟机最好做一个快照,而且那个XP最好是刚刚安装好之后就用来做实验,不要安装任何软件,干干净净,最能证明你做的软件对别的库的依赖性更低。出了问题,直接恢复快照,很便捷。
然后我又回去做了几个实验,VS2012+ InstallShield + VS2012 Redistributable Package打包出来的软件还是跑不起来。而且从微软官方最新下载的补丁包里面的VS2012Redistributable Package根本就不支持XP系统,然后从CSDN上下载了一个老一点的(链接:http://pan.baidu.com/s/1sjQHwtv密码:1wba),才正确安装(也就是兼容XP),最后也还是跑不起来。
所以综上所述:
1. 微软已经全面抛弃了XP系统,用上述这样的方法来增加开发XP系统应用的障碍,让你真的不想再用XP系统了。
2. 开发XP的应用一定还是在XP + VS2008/2005这样的环境下去做。
PS: 这个帖子只是我的实验结果,到底事实是不是这样,我不知道,仍需验证,如果各位网友刚好碰到这个问题,并且有新的结果,请告知!
相关文章推荐
- Android Studio使用教程(六):Gradle多渠道打包
- InstallShield 隐藏密码输入的脚本
- Visual C++中MFC消息的分类
- MFC中Radio Button的用法详解
- MFC创建右键弹出菜单的方法
- MFC中动态创建控件以及事件响应实现方法
- MFC程序对文件的处理方法
- MFC自定义消息的实现方法
- MFC之ComboBox控件用法实例教程
- C#程序打成 一键安装包-InstallShield教程
- 关于VS2012自带的 性能分析 工具使用实例(图文介绍)
- MFC绘制不规则窗体的方法
- vs2012 error c4996: This function or variable may be unsafe
- IE8引发 VS2005/2008 MFC向导出错的解决方案
- MFC实现全屏功能代码实例
- 为Android应用增加渠道信息 自动化不同渠道的打包过程的使用详解
- Visual Studio 2008 安装失败(“Web 创作组件”无法安装)的解决办法
- 解决VS2012 Express的There was a problem sending the command to the program问题
- MFC程序设计常用技巧汇总
- MFC扩展DLL中导出类和对话框的实现方法