Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Frage zu InstallShield Pfadname für Alias (https://www.delphipraxis.net/5843-frage-zu-installshield-pfadname-fuer-alias.html)

Gambit 20. Jun 2003 19:36


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

Mario 20. Jun 2003 20:57

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:
http://www.jrsoftware.org/ishowto.phtml?a=bde

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.

Christian Seehase 20. Jun 2003 21:01

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.

Mario 20. Jun 2003 21:04

Zitat:

Zitat von Mario
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.

Jo, die Lizenz-Problematik kenne ich. Aber es war die einzige Seite, wo mir spontan einfiel, die den Source zum Beeinflussen des Alias hatte...

Christian Seehase 20. Jun 2003 21:13

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.

Gambit 20. Jun 2003 21:50

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

r_kerber 21. Jun 2003 10:37

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!

Gambit 21. Jun 2003 10:50

Kann ich mal machen. Ich hatte es mit <INSTALLDIR> versucht, das geht nicht...

Gruß

Gambit

Gambit 21. Jun 2003 10:53

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

r_kerber 21. Jun 2003 11:08

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

Gambit 21. Jun 2003 11:30

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

r_kerber 21. Jun 2003 15:48

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.

Gambit 21. Jun 2003 15:52

Ich wollte es ja jetzt eigentlich ganz ohne Alias machen. Geht das nicht?

Gambit

r_kerber 21. Jun 2003 16:04

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.

Gambit 21. Jun 2003 16:26

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

r_kerber 21. Jun 2003 17:31

Zitat:

Zitat von Gambit
Das soll mal einer raffen, zumal in der neuen Verknüpfung exakt das Gleiche drinsteht.

Bist Du da ganz sicher? Das sieht ganz danach, als steht kein Eintrag unter Ausführen in.

Gambit 21. Jun 2003 17:38

Och, mmhh, muss ich mal gucken. Aber soviel ich weiß, kann man da in Installshield nicht mehr eintragen...

Gambit

Gambit 21. Jun 2003 18:48

Joo, das war der Fehler. Besten Dank. War ja mal wieder ne schwere Geburt, wenn ich euch nicht hätte...

Gruß

Gambit

r_kerber 21. Jun 2003 18:58

Dafür sind wir doch da. Unsereiner hat ja auch mal Fragen...

Mario 23. Jun 2003 07:06

Zitat:

Zitat von Gambit
Das soll mal einer raffen, zumal in der neuen Verknüpfung exakt das Gleiche drinsteht.

Auch das Arbeitsverzeichnis?

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;

r_kerber 23. Jun 2003 07:18

Zitat:

Zitat von Mario
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:

Das ist 'ne gute Anregung. Funktioniert allerdings nur bei Desktop-Datenbanken (Paradox, dBase, Access, ...).


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz