2008/02/26

실행파일 자신의 버전을 알아오기

프로그램의 About 대화상자에 파일의 버전 번호를 넣는 경우가 흔한데, 이때 Static 컨트롤에 직접 작업을 하여서 기록할 경우 버전 리소스는 수정을 하고 About 대화상자에는 수정을 하지 않는 실수를 종종하는데 이를 방지하기 위해 실행파일의 버전을 읽어와서 About 대화상자에 동적으로 바뀌게 하면 이런 실수를 방지할 수 있다.


#pragma comment(lib, "winmm")
#pragma comment(lib, "version")


DWORD nullHandle, length;
int Version[4] = {1, 0, 0, 0};

TCHAR fileName[MAX_PATH];

GetModuleFileName(NULL, fileName, sizeof(fileName));

length = ::GetFileVersionInfoSize(fileName, &nullHandle);

if (length > 0) {
BYTE *pVerInfo = new BYTE [length];

if (::GetFileVersionInfo (fileName, NULL, length, pVerInfo)) {
UINT verLength;
LPVOID versionPtr;

if (::VerQueryValue(pVerInfo, _T ("\"), &versionPtr, &verLength))
{
VS_FIXEDFILEINFO vi = *(VS_FIXEDFILEINFO*)versionPtr;

// Major 1
Version[0] = vi.dwFileVersionMS>>16;

// Major 2
Version[1] = (vi.dwFileVersionMS<<16)>>16;

// Minor 1
Version[2] = vi.dwFileVersionLS>>16;

// Minor 2
Version[3] = (vi.dwFileVersionLS<<16)>>16;
}
}

delete pVerInfo;
}

CString strProgTitle;
strProgTitle.Format(_T("App v%d.%d.%d.%d"),
Version[0], Version[1], Version[2], Version[3]);

Original Post : http://neodreamer-dev.tistory.com/68

No comments :

Post a Comment