关于软件版本的问题(100分)

  • 主题发起人 主题发起人 TENTODBV
  • 开始时间 开始时间
T

TENTODBV

Unregistered / Unconfirmed
GUEST, unregistred user!
常见的共享软件都有一个版本号,如1.5.1.0。
请问这些版本号是作者自己每次升级后手工修改的呢还是根据设定好的一些规则(如重新编译了多少次)由Deiphi控制的呢?
若我在自己写的程序的帮助菜单的“关于本软件”菜单项中,用以下代码显示程序版本
ShowMessage('我的软件 版本 '+strVersion);
我希望其中的strVersion是在程序中用GetVersion代码自动获取的程序版本信息(当然GetVersion是我虚构出来的).请问delphi中有类似GetVersion这样的函数吗?
 
这些版本号都是自己手动添加上去的。在Project->Options里面可以设置
至于你说的那个函数,就不知道了。-_-[:(]
 
版本?由自己控制,delphi控制都成,都是骗人的把戏
 
是作者自己控制,但有一定的规则,
比如功能的增加,修改整数部分,小功能修改小数部分,bug 的修订要
修改小数后的小数等等 ,
但如果你愿意,可以自定 , 又是作者个人严谨的问题 ,没有定论 。
 
function GetBuildInfo(FName: string): string;
var
VerInfoSize: DWORD;
VerInfo: Pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
dwProductVersionMS,dwProductVersionLS:DWORD;
begin
Result:='';
VerInfoSize := GetFileVersionInfoSize(PChar(FName), Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, '/', Pointer(VerValue), VerValueSize);
with VerValue^do
begin
dwProductVersionMS := dwFileVersionMS;
dwProductVersionLS := dwFileVersionLS;
Result :=Format('%d.%d.%d.%d', [
dwProductVersionMS shr 16,
dwProductVersionMS and $FFFF,
dwProductVersionLS shr 16,
dwProductVersionLS and $FFFF
]);
end;

FreeMem(VerInfo, VerInfoSize);
end;

调用:如
Label1.Caption:=GetBuildInfo(ParamStr(0));
转自大富翁
 
有这方面的规范吗?哪怕是约定俗成的也好。
 
谢谢 yczjs,我试了一下您的函数,看来是可以的。我可用分数不多,这次一下子给了100分,想多问一点关于软件版本的问题后才结贴。
我看了Project下的version info下的版本号信息,分为Major version,Minor version,Release,Build 四个部分。哪位能解释一下各部分的含义,特别是Release和Build。各部分在什么情况下需要作出改变?我想Build应该是经常变动的,那Build版本是作者每次自己修改还是说有什么办法由Delphi控制。有没有什么工具软件是专门进行软件版本信息管理的?
 
Index Name Internal_Value Character_Value
------ -------------------------------- -------------- ------------------------------------------------------------------------------------------------------------------------
1 ProductName NULL Microsoft SQL Server
2 ProductVersion 524288 8.00.760
3 Language 2052 中文(中国)
4 Platform NULL NT INTEL X86
5 Comments NULL NT INTEL X86
6 CompanyName NULL Microsoft Corporation
7 FileDescription NULL SQL Server Windows NT
8 FileVersion NULL 2000.080.0760.00
9 InternalName NULL SQLSERVR
10 LegalCopyright NULL ? 1988-2003 Microsoft Corp. All rights reserved.
11 LegalTrademarks NULL Microsoft? is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Corporation
12 OriginalFilename NULL SQLSERVR.EXE
13 PrivateBuild NULL NULL
14 SpecialBuild 49807360 NULL
15 WindowsVersion 248381957 5.2 (3790)
16 ProcessorCount 1 1
17 ProcessorActiveMask 1 00000001
18 ProcessorType 586 PROCESSOR_INTEL_PENTIUM
19 PhysicalMemory 247 247 (259510272)
20 Product ID NULL NULL
(所影响的行数为 20 行)
选项/列名 描述
ProductName 产品名,如 Microsoft SQL Server。
ProductVersion 产品版本,如 7.00.419,其中 7.00 是版本,419 是 Microsoft 内部版本号码。
Language SQL Server 的语言版本。
Platform 运行 SQL Server 的计算机的操作系统名、厂商名以及芯片家族名。例如,NT INTEL X86 表示 Microsoft Windows NT®
的操作系统名,Intel 表示芯片的生产厂商名,并且是 486 或是更高级别的处理器。
Comments 有关 SQL Server 的杂项信息。
CompanyName 生产 SQL Server 的公司名,如 Microsoft Corporation。
FileDescription 操作系统。
FileVersion SQL Server 可执行文件的版本。例如,1998.02.01 表示 Sqlservr.exe 文件的文件版本是 1998 年 2 月 1 日。
InternalName SQL Server 在 Microsoft 内部的名称,如 SQLSERVR。
LegalCopyright SQL Server 所需的合法版权信息;如 Copyright©
Microsoft Corp. 1998。
LegalTrademarks SQL Server 所需的合法商标信息。如,Microsoft®
是 Microsoft Corporation 的注册商标。
OriginalFilename SQL Server 启动时执行的文件名,如 Sqlservr.exe。
PrivateBuild 保留。
SpecialBuild 保留。
WindowsVersion 运行 SQL Server 的计算机上安装的 Microsoft Windows 版本。例如,4.0 表示 Microsoft Windows NT 的版本是 4.0,1381 表示内部版本号码。
ProcessorCount 运行 SQL Server 的计算机中安装的处理器数量。
ProcessorActiveMask 表明在运行 SQL Server 的计算机中安装的哪些处理器为 Microsoft Windows NT 所激活并且可用。
ProcessorType 处理器类型。类似于 Platform。
PhysicalMemory 运行 SQL Server 的计算机上安装的 RAM 容量(以 MB 为单位)。例如,32 表示 32 MB 的 RAM。
Product ID Product ID (PID) 号,该号码在安装过程中指定。该号码印在 SQL Server 原始光盘盒的不干胶标签上。

 
单纯对于一个软件的版本号,可以自己来确定如何使用。以下是我们的一个软件确定的基本规则。
========================================
关于版本号的说明:
对一个具体程序版本号共四位,
第一位为主版本号,在程序进行重大变更,如实现技术发生改变,或者变更巨大的时候才会增长;
第二位为次版本号,在程序变更比较大的时候,如变更导致部分程序实现发生改变时才会增长;
第三位为发行版本号,每发行一次增加1,标志软件发行次数。当主版本和次版本增长后,发行版本会归零;
第四位为编译版本号,属于内部的小版本号,只是简单的标志编译次数,对客户表现为无序增长。
========================================
对于bugzilla(一个bug管理软件,这里仅仅是举例),是对外提供3位的版本号。
第一位:软件的大版本号。
第二位:软件的发行主版本号,奇数为最新版,偶数为稳定版。
第三位:和第二位相关,属于小版本号,当第二位增长后,第三位归零。
如:目前该软件最新版本为:2.17.6,稳定版本为: 2.16.4
 
多人接受答案了。
 
后退
顶部