在win7或vista下安装编写的程序,经常会出现程序兼容助手,如下(图片来自于下面的参考文章):
出现该提示,是windows认为程序在安装过程中可能存在问题,并在该提示中列出了建议的解决方案。
而通常情况下,我们所编写的程序是不存在兼容性问题的,这时,windows的这种提示显得多余,而且造成用户体验较差。
针对该问题,微软提供了解决方案:
在manifest文件中,加入“compatibility”节点,用于告知系统该应用程序兼容compatibility中所列出的系统版本。如支持win7和vista,则加入以下内容:
<?xml version="1.0" encoding="UTF-8"standalone="yes"?>
<assemblyxmlns="urn:schemas-microsoft-com:asm.v1"manifestVersion="1.0">
<compatibilityxmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The IDbelow indicates application support for Windows Vista -->
<supportedOSId="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The IDbelow indicates application support for Windows 7 -->
<supportedOSId="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
</assembly>
通常,我们编译的程序不需要单独输出manifest文件(单独输出manifest文件是会有一种程序不清爽的感觉,每个dll或exe都将相应地有一个manifest文件)。
如何编译出在win7下不弹出兼容助手的程序?
1. 将上面的xml内容保存到一个xml文件中,如“123456.xml”;
2. 在VS项目属性,配置属性/清单工具/输入和输出/附加清单文件中加入该文件路径,如下:
3. 重新编译并生成exe文件,运行该exe,不再出现程序兼容助手提示。
参考:http://www.cnblogs.com/zhyong/archive/2011/08/09/2131815.html
参考:http://blog.csdn.net/maxuhuiabc/article/details/6081874
另外,以下设置可减少生成的exe的体积。
1. 配置属性/c++/代码生成,启用最小重新生成设为 否
2. 配置属性/链接器/常规,启用增量链接 设为 否