给Delphi程序添加版本信息(EXE和Dll)
我们在用Delphi编译完程序,准备发布产品时,总希望随产品发布个性信息以标示产品的来源以及开发者等信息,就像windows的程序一样,使我们一看属性就知道他是微软的产品,这些在Delphi中是如何实现的呢?下面我就来给大家演示和说明给exe,dll文件添加版本信息的方法。
第一,给exe文件添加版本信息。
这个我想大家都会添加的,Delphi已经给我们提供了相关选项了. 具体做法:打开你的工程,选择菜单Project-->Options...--->Version info 选中"Include version infomation in project",然后你就可以添加具体版本信息了,编译你的工程,看生成的exe文件属性,发现已经有了你自己的版本信息了。
第二,给dll文件添加版本信息。
如何给自己的dll文件添加版本信息呢?如果按照上面的方法的话你会发现,在"Include version infomation in project"你是不能选择的,难道我们真的没办法吗?答案是利用资源文件,微软早已经为我们做好了准备.下面是一个具体的例子。
首先建立一个文件后缀为.rc(以ver.rc为例),用记事本打开,拷贝下面内容:
VS_VERSION_INFO VERSIONINFO //版本信息结构
FILEVERSION 1,0,0,1 //顾名思义文件版本,就是在属性页版本上面显示的|
PRODUCTVERSION 1,0,0,1 //顾名思义产品版本 |这里是主版本信息
FILEFLAGSMASK 0x3fL //这里设为0x3fL就好了 |
#ifdef _DEBUG
FILEFLAGS 0x1L //VS_FF_DEBUG包括debug信息
#else
FILEFLAGS 0x0L //无
#endif
FILEOS 0x4L //对应于delphi中VOS__WINDOWS32,说明程序是win32程序
FILETYPE 0x2L //文件类型,$2是dll,$1是exe
FILESUBTYPE 0x0L //文件子类型,一般设为0即可
BEGIN
BLOCK "StringFileInfo" //这里设置文件其他的版本信息(详细信息)
BEGIN
BLOCK "080403A8" //所用语言080403A8简体中文,040904b0英语(美国)
BEGIN
VALUE "Comments", "My Dll Application test" //备注
VALUE "CompanyName", "JJony" //公司名
VALUE "FileDescription", "xxx.dll" //产品描述
VALUE "FileVersion", "1. 0. 0. 1" //文件版本
VALUE "InternalName", "" //内部名称
VALUE "LegalCopyright", "Copyright (C) 2006.6" //版权信息
VALUE "OriginalFilename", "xxx.dll" //源文件名
VALUE "ProductName", "xxx.dll" //产品名
VALUE "ProductVersion", "1. 0. 0. 1" //产品版本
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 0x03A8 //这里是关键哦,决定了是什么语言
END //0x0804, 0x03A8简体中文
END //0x0409, 0x04b0英语(美国)
你看出了什么没有,实际上就是填充了delphi中的VS_VERSIONINFO和VS_FIXEDFILEINFO结构,只不过这里面的语言格式是VC的罢了:)
把上面存为.rc文件(以ver.rc为例)。拷贝delphi7binbrcc32.exe到你的程序目录,再建立ver.bat,输入:brcc32 ver.rc 保存。双击运行ver.bat,生成ver.res,然后在你的dll工程里添加资源{$R ver.res} 重新编译dll,你会发现dll也有了自己的版本信息了。
http://blog.csdn.net/zisongjia/article/details/68927919
给Delphi程序添加版本信息(EXE和Dll)的更多相关文章
- 怎么给qt程序添加版本信息
windows下的可执行文件的属性中有版本这个信息,她含有版本信息,描述,版权等等.对于qt的程序,要含有这样的信息,该怎么办呢?那就如下操作吧:新建***.rc文件,在rc文件填入下的信息 #if ...
- Qt给应用程序添加版本信息(对rc文件的设置,可利用QT内置变量)
作者:daodaoliang 时间:2016年7月11日16:12:09 版本:V 0.0.4 邮箱:daodaoliang@yeah.net 0. 环境说明 系统环境: win10 64位 Qt环境 ...
- 使用pyinstaller 2.1将python打包并添加版本信息和图标
最近用 wxpython写了一个小的脚本,因为想要发布给没有装python和wxpython的人使用,遂决定使用pyinstaller 2.1进行打包. 其中遇到几个问题: 1,给打包的文件添加图标 ...
- Delphi程序调用C#.Net编译的DLL并打开窗体(详解)
Delphi程序调用C#.Net编译的DLL并打开窗体(详解)最近用C#.Net写了一个公用模块, 本以为仅提供给.Net程序使用, 但是领导要求把这些功能提供给旧系统使用, 天啦, 几套旧系统全是D ...
- 给Qt生成的exe执行程序添加版本信息
Windows下的.exe可执行文件的属性中有版本这个信息,含有版本信息.描述.版权等.对于qt程序,要含有这样的信息,那就请如下操作:新建<工程名>.rc文件,在rc文件填入下的信息: ...
- 如何给 Inno Setup 生成的安装包添加版本信息
使用 Inno 已有的函数 GetFileVersion 获取 EXE 文件的版本 #define ApplicationName 'Application Name' #define Applica ...
- 为delphi程序添加脚本功能,用脚本控制delphi程序
使用微软的ActiveX Scripting技术,可以在应用程序中集成使用vbscript或这javascript脚本语言.在delphi中点击Component菜单的Import Activex C ...
- 如何给 Visual Studio 的输出程序添加版本信息
出处:https://stackoverflow.com/questions/284258/how-do-i-set-the-version-information-for-an-existing-e ...
- 给编译出的程序添加图标(exe的图标)
安装依赖: go get github.com/akavel/rsrc 在对应程序的源码路径下创建manifest文件,图标也要放进去(xxx.ico), 命名:main.exe.manifest : ...
随机推荐
- Vert.x ——概述
Vert.x是什么 Vert.x(http://vertx.io/)是一个基于JVM.轻量级.高性能的应用平台,非常适用于最新的移动端后台.互联网.企业应用架构. Vert.x框架基于事件和异步,依托 ...
- AE控制图层中要素可见状态的几种方法
转自原文 AE控制图层中要素可见状态的几种方法 工作中常有这样的需求,一个作业图层由几个作业员来操作,我们要 控制每一个作业员只能看到他负责的区域.作业员的可见区域控制有时候是按空间区域划分,有时候是 ...
- BZOJ 2096 Pilots - 单调队列STL(deque)
传送门 分析: 单调队列:维护两个递增.递减的队列,每次都加入新元素并更新,如果最大值(递减队首)-最小值(递增队首) > k,那么将最左段更新为前面两者中较前的那一个,并弹掉.用deque可以 ...
- window.load和ready的差别
1.运行时机: window.onload:必须等待网页所有加在完成(包含图片等),然后再运行包裹代码 $(document).ready():仅仅须要等待网页中的DOM结构载入完成.就能运行包裹的代 ...
- oracle 全部查询和表空间,以及其关系
select * from dba_users; 查看数据库里面全部用户,前提是你是有dba权限的帐号.如sys,system select * from all_users; 查看你能管 ...
- 使用Ant包装时,包javax.servlet.http有没有搞错
明确,出现此错误的原因是缺乏相应的jar包.详细原因因为servlet和JSP不是Java平台JavaSE(标准版)的一部分.而是Java EE(企业版)的一部分,因此,必须告知编译器servlet的 ...
- Max-Min Fairness带宽分配算法
近期再写一个网络仿真器,里面參考了Max-MinFairness算法,这是一种比較理想.公平的带宽分配算法.其思路主要例如以下:首先是算法的准备,考察某一时刻的网络中全部的flow,因为每条flow都 ...
- Qt多线程和GUI界面假死(run()是线程的入口,就像main()对于应用程序的作用。分析QThread::exec函数的源码,旧的QMutexLocker模式其实很好用,挡住别人进入抢占资源,可照抄)good
QThread的常见特性: run()是线程的入口,就像main()对于应用程序的作用.QThread中对run()的默认实现调用了exec(),从而创建一个QEventLoop对象,由其处理该线程事 ...
- Android菜鸟的成长笔记(24)——Android中的振动器
在某些时候,程序需要启动系统振动器,比如手机静音时使用振动提示用户:再比如玩游戏时,当系统碰撞.爆炸时使用振动带给用户更逼真的体验等.总之,振动是除视频.声音之外的另一种"多媒体" ...
- React为啥很多类里的标签上事件处理函数要用bind(this)
render() { return ( <div> <p onClick={this.clickHandler.bind(this)}>vz</p> </di ...