Ich installiere mein Programm per "Inno Setup".
In das Anwendungsverzeichnis kommen alle
dll´s usw. die firebird embedded benötigt. Die gbak.exe packe ich auch in das Anwendungsverzeichnis.
Unter Inno stelle ich folgendes ein:
Code:
[Files]
Source: "D:\xxx\
db.fdb"; DestDir: "{app}"; Flags: ignoreversion confirmoverwrite; Permissions: authusers-modify;
Für eine Datensicherung rufe ich die gbak.exe wie folgt auf:
Delphi-Quellcode:
var
Quelle, Ziel, Parameter : String;
…
Ziel := ' "' + SaveDialog.FileName + '"';
Parameter := '-v -t -user sysdba -password masterkey '+ Quelle +' '+ Ziel;
ShellExecute(0,nil,PChar(ExeProgramDirectory + 'gbak.exe'),PChar(Parameter),nil,SW_SHOW);
Die Datenwiederherstellung läuft ähnlich, die Datenbankbezeichnung darf allerdings noch nicht vorhanden sein.
Delphi-Quellcode:
var
BackupFile, DatabaseFile, Parameter :
String;
...
Parameter := '
-c -v -user sysdba -password masterkey '+ BackupFile +'
'+ DatabaseFile;
try
ShellExecute(0,
nil,PChar(ExeProgramDirectory + '
gbak.exe'),PChar(Parameter),
nil,SW_SHOW);
except
on E:
Exception do ShowMessage(E.
Message);
end;
Hier erhalte ich die Fehlermeldung ‚Auszug‘:
"gbak: ERROR: I/O error during “CreateFile <create>“ operation for file Datenbankverzeichnis + Datenbankname"
"gbak: ERROR: Error while trying to create file"
"gbak: ERROR: Zugriff verweigert"
"gbak: ERROR: failed to create database Datenbankverzeichnis + Datenbankname"
"gbak: Exiting before completion due to erros"
Denke das hängt mit den Schreibrechten für CSIDL_PROGRAM_FILES zusammen.
Versuche ich jetzt die Datenbank manuell auszutauschen so geht das auch nicht. Bei der Datenbank aus dem Inno Setup steht unter: Rechtsklick – Sicherheit: Authentifizierte Benutzer -> Ändern, Lesen, Ausführen, Schreiben
Kopiere ich die Datenbank einfach in das Anwendungsverzeichnis so fehlt dieser Eintrag Authentifizierte Benutzer. Nur der normal Benutzer ist mit den Rechten -> Lesen, Ausführen vorhanden. Die nur reinkopierte
DB kann ich nicht benutzen.
Frage:
Wie kann ich die embedded
DB gegen eine andere
DB austauschen, für Support oder was auch immer?
Muss die Datenbank doch woanders liegen?
Muss ich andere Rechte in Inno Setup mitgeben?
Grüße
user0815