Moin!
Innerhalb der [Files]-Section hast du beispielsweise:
Source: develop\exe\test.exe; DestDir: {app}\bin; Flags: overwritereadonly; Components: dbserver; Check: IsDBInstalled
"IsDBInstalled" definierst du als Funktion mit Rückgabewert boolean.
Sofern die Funktion "true" zurückgibt, wird der Eintrag kopiert.
Delphi-Quellcode:
function IsDBInstalled() : Boolean;
var
sFbVersion: String;
begin
Result := false;
// nun kommt der Test. Registry abfragen / Filesystem prüfen etc.
// keine Ahnung welcher Registry-Eintrag bei Firebird zu nutzen ist, dient nur
// als Beispiel, hab grad mal bei mir geschaut
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Firebird Project\Firebird Server\Instances',
'DefaultInstance', sFbVersion) then
begin
if length( sFBVersion ) > 0 then
Result := true
else
Result := false;
end
else
Result := false; // kein Firebird?
// Filesystem prüfen...
// etc.
end;
Wie gesagt, Du solltest besser ein Flag in der Method "InitializeWizard" oder "InitializeSetup" setzen, um den Check nur 1x durchführen zu müssen. Ansonsten würde der für jedes File, dass Du kopierst durchgeführt. Du kannst das Flag natürlich auch innerhalb Deiner IsDBInstalled setzen und dann für fortwährende Aufrufe merken, aber das bleibt Dir überlassen
Schönen Tag,
Markus