![]() |
Frage zu InstallShield Pfadname für Alias
Hallo!
Im BDE Designer des Installshield muss ich ja auch den Aliaspfad für die Datenbank angeben. Aber das müsste ja ein relativer Pfad sein, damit man die Datenbank installieren kann, wo man will. Ich kann das zwar im Nachhinein noch über den BDE Admin ändern, aber das kanns ja nicht sein. Wie geb ich das im Installshield ein, dass der Aliaspfad gleich bei der Installation richtig gesetzt wird? Gruß Gambit |
Das Einrichten des Alias würde ich nicht von InstallShield machen lassen. Meine Erfahrungen damit waren sehr negativ, mal hat es geklappt, mal nicht. Dann haben Anwender Programme deinstalliert und dann waren die Einstellungen wieder weg......
Schaue aber mal hier: ![]() Da ist unter anderem gezeigt, wie man mit einen kleinen Delphi-Tool das während der Installation mit InnoSetup erledigen kann. Darauf will ich aber gar nicht hinaus. Ich würde den Alias immer beim Programmstart prüfen und dann, wie in dem Beispiel gezeigt, bei Bedarf neu setzen. Dann hast du den ganzen Support-Kram schon mal weg. Wenns bis Montag Zeit hat, dann kann ich Dir auch mal meine CheckAlias-Routine senden, die ist ein wenig umfangreicher. |
Moin Mario,
mag sein, dass es mit Inno wunderbar geht, aber gemäss der Lizenzbedingungen von Borland darf die BDE nur mit zugelassenen Tools installiert werden (siehe Deploy.txt), und Inno gehört meines Wissens (leider) nicht dazu. |
Zitat:
|
Moin Mario,
wenn ich sehe, dass es immer wieder Probleme mit InstallShieldExpress und der BDE gibt, und immer wieder Lösungen für Inno, sollten sich die Betroffenen vielleicht mal zusammentun, und versuchen bei Borland Inno als zulässig durchzusetzen. Sachliche Argumente die dafür sprechen scheint's ja zu geben. |
Erstmal Danke für die Tipps!
@Mario: Also bis Montag hat das Ganze gerne Zeit, kein Problem. Was mich aber erstmal interessieren würde ist, wie es denn mit Installshield überhaupt gedacht ist. Man wählt doch in dem BDE Konfig Tool den Alias aus. Dann hab ich hier zb unter "Alias bearbeiten" folgendes Fenster über dem steht: "Parameter überschreibt:" und in dem Fenster folgende Einträge: PATH=D:\DVD Datenbank ENABLE BCD=FALSE DEFAULT DRIVER=PARADOX So, das heißt, wenn ich mein Programm unter D:\DVD Datenbank installiere, wird auch der Aliaspfad richtig gesetzt. Aber nur dann und es muss doch eine Möglichkeit geben, dass der Aliaspfad bei der Installation so gesetzt wird, dass er auch passt, wenn der User das Proggy irgendwo installiert nach seiner Wahl. Das ist es was ich nicht raffe. Gambit |
Hallo Gambit,
ich kann Dir nur sagen, wie es bei WISE ist. Da setze ich anstelle des des festen Pfadnamens eine Variable ein. Ich habe daraufhin mal auf meinem Notebook gesucht und tatsächlich eine ISE-Installation entdeckt und mal nachgeschaut. Versuche doch mal bei der Angabe von PATH den Wert [INSTALLDIR] einzugeben! |
Kann ich mal machen. Ich hatte es mit <INSTALLDIR> versucht, das geht nicht...
Gruß Gambit |
btw, könnte ich nicht einfach auch meine DB in ein Unterverzeichnis installieren lassen und bei der Programmerstellung bei Databasename .\Unterverzeichnis angeben? Was würde denn dagegen sprechen?
Gambit |
Dagegen spricht nichts, ganz im Gegenteil. IMHO ist das die bessere Variante. Vor allem dann, wenn Du nicht nur eine Paradox-Tabelle hast! Also installieren der Tabelle in Unterverzeichnis (z.B. Datenbank). Die Pfadangen für die BDE sollte dann so aussehen:
Code:
PATH=[INSTALLDIR]\Datenbank
|
Das bringt mich jetzt wieder etwas durcheinander. Einen Pfad für die BDE in Installshield kann ich doch nur angeben, wenn ich einen Alias wähle. Und den bräuchte ich doch in der Variante gar nicht mehr.
Gambit |
Das ist nicht der Pfad für die BDE sondern der Pfad, in dem die BDE Deine Paradox-Tabelle(n) findet. Und das mußt Du sehr wohl beim Anlegen des Aliases angeben. Und bei einer Installation auf einen anderen PC mußt Du der dortigen BDE natürlich mitteilen, wo sei die Tabellen suchen soll, die zu dem Alias gehören.
|
Ich wollte es ja jetzt eigentlich ganz ohne Alias machen. Geht das nicht?
Gambit |
Das geht auch. Dann solltest Du aber in Deinem Programm die Pfadangabe für die DB-Tabelle variabel gestalten (z.B. aus der einer INI-Datei oder der Registry einlesen)! Ich würde aber bei BDE-Nutzung der Verwendung eines Alias-Namens den Vorzug geben.
|
Ich fasse es nicht. Das Programm läuft jetzt nach der Installation aber nur, wenn ich es aus dem Installationsordner heraus starte. Starte ich es über den Eintrag des Startmenus läuft es nicht, Fehlermeldung von Windows Blahblah hat einen Fehler verursacht und muss beendet werden. Lösche ich die Verknüpfung und lege ich die Verknüpfung neu an gehts wieder.
Das soll mal einer raffen, zumal in der neuen Verknüpfung exakt das Gleiche drinsteht. Gambit |
Zitat:
|
Och, mmhh, muss ich mal gucken. Aber soviel ich weiß, kann man da in Installshield nicht mehr eintragen...
Gambit |
Joo, das war der Fehler. Besten Dank. War ja mal wieder ne schwere Geburt, wenn ich euch nicht hätte...
Gruß Gambit |
Dafür sind wir doch da. Unsereiner hat ja auch mal Fragen...
|
Zitat:
Hier ist dann übrigens der Code, so wie ich ihn bei Programmstart durchlaufen lasse. Ich musste Ihn ein wenig ändern zum Posten, aber er sollte tun:
Delphi-Quellcode:
{
FUNCTION Check_Alias_DataBase: String; BEGIN Result := Check_Alias('MyAlias', AppPath + 'Data\', True); END; //----------------------------------------------------- } FUNCTION Check_Alias(Alias_Name, DefaultPath: String; TestActivate: Boolean): String; CONST strTestTable = 'MyTable.DB'; VAR MyStringList :TStringList; TempString, newPath: String; TestTable: TTable; begin Set_DataBase_Passwort; MyStringList := TStringList.Create; TRY Session.GetAliasParams(Alias_Name,MyStringList); EXCEPT END; IF MyStringList.Count = 0 THEN BEGIN Session.AddStandardAlias(Alias_Name, DefaultPath , 'PARADOX'); Session.SaveConfigFile; END; IF TestActivate THEN BEGIN TestTable := TTable.Create(nil); TestTable.DatabaseName := Alias_Name; TestTable.TableName := strTestTable; TRY TestTable.Active := True; EXCEPT IF Copy(MyStringList.Strings[0],6,255) <> DefaultPath THEN BEGIN TempString := 'Die Datenbank kann nicht initialisiert werden!' + #10 + 'Der aktuelle Pfad ist:' + ' ' + Copy(MyStringList.Strings[0],6,255) + #10 + 'Der Pfad sollte aber auf:' + ' ' + DefaultPath + ' ' + 'zeigen' + '.'#10+ 'Bitte wählen Sie im folgenden den Pfad Ihrer Datenbanken aus.'; ShowMessage(TempString); newPath := DefaultPath; IF SelectDirectory(newPath,[],0) THEN BEGIN MyStringList.Clear; MyStringList.Add('PATH=' + IncludeTrailingPathDelimiter(newPath)); Session.ModifyAlias(Alias_Name,MyStringList); Session.SaveConfigFile; Session.Close; Session.Open; Set_DataBase_Passwort; END; // IF MessageDlg() = mrYes END; END; // TRY Table.Active TRY TestTable.Active := False; TestTable.Active := True; EXCEPT MyStringList.Free; TestTable.Free; MessageDlg('Die Datenbanken können nicht geöffnet werden.' + #10 + 'Das Programm kann nicht gestartet werden.',mtInformation, [mbOK],0); Halt; END; TestTable.Free; END; TRY Session.GetAliasParams(Alias_Name,MyStringList); Result := IncludeTrailingPathDelimiter(Copy(MyStringList.Strings[0],6,255)); ForceDirectories(Result); EXCEPT Result := DefaultPath; END; MyStringList.Free; END; |
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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-2025 by Thomas Breitkreuz