Delphi实现动态获取版本信息

文件版本信息的存在使得应用程序正确的安装文件变得简单,并且使安装程序能够分析文件的当前安装状态。通常,版本信息应该包括文件的版本号、文件功能描述以及文件作者等多项重要内容。

在应用层面上,程序员可以通过保存在应用程序文件或动态链接库文件中的版本信息判断一个文件是否应该被安装,并确定当前安装文件的冲突。在文件有了版本信息这个属性后,我们编写的程序就能够实现以下功能:

1. 避免在新版本的组件上安装旧版本的相同组件;

2. 在多语言系统环境中,操作系统根据文件版本信息里提供的语言信息在启动程序时决定使用的正确语言;

3. 可以防止在不同的路径下安装多个文件的拷贝;

4. 应用程序在运行时,便能判断文件的版本是否正确;

5. 在应用程序的关于对话框中显示可执行文件的版本号;

6. 在线升级程序可以判断一个文件是否因为版本过旧,从而进行必要的文件升级。

因为Windows系统在设计上的先天缺陷,其使用的FSO并不支持文件的版本信息功能。为了能对文件的版本信息进行管理,微软在Platform SDK(平台软件开发工具包)中通过API(可编程接口)的方式为软件开发人员提供了管理版本信息的方法。这些API是GetFileVersionInfo、GetFileVersionInfo、VerFindFile、VerInstallFile和VerQueryValue,它们被存放在Windows系统目录下一个被命名为VERSION.DLL的动态链接库文件中。

在Windows系统中任何可以包含Windows资源的文件都可以包含版本信息,比如动态链接库文件、可执行文件、字体文件等。版本信息被包装成一个VERSIONINFO结构的资源,通过编译器打包进这些文件中。

本文试图通过分别讲解这些API的使用方法,向读者介绍在Delphi中通过编程的方法,怎样实现在运行时动态获取程序文件版本信息的功能。

时间: 2024-08-04 04:09:38

Delphi实现动态获取版本信息的相关文章

[开发故事]第四回:应用反射在运行时动态获取类型信息

引言 网友hbfly,对于我在[你必须知道的.NET]第三十回:.NET十年(下)一文中 关于"当应用attribute进行运行时反射"的论述,希望举例说明,他提出了自己 的想法:[你必须知道的.NET]第二十四回:认识元数据和IL(上)[你必须知道的.NET]第二十五回:认识元数据和IL(中)[你必须知道的.NET]第二十六回:认识元数据和IL(下) [MyAttribute("text.....")] public mymethod() { //我可以再方法内部

怎么样动态获取数据库信息

问题描述 怎么样动态获取数据库信息 购物网站,在数据库存储的商品信息,例如颜色,尺寸等获取出来,显示到 相应的页面中,页面中已有颜色,尺寸选择框. 解决方案 你可以搜一下 ajax 异步获取 解决方案二: 获取数据库信息(二)数据库元信息的获取在Salesforce Apex中动态获取SObject信息

Android SdkVersion的区别及获取版本信息方法

1.minSdkVersion,targetSdkVersion,maxSdkVersion,compileSdkVersion四个数值之间有什么区别? • minSdkVersion,maxSdkVersion是项目支持的最低sdk版本和最高sdk版本.在安装apk前,系统会对这两个数值进行判断,决定当前系统是否可以安装,一般maxSdkVerson不会设置. • compileSdkVersion是项目编译时的sdk版本. • targetSdkVersion 会告诉系统,此版本已经经过充分

为Tiny4412设备驱动在proc目录下添加一个可读版本信息的文件

http://blog.csdn.net/morixinguan/article/details/77808088 上节,我们明白了proc文件系统的作用,接下来我们在友善之臂已经写好的led驱动的基础上,在proc目录下创建一个文件夹,然后加入led驱动的版本信息读取. 我们在init函数的最后加入: //定义proc文件系统节点 struct proc_dir_entry *dev_dir , *dev_version; //创建一个目录 dev_dir = proc_mkdir("Tiny

ndk-通过NDK获取手机信息(版本号,sdk版本,包名,屏幕的宽高,系统时间,ip)

问题描述 通过NDK获取手机信息(版本号,sdk版本,包名,屏幕的宽高,系统时间,ip) 5C 通过NDK获取手机信息(版本号,sdk版本,包名,屏幕的宽高,系统时间,ip)求大神解答 解决方案 http://www.2cto.com/kf/201506/407260.htmlhttp://www.xuebuyuan.com/1006760.html

使用Delphi获取系列信息

Delphi以其优良的可视化编程,灵活的Windows API接口,丰富的底层操作越来越受到编程爱好者的青睐. 在Delphi中,通过调用Windows API,可以很方便地获取系统信息,这有助于我们编写出更好的Windows应用程序.以下程序在Delphi3.0 For Windows 9x下编译通过. 一. 用GetDriveType函数获取磁盘信息 Lbl_DriveType:Tlabel; DriveType:WORD; //定义驱动器类型变量 //获得RootPathName所对应的磁

jQuery获取浏览器的名称与版本信息

在jQuery中,通过$.browser对象可以获取浏览器的名称和版本信息,如$.browser.chrome为true,表示当前为Chrome浏览器,$.browser.mozilla为true,表示当前为火狐浏览器,还可以通过$.browser.version方式获取浏览器版本信息. <div id="divtest">             <div class="title">                 <span cl

如何获取php、mysql和apche的版本信息

直接获取PHP的版本 <?php echo "PHP软件版本:".phpversion(); ?> 直接获取MYSQL版本 <?php mysql_connect('127.0.0.1','root',''); echo mysql_get_server_info(); ?> 直接获取Apache版本 <?php $version=apache_get_version(); echo "$version"; ?> 以上是小编为您精

如何获取某个动态链接库的版本信息

我如何获得安装在我的系统上的某个特定的 DLL 的版本信息?我尝试着确定系统安装了哪个版本的 comctl32.dll.我见过有些代码调用 GetProcAddress 来获取各种函数,如 InitCommonControlsEx,以确定基于不同版本的函数调用.对于我来说,这是一个坎儿,到底用什么方法获得版本号? 有两种方法:容易的和难的.容易的方法是调用一个专门用于此目的的函数 DllGetVersion.问题是虽然 comctl32.dll 支持该函数,但并不是所有的 DLLs 都具备它.如