Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Модификация ресурса UpdateResource 21.02.04 12:23 Число просмотров: 1384
Автор: Disappear Статус: Незарегистрированный пользователь
|
Как изменить ресурс версии у EXE файла?
Я делаю так:
DWORD dwSize = GetFileVersionInfoSize(lpszFileName,&dwHandle);
BYTE *lpRes = new BYTE [dwSize];
if (!lpRes) return E_FAIL;
if (GetFileVersionInfo(lpszFileName, dwHandle, dwSize, lpRes) == FALSE)
return E_FAIL;
// ....
if (VerQueryValue(lpRes, "\\StringFileInfo\\040904b0\\ProductVersion", reinterpret_cast<void**>(&lpszProductVersion), &uBlockSize) == FALSE)
return E_FAIL;
//
// меняю lpszProductVersion
//
HANDLE hUpdRes = BeginUpdateResource(lpszFileName, FALSE);
if (hUpdRes == NULL) return E_FAIL;
BOOL bRes = UpdateResource(hUpdRes, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO), MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), lpRes, dwSize);
if (EndUpdateResource(hUpdRes, FALSE) == FALSE|!bRes)
return E_FAIL;
Вроде бы все выполняется нормально, но сам EXE файл не изменяется.
А если, скажем, сделать так
VS_FIXEDFILEINFO *pFixedInfo;
UINT uBlockSize = 0;
if (VerQueryValue(lpRes, _T("\\"), reinterpret_cast<void**>(&pFixedInfo), &uBlockSize) == FALSE)
return E_FAIL;
//
// меняю содержимое полей структуры pFixedInfo
//
тогда версия в EXE файле изменится, но мне нужно изменить строковый параметр ProductVersion
|
- [Win32] Модификация ресурса UpdateResource - Disappear 21.02.04 12:23 [1384]
|
|
|