Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Hilfe, Datenbankverzeichnis wird nicht angenommen


8 replies to this topic

Pepsen

Pepsen
  • Full Members
  • 5 posts

Posted 02 February 2009 - 15:37

Hallo,

ich nutze IS2009 Express und habe vor den Datenbankpfad über eine dll zu steuern. Die gewünschte Änderung erfolgt auch, doch wird dieser Pfad anschließend bei dem Datentransfer ignoriert und das Verzeichnis genutzt, welches in den "General Informations" unter "DATABASEDIR" eingetragen ist. Ein Ordner an dem richtigen Pfad wird erstellt, bleibt aber leer!

Es gibt allerdings ein Szenario, bei dem es doch funktioniert. Wenn ich den gewünschten Pfad stehen habe, anschließend trotzdem auf "Ändern/Change" klicke und den Pfad EINFACH NUR bestätige, funktioniert es auch bei dem Datentransfer, wie gefordert.
Leider nicht ganz so, wie man es gerne hätte.

Ich nutze für die Änderung die Funktion "FOO" und überschreibe den "szDatabase"-Wert! Funktioniert an sich auch, halt eben nur, wie oben beschrieben bei der Datenübertragung nicht.

Hab ich etwas nicht beachtet?

gruß und danke im voraus
Pepsen





Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 02 February 2009 - 16:10

Über welche Funktion wird in the DLL der Pfad gesetzt, und wann wird die DLL aufgerufen? Hat der Pfad-String den du setzt einen \ am Ende?

Pepsen

Pepsen
  • Full Members
  • 5 posts

Posted 02 February 2009 - 16:52

QUOTE
Über welche Funktion wird in the DLL der Pfad gesetzt

CODE
StrPCopy(szDataBase, Path + '\');

Die Funktion kopiert einen AnsiString(2. Parameter) und setzt ihn im 1. Parameter

QUOTE
wann wird die DLL aufgerufen?

hab es an jeder Position vor dem "Datenbankverzeichnis-Dialog" versucht!

QUOTE
Hat der Pfad-String den du setzt einen \ am Ende?

ja, wie man an dem Quellcode sehen kann

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 04 February 2009 - 17:52

Welche Programmiersprache? In C müsste da doch \\ stehen, oder?

Welcher Custom Action Typ?

Funktioniert es, wenn du den Pfad auf der Kommandoziele setzt:
msiexec.exe /i dein.msi DATABASEDIR="C:\Test"

Schreib mal eine Logdatei um zu sehen, warum der Pfad ggf. wieder zurückgesetzt wird.

Pepsen

Pepsen
  • Full Members
  • 5 posts

Posted 05 February 2009 - 15:18

Ich nutze Delphi! Da sollte es so funktionieren!

Meinst du damit ob classic oder new function signature? Wäre dann classic!

Wie darf ich das verstehen? Bin da nicht so bewandert. Bitte nochmal für dummies smile.gif

Hab mir die Logdatei mal angesehn. Der Pfad bleibt weiterhin vorhanden, der Ordner wird erstellt. Es wird nur nichts in diesen Ordner geschoben! Das, was für den Datenbankpfad vorgesehen ist, wird in das normale Install-Verzeichnis transferiert. Das steht auch so im logfile!
Mit Bestätigung des Datenbankpfades geht es und der Unterschied ist auch dokumentiert.



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 09 February 2009 - 15:48

Funktioniert es mit der von mir angegebenen Kommandozeile, ohne deine DLL?
Ist als Ziel für diese Dateien auch wirklich DATABASEDIR angegeben und nicht INSTALLDIR?
In der Logdatei sollte stehen, welchen Wert DATABASEDIR hat, und (wenn du eine der neueren Versionen der MSI Runtime verwendest) auch wann immer es sich ändert. Ändert es sich wie es soll? Wird es wieder auf den Default-Wert zurückgesetzt? Gibt es dazu einen Eintrag wie "Disallowing insecure property"?
Auf welchem Betriebssystem testet du? Wenn Vista, dann probier's mal unter XP.

Pepsen

Pepsen
  • Full Members
  • 5 posts

Posted 18 February 2009 - 11:23

Hallo Stefan,

ich hab nun nochmal ein wenig rumgespielt und getestet.
Ja, ohne die DLL funktioniert es ganz normal. Das, was ich als Datenbankpfad angebe wird akzeptiert und es werden auch die gewünschten Unterordner reingeschoben.

ja, das DATABASEDIR ändert sich wie gewünscht und es wird auch nicht zurückgesetzt.
Ich glaube auch, dass das Problem anscheinend wo anders liegt.
Wenn man in der Kommandozeile einen Pfad einträgt, wird ja automatisch auch in der Ansicht im Unterpunkt "FILES" dieser Ordner angelegt. Dieser ist dann bläulich dargestellt und es ist der Zusatz [DATABASEDIR] angefügt. In diesen Ordner packe ich Unterordner, die halt bei der Installation an den Datenbankpfad transferiert werden sollen.
In der Logfile kann man erkennen, dass der Pfad der Unterordner NICHT geändert wird. Es blebt weiterhin der in der Kommandozeile angegebene Pfad. Dies ist aber nur der Fall, wenn ich den Datenbankpfad nicht nochmal bestätige! Tu ich dies, funktioniert es wie gewollt!
Der Wert für DATABASEDIR ist bei BEIDEN varianten korrekt

ich nutze XP

Gruß

--------
EDIT: Ich habe jetzt mal nur eine einzelne Datei dem Datenbankordner zugewiesen. Diese landet dann auch bei der Installation tatsächlich am richtigen Platz! Es scheint also wirklich an den Unterordnern des Datenbankpfades zu liegen!

Edited by Pepsen, 18 February 2009 - 13:45.


Pepsen

Pepsen
  • Full Members
  • 5 posts

Posted 19 February 2009 - 10:37

Lösung gefunden smile.gif

ich hab die DLL nun vor die Initialisierung gesetzt. Zu dem Zeitpunkt scheint auch der Standardpfad noch nicht gesetzt zu sein.

Danke für die Unterstützung!

Gruß

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 19 February 2009 - 21:05

CostFinalize löst Properties in Verzeichnisse auf und setzt die Unterverzeichnisse entsprechend. Wenn du nach CostFinalize das Property änders, musst du separat dafür sorgen, dass auch die Unterverzeichnisse aktualisert werden. Der Pfadauswahl-Dialog macht das zum Beispiel.