vc2008不安装vcredist发布程序

http://blog.sina.com.cn/s/blog_8378e25b010142w7.html


vc2008不安装vcredist发布程序

(2012-05-18 15:29:37)
标签:

杂谈

分类: VC
以前一直用vc6,不是喜欢他什么,最重要的一点是用它发布程序方便,搬到别处的电脑几乎不会出现什么问题。而vc9发布程序,很容易出现程序配置错误等问题而无法运行,导致的原因是与环境dll有关,找了很久终于找到很详细的解答,以下是地址
http://blog.csdn.net/xiaojianpitt/archive/2009/06/15/4269641.aspx

vc2008程序发布指南2008-05-03 17:46vc2008开发的程序的发布方式可以有5种方式:

1. 采用静态链接到crt和MFC. 只要你拥有组成程序的所有源代码,你就可以采用这种方式,
这种方式除了程序变大一点,好处多多:
1) 不必重新发布vc2008基础库vcredist_x86.exe(安装到WinSxS).
2) 不必产生,嵌入manifest.
3) 也不把vc2008基础库放在程序所在目录.

2. exe(嵌入manifest) + vcredist_x86.exe

   确保程序正确产生并嵌入manifest文件,然后把程序和vcredist_x86.exe一起发布.用户先安装
vcredist_x86.exe(安装到WinSxS),然后程序就能正常运行了.

3. exe(嵌入manifest) + 用到的基础库文件放到程序目录(包括库文件本身的manifest文件)

   确保程序正确产生并嵌入manifest文件,然后把程序用到的vc2008基础库相关文件复制到程序
所在目录,这种方式适用于用户没有安装过vcredist_x86.exe,一旦用户安装过vcredist_x86.exe,
若WinSxS中的相关文件遭到破坏,那么即使在程序目录放上所有用到的vc2008基础库,程序也跑
不起来;若WinSxS中的相关文件正常,那么程序目录下的相关文件就是多余的了,删掉它们程序也能
正常运行.

4. exe(自行编写manifest) + vcredist_x86.exe

5. exe(自行编写manifest) + 用到的基础库文件放到程序目录(包括库文件本身的manifest文件)

个人偏向第五的方法

在vc2008中,工程属性可以设定manifest是不是嵌入到文件,经过测试,在没有安装vcredist的xp系统上,将基础库文件放到程序目录就行了,当然要包括库文件的manifest。而不嵌入manifest的好处就是第三点说到的。因为程序会优先检测winsxs的,如果里面存在却是错误的,导致程序跑不起来,那么如果不将manifest内嵌,就一定能保障程序能找到正确的配置文件和相关的库文件。

举个例子:
一个程序只用CreateWindow来创建一个窗口和一个按钮
在项目属性->清单工具->输入输出  中将清单嵌入设为否,那样就会帮你生成manifest文件而不会将它嵌入

然后,在链接器->清单文件->附加清单依赖项 中加入
type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='6595b64144ccf1df' language='*'

这样,通用控件就能使用系统的主题样式。

编译程序后,除了程序文件xxx.exe和xxx.exe.manifest外,到VC\redist中找到相应的dll和manifest
这个程序就需要msvcp90d.dll msvcr90d.dll msvcm90d.dll 和 Microsoft.VC90.DebugCRT.manifest
因为这是调试版本,所以基础库都是msvc...d.dll
Release版本就找对应的版本和manifest就可以了。
vc2008不安装vcredist发布程序


注意,如果程序跑不起来,看看程序的manifest文件中指定的基础库版本和复制过来的dll文件版本是否一致。

0

阅读 (389) 评论 (0) 收藏 (0) 转载 (0) 喜欢 打印 举报
已投稿到:

转载列表:

    转载

    转载是分享博文的一种常用方式...

      发评论 |
      • 灌水
      • 赞
      • 美好
      • 顶
      • 顶
      • 顶
      • 开心
      • 路过

      登录名: 密码: 找回密码 注册

      昵   称:

         

      验证码: 请点击后输入验证码 收听验证码

      发评论

      以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

        

      新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

      新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

      新浪公司 版权所有

      X
      选择其他平台 >>
      分享到
      • 含“”的博文
      • 含“”的博主
      • 含“”的音乐
      • 含“”的视频
      最近喜欢了的博主:
      加载中…
      为了您的账号安全,请 绑定邮箱
      幻灯播放

      • 0
        点赞
      • 0
        收藏
        觉得还不错? 一键收藏
      • 0
        评论

      “相关推荐”对你有帮助么?

      • 非常没帮助
      • 没帮助
      • 一般
      • 有帮助
      • 非常有帮助
      提交
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值