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

Dialog/IScrip-Kommunikation, Merge Module


4 replies to this topic

joey81

joey81
  • Full Members
  • 12 posts

Posted 01 February 2007 - 17:51

Hallo,

ich bin recht neu in der "schaffenden Welt" von Installshield. Da ich mich recht schnell einarbeiten muss, könnte es sich um meine Anliegen um Anfängerfragen handeln, jedoch habe ich darauf keine Antworten in der Hilfe oder im Netz gefunden.

Zum Projekt: Ich möchte ein "Basic MSI" erstellen, welches dem Installierenden verschiedenen Optionen (Checkbox) zur Auswahl stellt. Hinter jeder dieser Optionen steckt ein Merge-Module, denn es ist gut möglich, dass in einem Folge-Projekt einige dieser Optionen wieder auftauchen werden. Die Merge-Module enthalten Kopierbefehle für Dateien.
Über ein CA-basiertes Installscript habe ich nun vor herauszufinden, welche Optionen ausgewählt sind, die zugehörigen Merge-Module zu aktivieren und entsprechenden zu installieren.
Der letzte Dialog setzt eine Variable [test] per Event mit dem Argument "text" und ruft eine CA auf, welche auf eine IScript-Funktion in der setup.rul verweist. In dieser möchte ich die Variable weiterverwenden, doch er erkennt sie nicht. ('test' : undefined identifier)

1. Wie funktioniert die Übergabe von Werten zwischen dem Dialog und dem Script?

2. Nach ausführen des Scriptes rufe ich per NewDialog oder EndDialog mit dem Argument "ErrorOk" den Dialog "SetupCompleteSuccess" auf, in der Hoffnung dem Setup ein definiertes Ende zu geben, schließlich befindet sich darin der Aufruf "EndDialog" mit dem Argument "Exit" im "Finish"-Button. Klicke ich jedoch auf "Finish" erscheint ein "wizard was interrupted"-Dialog (aus der Default-Konfiguration?). Wie teile ich IS also mit, dass das Setup abgeschlossen ist?

3. Noch eine generelle Frage: Werden die Dateien in den Merge-Modulen während der Laufzeit eingebunden? (So dass ich die Dateien im Folgeprojekt austauschen kann, ohne dass ich die Merge-Module neu kompilieren muss?)

4. Irgendwelche Verbesserungsvorschläge bezüglich meiner (blauäugigen) Logik?

Danke erstmal für's Durchlesen und jeden Ansatz zu helfen! Viele Grüße!
Joey

Edited by joey81, 01 February 2007 - 19:20.


joey81

joey81
  • Full Members
  • 12 posts

Posted 01 February 2007 - 18:18

Zu Punkt 2 habe ich die Lösung gefunden: Der Trick ist, den Event "EndDialog" mit dem Argument "Return" aufzurufen :-)

Edited by joey81, 02 February 2007 - 12:59.


joey81

joey81
  • Full Members
  • 12 posts

Posted 02 February 2007 - 23:14

Zu 3: Merge Module schlucken die Dateien mit denen sie kompiliert werden. Somit muss man sie jedes mal auf's neue kompilieren. sad.gif

MaikC

MaikC
  • Full Members
  • 47 posts

Posted 08 February 2007 - 10:59

hallo joey,

du kannst wenn du im dialog editor eine checkbox hinzufügst im feld "property" einen namen eingeben. auf diesen property-namen kannst du dann setup-weit (wie ne art globale variable) zugreifen. in der property steht dann immer der "value" der checkbox.

sprich wenn du die property im "property manager" suchst (z.b. heißt sie jetzt "INSTALLMM1") dann gibst du ihr den wert "1". die checkbox lässt du als default auch auf dem "value" = "1". dann wird die property, wenn der benutzer die checkbox abwählt auf "0" gesetzt. so kannst du überprüfen welches mergemodule aktiviert ist oder nicht.

gruß
maik

Edited by Maik Czymara, 08 February 2007 - 11:00.


joey81

joey81
  • Full Members
  • 12 posts

Posted 13 February 2007 - 16:19

Hallo Maik,

vielen Dank für die Antwort. Habe mich mittlerweile für einen Workaround entschieden:

Die Checkboxen sind über den Feature-Dialog realisiert, so dass ich über "&Featurename = 3" ermitteln kann, ob eine Checkbox ausgewählt ist.

Die entsprechende AND-Abfrage habe ich dann in die Logik des Next-Buttons implementiert, so dass im Falle einer ungewünschten Konstellation ein Pop-Up erscheint.

Nochmals Danke und viele Grüße!
Joel