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

MsiGetProperty beim Rollback


3 replies to this topic

macman

macman
  • Full Members
  • 33 posts

Posted 16 March 2009 - 11:22

Hallo,

ich habe mal wieder ein Problem an dem ich mir die Zähne ausbeisse mad.gif
Ich habe ein Setup (Major Upgrade) das bei der Installation die Nutzereinstellungen sichert, damit dem Nutzer nichts verloren geht. Bei jeder der folgenden CA handelt es sich um ein InstallScript.

1. Schritt, ich ermittle mittels einer CA erst das Verzeichnis in dem die Einstellungen gesichert sind und speichere das in einer Property USERDIR.

2. Schritt, in einer weiteren CA (saveDir) lese ich die Property aus und gebe dem Verzeichnis einen temporären Namen, so das es nicht gelöscht wird.

3. Schritt, Installation der neuen Daten und deinstallation der alten.

4. Schritt, zuletzt kommt eine weitere CA (restoreDir) zum Zuge, die wieder die Property ausliest und den Namen des temporären Verzeichnis korrigiert.

Klappt soweit sehr gut. Mein Problem tritt auf, wenn der User während des 3. Schritts die Installation abbricht. Die Daten werden zwar alle wiederhergestellt, nur muss ich auch das Verzeichnis wieder umbennen. Dazu habe ich noch eine CA erstellt, In-Script Execution auf 'Rollback Execution' gestellt und da rufe ich die gleiche Funktion auf, wie in Schritt 4. Nur ist jetzt die Property immer leer, wenn ich sie auslese.

Das Logfile bringt mich nicht wirklich weiter und debuggen lässt sich ein Rollback wohl nicht. Wo ist mein Fehler?

ali

ali
  • Full Members
  • 1,008 posts

Posted 16 March 2009 - 14:59

hört sich so ein bischen nach einem Problem mit CustomActionData an. Wann werden die Aktionen denn genau ausgeführt. Wenn zwischen InstallInitalize und InstallFinalize dann wird's wohl so sein.

akerl

akerl
  • Full Members
  • 104 posts

Posted 17 March 2009 - 14:43

Eine Deferred Execution Custom Action, zu der natürlich auch die Rollback-CA gehört kann nicht auf alle Elemente der Installationssession zugreifen. Ein Zugriff mit GetProperty() auf die Eigenschaft "USERDIR" gibt immer NULL zurück, da diese Infos nicht verfügbar sind. Es ist erforderlich, die Eigenschaften die von einer solchen CA verwendet werden sollen in das Installationsskript zu übertragen. Hierfür eigenet sich eine CA vom Typ 51. In der Deffered Execution CA kann dann mit GetProperty() auf "CustomActionData" zugegriffen werden, indem die Werte vorhanden sind. Das Ganze ist im SDK unter http://msdn.microsof...543(VS.85).aspx erläutert.

Viele Grüße
Andreas

Andreas Kerl

Inside Windows Installer 4.5
ISBN 3-86645-431-7


macman

macman
  • Full Members
  • 33 posts

Posted 19 March 2009 - 11:56

Danke. Ihr hattet Recht und mit CustomActionData habe ich es hinbekommen. Zum Glück brauche ich bisher nur eine Variable smile.gif