zl程序教程

您现在的位置是:首页 >  其他

当前栏目

vc2008程序发布指南

程序 指南 发布
2023-09-27 14:29:33 时间
vc2008开发的程序的发布方式可以有5种方式: 1. 采用静态链接到crt和MFC. 只要你拥有组成程序的所有源代码,你就可以采用这种方式,   这种方式除了程序变大一点,好处多多:    1) 不必重新发布vc2008基础库vcredist_x86.

vc2008开发的程序的发布方式可以有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文件)


另外,C:/Program Files/Common Files/Merge Modules 目录下有相应库的集成模块可以直接集成到安装包中去.


附录:

A. 自行编写的manifest文件命名: abc.exe 对应abc.exe.manifest

B. 与程序对应的manifest的格式:

?xml version=1.0 encoding=UTF-8 standalone=yes?
assembly xmlns=urn:schemas-microsoft-com:asm.v1 manifestVersion=1.0
trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"
    security
      requestedPrivileges
        requestedExecutionLevel level=asInvoker uiAccess=false /
      /requestedPrivileges
    /security
/trustInfo

dependency                                 // VC9 的CRT, 基本上所有用vc2008的程序都需要下面一段
    dependentAssembly
      assemblyIdentity type=win32 name=Microsoft.VC90.CRT version=9.0.21022.8 processorArchitecture=x86 publicKeyToken=1fc8b3b9a1e18e3b /
    /dependentAssembly
/dependency

                                              //用到 VC9的MFC库,需要加下面一段
dependency
    dependentAssembly
      assemblyIdentity type=win32 name=Microsoft.VC90.MFC version=9.0.21022.8 processorArchitecture=x86 publicKeyToken=1fc8b3b9a1e18e3b /
    /dependentAssembly
/dependency

dependency                                 //想使用windows xp 的6.0版本的通用控件,加需要下面一段
    dependentAssembly
      assemblyIdentity type=win32 name=Microsoft.Windows.Common-Controls version=6.0.0.0 processorArchitecture=x86 publicKeyToken=6595b64144ccf1df language=* /
    /dependentAssembly
/dependency

/assembly

C. 如何确保程序正确产生并嵌入manifest文件?
   - xxxproject properties Configuration Properties Generate Manifest: 确保为Yes
     这个与Configuration Properties Linker Manifest File Generate Manifest都是指同一个设置.
   - Project Tool Build Order Manifest Tool确保打勾.
     release版本可以看到有: xxx.exe.intermediate.manifest 生成, 它是由linker生成的,由manifest tool嵌入程序的.
     debug版本manifest tool把xxx.exe.intermediate.manifest嵌入程序后还会输出一个xxx.exe.embed.manifest,供检查内容是否一样


有时候我们会把一些特殊字体打包到软件,因为如果找不到我们的字体会变为默认,现在很多字体图标我们用得好,有时候我们的应用会用很漂亮的字体,需要我们自己打包,因为用户一般是没有字体。