Ver Mensaje Individual
  #5  
Antiguo 26-10-2023
javier14 javier14 is offline
Miembro
 
Registrado: ago 2023
Posts: 12
Reputación: 0
javier14 Va por buen camino
procedure TForm1.CambiarVersionArchivo(const nombreArchivo: string;
nuevaVersion: string);
var
info: VS_FIXEDFILEINFO;
handle, len: DWORD;
datos, ptr: PChar;
errorCode: DWORD;
nuevaVersionInt: Integer;
begin
nuevaVersion := nuevaVersion.Replace('.', '');
nuevaVersion := nuevaVersion.PadRight(4, '0');
nuevaVersion := nuevaVersion.PadLeft(8, '0');
nuevaVersionInt := FileVersionToInteger(nuevaVersion);

handle := BeginUpdateResource(PChar(nombreArchivo), False);
if handle = 0 then
RaiseLastOSError;

len := GetFileVersionInfoSize(PChar(nombreArchivo), handle);
if len = 0 then
begin
EndUpdateResource(handle, False);
RaiseLastOSError;
end;

datos := AllocMem(len);
try
if not GetFileVersionInfo(PChar(nombreArchivo), handle, len, datos) then
begin
EndUpdateResource(handle, False);
RaiseLastOSError;
end;

if VerQueryValue(datos, '\', Pointer(ptr), len) then
begin
Move(ptr^, info, SizeOf(info));

info.dwFileVersionMS := nuevaVersionInt;
info.dwFileVersionLS := nuevaVersionInt;

if not UpdateResource(handle, RT_VERSION, PChar(1), 0, datos, len) then
begin
errorCode := GetLastError;
ShowMessage('UpdateResource Error: ' + IntToStr(errorCode));
EndUpdateResource(handle, False);
RaiseLastOSError;
end;
end
else
begin
errorCode := GetLastError;
ShowMessage('VerQueryValue Error: ' + IntToStr(errorCode));
EndUpdateResource(handle, False);
RaiseLastOSError;
end;

if not EndUpdateResource(handle, False) then
begin
errorCode := GetLastError;
ShowMessage('EndUpdateResource Error: ' + IntToStr(errorCode));
RaiseLastOSError;
end;
finally
FreeMem(datos);
end;
end;

Algo asi? No termina de funcionar pero debe ser algo por el estilo
Responder Con Cita