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

Variable aus Custom Action übergeben


7 replies to this topic

Juergen Wagener

Juergen Wagener
  • Full Members
  • 32 posts

Posted 01 March 2012 - 14:27

Hallo,

ich führe in einer CA (VB-Script) eine Abfrage nach der Office-Version durch und schreibe den Wert in eine Variable, die ich in dem VB-Script definiert habe, z.B OfficeVer = 11

Diese Variable habe ich dann dann als Condtion in mehrere Komponenten eingetragen in der Form: OfficeVer = 11

Das funktioniert so aber nicht. Muss ich eine Variable auf besondere Art definieren, damit sie im weiteren msi-Project verwendet werden kann?

Beste Grüße
JW

Edited by Juergen Wagener, 01 March 2012 - 14:27.


ali

ali
  • Full Members
  • 1,008 posts

Posted 01 March 2012 - 15:11

Hallo,
in Basic MSI kannst du für solch eine Action die Systemsuche verwenden. Script benötigst du da nicht. Einfach mal unter SystenSearch schaun, für Office gibt es da sogar schon (je nach IS VErsion) vordefinierte Suchaktionen die man nur noch auswählen muss. Die Properties die in der Suche zum speichern der Ergebnisse angegeben ist, wird dann als Bedingung verwendet.

Juergen Wagener

Juergen Wagener
  • Full Members
  • 32 posts

Posted 01 March 2012 - 16:02

In meiner IS-Version gibt es diese vordefinierte Suche für Office nicht. Müsste man über eine Registry-Abfrage machen. Das Problem ist nur, dass der Registry-Pfad variabel ist, je nach Version. Ich kann also nicht so einfach einen Wert abfragen.

Eine Lösung über System-Search wäre ansonsten natürlich gut. Vielleicht muss man ja nur die Abfrage anders aufziehen.

Generell interessiert mich aber immer noch die ursprüngliche Frage mit der Übergabe von Variablen aus CUs.

Grüße

ali

ali
  • Full Members
  • 1,008 posts

Posted 01 March 2012 - 16:56

Hallo,
ja, für jede Officeversion gibt es eine Abfrage, bzw. muss es eine geben.

Zu der Frage mit dem script, ich habe bisher alles mit InstallScript erledigt. In der Property Table wird eine Eigenschaft festgelegt zb. OFFICEVER. Im Script geht man dann her und holt sich mit MsiGetProperty den Wert des Property und setzt diesen wieder über MsiSetProperty. Dieses Property kann dann als Bedingung verwendet werden.

Juergen Wagener

Juergen Wagener
  • Full Members
  • 32 posts

Posted 02 March 2012 - 15:31

Hallo Ali,

danke für deine Antworten.

Was wird beim System-Search genau an das Property übergeben, wenn ich z.B. nach einem bestimmten Reg-Key suche? Der Wert des Reg-Keys oder 1 wenn gefunden (0 wenn nicht gefunden) oder kann ich selbst einen bestimmten Wert definieren der übergeben wird?


ali

ali
  • Full Members
  • 1,008 posts

Posted 05 March 2012 - 17:05

man gibt für die Suche den Key und die Bezeichnung des Eintrags zb eine Zeichenfolge an, nach dem gesucht werden soll, wird dieser gefunden, wird dessen Wert in das Property geschrieben. Bei einem String-Eintrag "Version" würde hier die Versionsnummer im Property stehen. gibt man keinen Eintrag an, dieser ist optional, dann wird der Wert von "default" ermittelt. Man kann diese Einträge übrigens gleich als Ziel für eine Komponente, oder auch als Installationsbedingung verwenden.

Edited by ali, 05 March 2012 - 17:06.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 06 March 2012 - 17:59

Generell würde ich auch die Systemsuche der Custom Action vorziehen. Um dennoch der Vollständigkeit halber die ursprüngliche Frage zu beantworten: Um einen Wert von einer Custom Action an den Installer zu übergeben, setzt man ein Property, z.B.:
Session.Property("OFFICEVERSION") = 11

In der Bedingung kann man dann verwenden
OFFICEVERSION = 11

Juergen Wagener

Juergen Wagener
  • Full Members
  • 32 posts

Posted 14 March 2012 - 11:57

Habe es jetzt über die VBScript-CA hinbekommen. Zuerst hatte es nicht funktioniert, weil der Wert 11 nicht in Anführungszeichen gesetzt war. So klappt es:

Session.Property("OFFICEVERSION") = "11"

Danke an alle für die Tips!

Edited by Juergen Wagener, 14 March 2012 - 15:21.