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.

Hilfe, Datenbankverzeichnis wird nicht angenommen
Started by
Pepsen
, Feb 02 2009 15:37
8 replies to this topic
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
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
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?
Stefan Krüger
InstallSite.org twitter facebook
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
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.
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.
Stefan Krüger
InstallSite.org twitter facebook
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
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.
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

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.
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.
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.
Stefan Krüger
InstallSite.org twitter facebook
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!
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.
Posted 19 February 2009 - 10:37
Lösung gefunden 
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ß

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ß
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.
Stefan Krüger
InstallSite.org twitter facebook