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

Wert von DATA_DIRECTORY abfragen


19 replies to this topic

adeptus

adeptus
  • Full Members
  • 34 posts

Posted 24 November 2006 - 16:49

Hallo,

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!

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 26 November 2006 - 23:36

Ich bin verwirrt. Willst du den Wert von DATA_DIRECTORY oder von DATABASE_DIR in die Registry schreiben? 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)?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 26 November 2006 - 23:40

P.S: wenn du den normalen DatabaseFolder Dialog von InstallShield verwendest, dann steht die benutzerauswahl bereits im Property DATABASEDIR.


adeptus

adeptus
  • Full Members
  • 34 posts

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.


adeptus

adeptus
  • Full Members
  • 34 posts

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???

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 27 November 2006 - 10:49

QUOTE
In der Registry-Sicht kann ich ja keine Eigenschaften als Werte verwenden, oder?
Doch, das geht (in eckigen Klammern) allerdings nur als Wert, nicht als Schlüssel oder Name.

QUOTE
Nach dem DatabaseFolder Dialog steht der Wert doch in "DATA_DIRECTORY", oder???
Also ich hab in meinem IS12 geschaut, da müsste das vom Benutzer ausgewählte Verzeichnis in DATABASEDIR stehen (ohne Unterstrich). Aber schreib doch einfach mal eine Logdatei, da stehen die Namen und Werte aller Properties drin. Wenn du erst mal den richtigen Property-Namen hast, dann müsste auch dein MsiGetProperty funktionieren (aber nur in Immediate Custom Actions, nicht in Deferred, Commit oder Rollback) - natürlich nur wenn der Pfad kürzer als 256 Zeichen ist, was bei XP vielleicht etwas zu knapp bemessen ist.

adeptus

adeptus
  • Full Members
  • 34 posts

Posted 27 November 2006 - 11:20

In der Eigenschaften-Sicht steht "DATABASEDIR" aber gar nicht zur Verfügung! Kann ich die gelöscht haben???

Ich mach mal ein log...

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 27 November 2006 - 11:28

Manche Properties werden erst zur Laufzeit angelegt. Es müssen nicht alle in der Properties-Ansicht stehen. Außerdem ist DATABASEDIR ein Verzeichnis und steht wenn überhaupt dann in der Directory Tabelle.

adeptus

adeptus
  • Full Members
  • 34 posts

Posted 27 November 2006 - 11:54

Also im Log habe ich keine Spur von DATABASEDIR gefunden. Auch in der Directory Table nicht...

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.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 27 November 2006 - 20:58

Du kannst in den Registry-Wert einfach
[DATA_DIRECTORY]
reinschreiben.

Welche InstallShield-Version verwendest du übrigens?

adeptus

adeptus
  • Full Members
  • 34 posts

Posted 28 November 2006 - 10:37

Ich nutze IS12.

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?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 28 November 2006 - 17:41

Über MsiGetProperty, so wie du es oben gemacht hast (mit dem korrekten property-namen)

adeptus

adeptus
  • Full Members
  • 34 posts

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.


adeptus

adeptus
  • Full Members
  • 34 posts

Posted 12 December 2006 - 18:12

> Du kannst in den Registry-Wert einfach [DATA_DIRECTORY] reinschreiben.

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:

user posted image

Wo stelle ich denn diese Zugriffsrechte ein?

Jetzt habe ich die Installation fast fertig, und verrecke jetzt dauern an diesem Registry-Eintrag...

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 12 December 2006 - 20:55

Ich glaub nicht dass es ein Rechte-Problem ist. Was steht jetzt im Log als Wert von DATA_DIRECTORY ?
Kannst du die fehlermeldung aus der Logdatei posten, da müsste auch eine Fehlernummer dabei stehen.

adeptus

adeptus
  • Full Members
  • 34 posts

Posted 13 December 2006 - 11:16

Hier der hoffentlich richtige Ausschnitt aus dem Logg:

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.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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?


adeptus

adeptus
  • Full Members
  • 34 posts

Posted 05 January 2007 - 11:50

Hallo, sorry, dass ich mich erst jetzt wieder melde.

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.


adeptus

adeptus
  • Full Members
  • 34 posts

Posted 05 January 2007 - 12:30

OK, mea maxima culpa...

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...

adeptus

adeptus
  • Full Members
  • 34 posts

Posted 05 January 2007 - 12:34

OK, jetzt funzt alles... Dass der Wert leer war, war selbst verschuldet... rolleyes.gif

Edited by adeptus, 05 January 2007 - 13:26.