如何在不安装VC2008发布包的情况下,发布VC2008生成的程序
在前面的Blog中有提到,VS2005及以上版本的程序发布与之前版本有一个差别就是清单文件,这个清单文件包含了运行此应用程序所需要的一些文件配置信息,如平台,版本等等,这个清单文件可以内嵌在应用程序中,也可以单独存在。在应用程序运行时就会根据这个清单文件去找相应的依赖文件,默认首先是查找系统目录下的WinSxS目录,如果找不到会在应用程序所在目录去查找。
如果运行程序所在的机器上没有安装相应版本的VS发布包,程序就无法运行。前段时间,我用VS2008编写生成的程序,给我们一位同事使用时,就出现说程序未正确安装或者配置,无法运行。究其原因就是因为没有清单文件没有配置好。后来通过下面的方式操作,程序终于运行起来了。
- 程序本身的清单文件,依旧选择嵌入式清单。
- 将VS的动态连接库从WinSxS目录中复制出来,我用的VS2008,复制的是x86_microsoft.vc90.crt_9.0.21022.8_(中的内容不同机器,内容可能不同)目录中的动态连接库,如果是Debug版本,请复制x86_microsoft.vc90.debugcrt_9.0.21022.8_*********中的内容,如果程序使用了MFC、ATL或者OPENMP,则需要把相应的动态连接库一起复制出来。
- 将清单文件从WinSXS目录中复制出来,将Manifests目录下的x86_microsoft.vc90.crt_9.0.21022.8_***.manifest复制到运行程序目录,同样,如果使用了MFC、ATL或者OPENMP或者是DEBUG版本,则把相应的版本一起复制出来。
- 将所有复制出来的清单文件更名,更名为microsoft.vc90.XXX.manifest(XXX代表复制是crt还是ATL,还是mfc,或者是debugcrt等等,与原来一样),例如:x86_microsoft.vc90.crt_9.0.21022.8_***.manifest,更名为microsoft.vc90.crt.manifest。
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2012/2012-08-08-如何在不安装VC2008发布包的情况下发布VC2008生成的程序/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。