请教在XP SP3 上面,不装VC2008Redist.exe发布程序的方法,我以前用的方法是,把Microsoft.VC90.MFC Microsoft.VC90.CRT Microsoft.VC90.ATL 这几个文件夹,都跟着你的EXE一起打包,这样,在目标机器上,就不用装VC2008Redist.exe,这样的安装包,在XP SP2上面,测试通过了,但是在XP SP3上面,程序还是起不来,在SP3上,还是得装一次VC2008Redist.exe,程序才能运行起来,我看其它的程序,有一些,也不用装VC2008Redist.exe,比如最新版的iKu,就是优酷上面的客户端,它只是把这几个文件夹,跟着安装包一起发,在SP3上也可以运行起来,并且是绿色的,就是重新恢复一次系统,再运行安装目录下的IKU程序,还能运行起来。但是我把用VS2008编译的EXE,放在它的安装目录下,就运行不起来,比如,就是一个普通的MFC对话框程序,也运行不起来,不知道为什么?不知道有没有人遇到过类似的情况,还请高手给帮忙解答,谢谢了。

解决方案 »

  1.   

    貌似有几个关联的动态库 只要那几个一起打包就可以了
    没必要Microsoft.VC90.MFC Microsoft.VC90.CRT Microsoft.VC90.ATL 这些文件夹一起打包发布
      

  2.   

    要把相关的DLL要打包进去.
    而且你还要注意每个DLL的版本,要修改Manifest文件.
    主要DLL有以下:
    mfc90u.dll
    msvcp90.dll
    msvcr90.dll
    Microsoft.VC90.CRT.manifest和Microsoft.VC90.MFC.manifest中相关版本号要修改。
      

  3.   

    你用dependences查看一下exe依赖什么库,把相关的库打包到一起就行了
      

  4.   

    也可以编译为静态版本,这样就没有那一堆系统dll了
      

  5.   

    编译成静态版本,然后发布的时候带上mfc90u.dll
    msvcp90.dll
    msvcr90.dll
    Microsoft.VC90.CRT.manifest
    4个文件就OK了。。
    我试过,这样编译的vista win7 xp下都可以跑
      

  6.   

    只要把你的程序所需要用到的DLL 都打包给客户,应该可以的。不能有遗漏,特别是对于没安装VC的机器
      

  7.   

    找到问题的原因了,原来得用以前版本的MFC和MSVCR的动态库,不能用最新的。呵呵呵。