/// 버전 리소스 사이즈 얻기
DWORD dwHandle = 0;
DWORD dwSize = ::GetFileVersionInfoSize(szFilePath, &dwHandle);
/// 버전 리소스 정보 얻기
LPBYTE lpBuffer = new BYTE[dwSize];
::ZeroMemoty(lpBuffer, dwSize);
::GetFileVersionInfo(szFilePath, 0, dwSize, lpBuffer);
/// 리소스 핸들 얻기
HANDLE hResource = ::BeginUpdateResource(szFilePath, FALSE);
/// 리소스 정보 갱신
::UpdateResource(hResource, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO), wTanslationL/*LCID*/, lpBuffer, dwSize);
::EndUpdateResource(hResource, FALSE);
/// 버전 스트링 정보 읽기
::VerQueryValue(lpVSVersionInfo, szPath, &lpInfo/*out*/, &dwInfoLen/*out*/)
CString strData = (TCHAR*)lpInfo;
/// Translate code 구성
LCID, Code Page
lcid 와 code page 를 이용해 스트링 정보의 주소를 추출한다.
정보를 읽을때는 API 를 이용하여 읽기가 가능하지만 버전 정보의 추가 삭제 변경을 위해서는
데이터의 앞에 자신이 가진 Value의 길이 값이 들어가기 때문에 버퍼 클래스가 필요하다.
버퍼클래스는 아래의 코드에서 vs_version.h 부분 을 참고 하면 된다.
댓글 없음:
댓글 쓰기