Wert von DATA_DIRECTORY abfragen
Posted 24 November 2006 - 16:49
Ich möchte in einem Skript den Wert von DATA_DIRECTORY in die Registry schreiben.
Wie mache ich das am besten?
Ich habe mir eine eigene Eigenschaft angelegt (DATABASE_DIR) die ich gerne so in die Registry schreiben möchte:
CODE |
nLength = 256; MsiGetProperty(ISMSI_HANDLE, 'DATABASE_DIR', strDBDir, nLength); RegDBSetKeyValueEx (strKey, "DBPfad", REGDB_STRING, strDBDir, -1); |
Aber wir bekomme ich den Wert von DATA_DIRECTORY (Den der User ja über den Dialog "DatabaseFolder" geändert haben könnte) in meine Eigenschaft hinein?
Und warum ist zB INSTALLDIR im Script einfach zu verwenden (wird ja sofort erkannt und in blauer Farbe im Editor ausgegeben) DATA_DIRECTORY aber nicht...
Vielen Dank für jeden Tipp!
Posted 26 November 2006 - 23:36
Stefan Krüger
InstallSite.org twitter facebook
Posted 26 November 2006 - 23:40
Stefan Krüger
InstallSite.org twitter facebook
Posted 27 November 2006 - 09:46
QUOTE (Stefan Krueger @ 2006-11-26 23:36) |
Ich bin verwirrt. Willst du den Wert von DATA_DIRECTORY oder von DATABASE_DIR in die Registry schreiben? |
Na, letztendlich will ich den Wert von DATA_DIRECTORY in die Registry schreiben. Die andere Eigenschaft (DATABASE_DIR) war von mir nur ein Hilfskonstrukt, weil ich nicht genau wusste wie ich DATA_DIRECTORY im Kode in die Registry schreiben kann...
Dieses DATA_DIRECTORY ist ja leider nicht so einfach zu "erreichen" wie INSTALLDIR...
QUOTE (Stefan Krueger @ 2006-11-26 23:36) |
Und warum verwendest du eine InstalLScript Custom Action dafür, und nicht die Registry-Ansicht (was wiedrum die normalen MSI-Funktionen zum Registry-Schreiben verwendet)? |
Weil diese Werte nicht konstant sind. Ich habe da Kode, der noch von meiner IS6.03 Pro Installation stammt und den ich gerne weiterverwenden möchte. In der Registry-Sicht kann ich ja keine Eigenschaften als Werte verwenden, oder?
Edited by adeptus, 27 November 2006 - 10:03.
Posted 27 November 2006 - 09:51
QUOTE (Stefan Krueger @ 2006-11-26 23:40) |
P.S: wenn du den normalen DatabaseFolder Dialog von InstallShield verwendest, dann steht die benutzerauswahl bereits im Property DATABASEDIR. |
"DATABASEDIR" oder "DATABASE_DIR"?
Letzte Eigenschaft habe ich mir doch selber einfallen lassen, oder?
Nach dem DatabaseFolder Dialog steht der Wert doch in "DATA_DIRECTORY", oder???
Posted 27 November 2006 - 10:49
QUOTE |
In der Registry-Sicht kann ich ja keine Eigenschaften als Werte verwenden, oder? |
QUOTE |
Nach dem DatabaseFolder Dialog steht der Wert doch in "DATA_DIRECTORY", oder??? |
Stefan Krüger
InstallSite.org twitter facebook
Posted 27 November 2006 - 11:20
Ich mach mal ein log...
Posted 27 November 2006 - 11:28
Stefan Krüger
InstallSite.org twitter facebook
Posted 27 November 2006 - 11:54
Ich meine weiterhin, dass DATA_DIRECTORY das richtige ist. Diese Eigenschaft steht im Log mit dem durch den User verstellten Wert und ist auch in der Directory Table vorhanden.
Wie würdest Du denn diese Eigenschaft in die Registry speichern???
Edited by adeptus, 27 November 2006 - 12:03.
Posted 27 November 2006 - 20:58
[DATA_DIRECTORY]
reinschreiben.
Welche InstallShield-Version verwendest du übrigens?
Stefan Krüger
InstallSite.org twitter facebook
Posted 28 November 2006 - 10:37
Ich werde es mal so versuchen, wie Du sagst...
Aber ich werde es wahrscheinlich doch im Kode machen müssen. Wie würdest Du das am besten machen?
Posted 28 November 2006 - 17:41
Stefan Krüger
InstallSite.org twitter facebook
Posted 28 November 2006 - 17:45
QUOTE (Stefan Krueger @ 2006-11-28 17:41) |
Über MsiGetProperty, so wie du es oben gemacht hast (mit dem korrekten property-namen) |
Aber genau das geht ja nicht... Welchen "korrekten" Propertynamen meinst Du denn?
Wie gesagt, DATA_DIRECTORY bringt nur Fehler. IS12 erkennt es nicht als Property, aber im Log steht DATA_DIRECTORY mit dem richtigen Wert!?!?!?
Bei INSTALLDIR wird je im Editor gleich in blauer Farbe geschrieben, DATA_DIRECTORY nicht...
Ich glaube ich steh´ auf dem Schlauch...
Edited by adeptus, 28 November 2006 - 17:46.
Posted 12 December 2006 - 18:12
So... Nach ein paar Tagen Pause hab ich´s wieder probiert.
Wie Du sagtest habe ich den Wert [DATA_DIRECTORY] in die Registry-Ansicht eingeplegt und nun kommt das:
Wo stelle ich denn diese Zugriffsrechte ein?
Jetzt habe ich die Installation fast fertig, und verrecke jetzt dauern an diesem Registry-Eintrag...
Posted 12 December 2006 - 20:55
Kannst du die fehlermeldung aus der Logdatei posten, da müsste auch eine Fehlernummer dabei stehen.
Stefan Krüger
InstallSite.org twitter facebook
Posted 13 December 2006 - 11:16
CODE |
MSI (s) (58:98) [18:18:11:445]: Executing op: RegOpenKey(Root=-2147483646,Key=Steria Mummert ISS GmbH\CD-ROM VersicherungsStatistik\9.00,,BinaryType=0) MSI (s) (58:98) [18:18:11:445]: Executing op: RegAddValue(Name=DBPfad,Value=C:\Programme\Steria Mummert ISS GmbH\CD-ROM Versicherungsstatistik\9.00\Daten\,) MSI (s) (58:98) [18:18:11:445]: Note: 1: 1401 2: HKEY_LOCAL_MACHINE\Steria Mummert ISS GmbH\CD-ROM VersicherungsStatistik\9.00 3: 87 Information 2835. The control ErrorIcon was not found on dialog SetupError. MSI (s) (58:98) [18:19:35:164]: Produkt: CD-ROM Versicherungsstatistik -- Fehler 1406. Wert DBPfad konnte nicht unter den Schlüssel \Steria Mummert ISS GmbH\CD-ROM VersicherungsStatistik\9.00 geschrieben werden. Systemfehler . Überprüfen Sie, ob Sie ausreichende Zugriffsrechte auf diesen Schlüssel besitzen, oder setzen Sie sich mit Ihrem Supportpersonal in Verbindung. |
Posted 14 December 2006 - 17:26
QUOTE |
MSI (s) (58:98) [18:18:11:445]: Note: 1: 1401 2: HKEY_LOCAL_MACHINE\Steria Mummert ISS GmbH\CD-ROM VersicherungsStatistik\9.00 3: 87 |
1401 bedeutet: Could not create key: [2]. System error [3].
wobei System Error 87 = Falscher Parameter.
Ich kann jetzt nicht erkennen dass da am String selbst was falsch ist (ungültige Zeichen oder so) aber vielleicht ist es doch ein rechte-Problem. Kannst du den Schlüssel manuell anlegen? Hat beim übergeordneten Key LocalSystem volle Zugriffsrechte? Du bist ja als Administrator angemeldet, und dies ist nicht Vista, oder?
Stefan Krüger
InstallSite.org twitter facebook
Posted 05 January 2007 - 11:50
Ja, ich bin Admin, nein es ist nicht unter Vista sondern unter XP, und ja ich kann den Schlüssel manuell anlegen...
Ich habe inzwischen sogar allen Usern vollzugriff auf LOCAL_MACHINE gegeben und es geht nicht!
Am Ende meiner Installation starte ich eine kleine EXE die die Einstellungen der Vorversion der Anwendung für die neue Version übernimmt. Dabei erstellt ich etliche Resitryeinstellungen im gleichen Pfad. Das geht einwandfrei.
Ebenso funktioniert auch das Erstellen der Registryeinträge im Skript mittel RegDBSetKeyValueEx.
Es ist also nur das Schreiben in der Registry aus dem entsprechenden IS12-Registry-Tabellen (Systemkonfiguration/Registrierung) heraus nicht möglich...
Edited by adeptus, 05 January 2007 - 12:05.
Posted 05 January 2007 - 12:30
Ich hatte im Pfad die Angabe "SOFTWARE" vergessen. Es wurde also versucht direkt unter "LOCAL_MACHINE" was anzulegen.
Jetzt kommt wenigstens der Fehler nicht mehr, aber der Wert der Eingenschaft DBPfad ist noch imme leer...
Posted 05 January 2007 - 12:34
Edited by adeptus, 05 January 2007 - 13:26.