怎样获得软件的版本信息
2014-01-08 22:55
267 查看
哎,怒抢了一天火车票,愤怒了一天,艾希,马上有票!
自动更新方案中,大部分的思路是启动更新程序,自动更新程序自动下载远处server 维护的版本文件,该文件中保存最新的版本号,如1.1.1.1之类。下载之后更新程序会比较当前软件和远程server的版本号,如果版本低于远程server版本则启动下载升级程序,下载最新的程序,其中,就有一个过程,怎么获取当前软件的版本。用户可以从软件的描述文件或者属性查看到版本信息,利用windows提供的API中三个函数,GetFileVersionInfoSize,GetFileVersionInfo,VerQueryValue.通过程序方法得到版本号,here是最简单的一种。
通过制定VerQueryValue()的第二个参数为特定的TEXT(''\\'')
自动更新方案中,大部分的思路是启动更新程序,自动更新程序自动下载远处server 维护的版本文件,该文件中保存最新的版本号,如1.1.1.1之类。下载之后更新程序会比较当前软件和远程server的版本号,如果版本低于远程server版本则启动下载升级程序,下载最新的程序,其中,就有一个过程,怎么获取当前软件的版本。用户可以从软件的描述文件或者属性查看到版本信息,利用windows提供的API中三个函数,GetFileVersionInfoSize,GetFileVersionInfo,VerQueryValue.通过程序方法得到版本号,here是最简单的一种。
通过制定VerQueryValue()的第二个参数为特定的TEXT(''\\'')
#pragma comment(lib,"version.lib") #pragma comment(lib,"strsafe.lib") #include"tchar.h" #include"windows.h" #include "strsafe.h" //typedef struct String{ //WCHAR FileVersion[20]; //}VersionString; void main() { WCHAR lpstrFilename[260]=_T("C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe");//测试 DWORD dwHandle = 0; DWORD dwVerInfoSize = GetFileVersionInfoSize(lpstrFilename, &dwHandle);//得到文件版本信息大小 if (dwVerInfoSize) { LPVOID lpBuffer = LocalAlloc(LMEM_ZEROINIT, dwVerInfoSize);//申请一段空间 TCHAR *lpoutFileVerNum=new TCHAR[dwVerInfoSize+1]; if (lpBuffer) { if (GetFileVersionInfo(lpstrFilename, dwHandle, dwVerInfoSize, lpBuffer))//如果得到版本信息成功,lpBuffer里存放了版本文件信息 { // Read the list of languages and code pages. UINT cbTranslate = 0; DWORD dwMajorVersion =0, dwMinorVersion = 0; DWORD dwBuildNumber =0, dwRevisionNumber = 0; // Retrieve file version number VS_FIXEDFILEINFO * lpFixedFileInfo = NULL;//采用第一中方案时,版本信息保存在此结构体中; UINT nFixedFileInfoSize = 0; if (VerQueryValue(lpBuffer, TEXT("\\"), (LPVOID*)&lpFixedFileInfo, &nFixedFileInfoSize)/* &&(nFixedFileInfoSize)*/)// TEXT("\\")表示只查询buffer中vFileVersion段 { dwMajorVersion = HIWORD(lpFixedFileInfo->dwFileVersionMS); dwMinorVersion = LOWORD(lpFixedFileInfo->dwFileVersionMS); dwBuildNumber = HIWORD(lpFixedFileInfo->dwFileVersionLS); dwRevisionNumber = LOWORD(lpFixedFileInfo->dwFileVersionLS); } StringCchPrintf( lpoutFileVerNum , 260 , TEXT(" %d.%d.%d.%d") , dwMajorVersion , dwMinorVersion , dwBuildNumber , dwRevisionNumber ); } // lpoutFileVerNum存放了版本号。如9.0.0.0 //如果需要,可以返回 return lpoutFileVerNum; delete lpoutFileVerNum; } LocalFree(lpBuffer); } } ////////////////////////////////////////////////////////////////////
相关文章推荐
- 获得软件版本信息
- 怎样获得访客的IP,系统,IE版本等信息并显示在IE代码
- 获得软件版本信息
- Android 怎样获得手机信息(四)
- 得到系统信息和得到应用软件的版本
- 怎样获得你的系统中使用的C++标准库的版本
- 怎样让多个版本的JDK在系统环境中被不同依赖软件识别
- C#:获得文件版本信息及只读文件的删除
- Android 怎样获得手机信息(四)
- 让软件版本信息自动引用SVN修订版本号
- 获得文件版本信息
- 获得文件版本等信息
- 说说软件当中的版本信息
- vc 得到软件的版本信息 资源文件中的../Version/VS_VERSION_INFO/FILEVERSION的值
- 软件Release 版本 Crash 堆栈信息收集
- ubuntu下升级特定软件与查看软件版本信息
- .Net Framework中获得Windows目录、机器名、操作系统版本信息等系统环境信息
- vc mfc代码中获得程序资源中版本信息的方法
- 获得当前Windows操作系统版本的详细描述信息
- windows8 开发获得系统 app相关信息代码 c#版本