A ver, si no he entendido mal, la situación es esta:
Código:
ComprobarVersionEjecutable (1)
si (VersionAntiguaEjecutable) entonces
CopiarEjecutable
CopiarFicheroINI
sino
ComprobarSiInstaladoInterbase (2)
si not (InstaladoInterbase) entonces
InstalaInterbase
fin
CopiarEjecutable
CopiarBaseDatos
fin
(Acabo de recordar mis tiempos de pseudocódigo en la facultad...
)
(1) Para comprobar la versión del EXE tienes dos posibilidades:
(a) Que en el ejecutable esté la información de versión; Si está la info de version puedes acceder a ella con
GetFileVersionInfo; Revisa el
truco 31, que hay en la sección de trucos.
(b) Si el ejecutable no tiene info de versión deberás hacerlo por fecha; Para acceder a las fechas de un fichero puedes ver el
truco 72 en la seccion de trucos.
NOTA: Para saber si un EXE tiene esa información, puedes acceder a las propiedades desde el explorador de Windows. Prueba con unos cuantos ejecutrables de tu máquina y verás que en algunos esa información está rellenada y en otros no.
(2) Saber si InterBase está instalado:
Puedes comprobar las siguientes claves del registro, que son justo las qwue se crean cuando se instala Interbase desde un Inno Setup (el instalador de Interbase debe hacer lo mismo).
[Registry]
Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: InterBaseGuardian; ValueData: {app}\bin\ibguard.exe; Flags: uninsdeletekey
Root: HKLM; Subkey: Software\Borland\InterBase\CurrentVersion; ValueType: string; ValueName: DefaultMode; ValueData: -r
Root: HKLM; Subkey: Software\Borland\InterBase\CurrentVersion; ValueType: string; ValueName: GuardianOptions; ValueData: 1
Root: HKLM; Subkey: Software\Borland\InterBase\CurrentVersion; ValueType: string; ValueName: ServerDirectory; ValueData: {app}\bin
Espero que te sirva.
Un saludo.