我用vs2008( without sp1) 开发的软件发布到64位的windows 7 上,这个软件编译的时候是选择的32位的,因此我想应该用的vc_redistribute pack也应该是32bit的。我用第三方的打包程序(NSIS)把vcredist_X86.exe 打包在安装文件中 。后来发现,在32bit的OS上安装都没有问题,但 64bit的OS上程序安装后却无法运行,找不到sxs的assembly.请问:难道 MS的VC redistributable package 这个包是按照目标操作系统来决定使用64bit/32bit的么, 按照ms官网的解释,以及我的理解,这个包应该是按照应用程序的编译方式来选择的,如果你的程序是32bit,就应该选择X86的分发包 ,如何你的程序是按照64bit编译的,就应该选择x64的包。请高手指点。谢谢了

解决方案 »

  1.   

    redistributable package 那就把64位的也带上..
      

  2.   

    MS的系统不带VC的运行时库,这是对VC的残酷打压啊。
    win7好几个G,要真有心,其实也不会在乎这几M了。
      

  3.   

    会自带一些,不过版本太多,Win7也不能保证都有,所以软件发布者最好自己提供
      

  4.   

    那你就找台64位的机器,生成个64位的软件,打包后如果没错了,那就说明与vc_redistribute pack无关。
      

  5.   

    打包的时候把VC的MSM打进去就行,vcredist不建议在MSI部署项目里面用,因为没有引用计数
      

  6.   

    我用NSIS打包的,不是用vs的setup project.是不是也应该用VC 的MSM?? 
      

  7.   

    NSIS不是基于Windows Installer的,不过你可以用VS的Setup Project创建一个只包含VC的MSM的项目,起名叫“xxx产品系统必备”然后再在NSIS项目中执行Setup Project生成的MSI。
      

  8.   

    谢谢蒋老大。 我发现我这个安装程序在10几台机器上只有一个win7 64bit的失败了,其他还有两台机器也是win7 64bit的,都成功了,不知道什么原因。 另外我发现vc redistributable package即使用VC的setup project打包,也存在一定的安装失败概率,而且好像失败概率更高。不知道是什么原因。 老大能说说可能的原因么。 
      

  9.   

    我想能用MSM的引用计数当然更好些,更安全。 但现在我最急需知道的问题是:为什么vc redistributable pack有时候在一些计算机上安装会失败??好像很多软件都用这个,感觉都很少遇到失败的情况。而我的安装程序安装这个有个比较明显的失败概率 , 10%?