文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>部署VC2008应用程序(2)

部署VC2008应用程序(2)

时间:2010-04-24  来源:laiboy

CSDN博客 http://blog.csdn.net/laiboy

ChinaUnix博客 http://laiboy.cublog.cn

在上一篇"部署VC2008应用程序 "中,我谈到过,如果安装了vcredist_x86.exe / vcredist_x64.exe 这两个发布包后,即使使用CRT/MFC和manifest的文件与应用程序放在同一目录下,也不会调用,会调用已安装的vcredist_x86.exe / vcredist_x64.exe 的CRT/MFC运行时库.

如果是调试版或安装的vcredist_x86/vcredist_x64已你机子上安装的VC2008不一致(例如是使用了SP1),应用程序仍然是不能正确运行的了.

解决的方法就是要求应用程序不再依赖vcredist_x86/vcredist_x64这两个包

解决方法如下:

1.删除生成的manifest,并修改生成manifest的方式

设置 Project->Properties->Configuration Properties->Manifest Tool->Input and Output->Embed Manifests: No

(中文版VC2008修改如下 项目->属性->配置属性->清单工具->输入和输出->嵌入清单:否)

2.重编译程序

3.将生成的程序和manifest拷贝到部署目录

4.打开manifest文件(appname.exe.manidfest),将所有的"MFC/CRT/ATL/OpenMP"的节点的"publicKeyToken"删除, 意,"Microsoft.Windows.Common-Controls"这个节点的"publicKeyToken"不要删除

5.将所"%ProgramFiles%\Microsoft Visual Studio 9.0\VC\redist\x86"所依赖的目录都拷贝到部署目录

6."Microsoft.VC90.CRT","Microsoft.VC90.MFC","Microsoft.VC90.ATL","Microsoft.VC90.OPENMP","Microsoft.VC90.MFCLOC"等这些目录拷贝到部署目录后(注,所依赖的,不必全部拷贝),将这些依赖的目录下的manifest文件中的"publicKeyToken",全部删除

7.修改manifest的版本号,要与所安装的VC2008版本一致("9.0.21022.8"为普通版本"9.0.30729.1"为SP1版本)

至此,我们的工作已经完成,程序可以任何安装了或不安装的vcredist_x86和vcredist_x64的机子上运行了!因为应用程序只依赖了编译机子上的CRT/MFC

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载