![]() |
Datenbank: Firebird • Version: 2.5.1 • Zugriff über: UniDAC
Firebird embedded DB austauschen
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:
Für eine Datensicherung rufe ich die gbak.exe wie folgt auf:
[Files]
Source: "D:\xxx\db.fdb"; DestDir: "{app}"; Flags: ignoreversion confirmoverwrite; Permissions: authusers-modify;
Delphi-Quellcode:
Die Datenwiederherstellung läuft ähnlich, die Datenbankbezeichnung darf allerdings noch nicht vorhanden sein.
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);
Delphi-Quellcode:
Hier erhalte ich die Fehlermeldung ‚Auszug‘:
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; "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 |
AW: Firebird embedded DB austauschen
Hallo,
eine Datenbank bzw. alle von allen Nutzern bearbeitbaren Dateien (Inis usw.) gehören in den CommonAppDataPath. Alternativ wäre die DB im Programmverzeichnis über den Firebirdserver problemlos nutzbar (wenn der Connectionstring mit localhost bzw. der IP aufgebaut wird) Grüße |
AW: Firebird embedded DB austauschen
gut, werde die DB in folgendes Verzeichnis packen:
Code:
Muss ich noch was beachten?
[Dirs]
Name: "{commonappdata}\{#MyAppName}\database\"; Permissions: authusers-modify; Meine muss ich z.B. in der "firebird.conf" das RootDirectory setzen? Wenn ja kann ich das schon im Inno Setup erledigen, und wenn ja wie? Bleiben die dll´s usw. im EXE Verzeichnis? |
AW: Firebird embedded DB austauschen
Alles, was vom Benutzerkonto bearbeitet werden soll (Datenbank, Einstellungsdateien usw.) muss ins CommonAppData.
Alles was zum Programm gehört (Exe, DLLs, firebird.conf (weil diese nur vom Administrator geändert werden sollte)) gehört ins Programmverzeichnis. die firebird.conf musst du eigentlich nicht ändern. |
AW: Firebird embedded DB austauschen
Abgesehen davon, daß die Daten nicht ins Programmverzeichnis gehören, macht mich die Fehlermeldung stutzig
Zitat:
Datenbankverzeichnis + Datenbankname ist schon ein wenig seltsam. Gruß K-H |
AW: Firebird embedded DB austauschen
Zitat:
Alles was NUR vom Benutzer bearbeitet werden soll kommt ins UserAppData, das was von allen bearbeitet werden soll ins CommonAppData. Wobei das "UserAppData" auch vom Programm erstellt werden sollte und nicht zwingend durchs Setup (außer dass das wirklich nur von dem einen Benutzer bedient werden können soll) Grüße |
AW: Firebird embedded DB austauschen
Richtig. Ich schrieb "Benutzerkonto" um den Unterschied zum Administratorkonto deutlich zu machen. Hat wohl nicht ganz geklappt ;-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz