FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Cambiar Versión Ejecutable
Necesito un procedimiento que pasado un archivo ejecutable por parámetro le cambie el FILE VERSION. (No es cambiar la versión en el programa que estoy, sino en otro ejecutable)
|
#2
|
||||
|
||||
Para obtener la información del ejecutable puedes empezar por las APIs: GetFileVersionInfoand VerQueryValue (esta información puedes obtenerla de la wiki de embarcadero https://docwiki.embarcadero.com/RADS...n/Version_Info).
Para actualizarlo con el nuevo valor, revisa las APIs, BeginUpdateResource, UpdateResource y EndUpdateResource.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
Lo llamo en el OnClick del botón: CambiarVersionArchivo('C:\Users\javier\myfile.exe', '6.7.8.9'); Pero me salen los errores: Primero: Cita:
Cita:
Última edición por dec fecha: 26-10-2023 a las 12:15:36. Razón: Poner etiquetas DELPHI y QUOTE |
#4
|
||||
|
||||
Veo los BeginUpdate... y los EndUpdate..., pero no veo por ningún sitio la llamada a UpdateResource.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
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 |
#6
|
||||
|
||||
Por favor, no olvides usar las etiquetas para código:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
|||
|
|||
Cambio FileVersion Ejecutable
Sabéis porque no cambia el FileVersion? Es lo único que no se modifica...
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cambiar datos (en runtime) de la versión de un ejecutable | dec | API de Windows | 4 | 26-10-2023 18:40:24 |
Saber la versión de un ejecutable | MAXIUM | API de Windows | 2 | 23-08-2014 05:04:59 |
Obtener la versión del ejecutable de una aplicación | dec | Trucos | 1 | 20-02-2009 10:30:31 |
como puedo hacer para cambiar un archivo de excel con versión 2.1 a versión 8.0 | RONPABLO | Servers | 4 | 23-01-2006 07:02:38 |
Leer versión de un archivo ejecutable | FerPetrei | Windows | 2 | 16-01-2004 21:41:42 |
|