Posted 29 January 2004 - 10:41
Also der Gedanke einfach ein paar Sekunden zu warten, dann wird die CA schon fertig sein, ist prinzipiell der falsche Ansatz. Einerseits kann die CA ja schon nach 0,5 Sekunden fertig sein, dann muss der User unnötig warten. Andererseits klemmt vielleicht irgendetwas bei der Ausführung der CA und die gewählte Zeitspanne reicht nicht. Letzlich sind beide Fälle nicht zufriedenstellend. Desweiteren ist es doch immer irritierend, wenn man einen Button drückt und nichts passiert.
Aber für genau diesen Fall gibt es im Windows Installer ein ControlEvent namens 'SpawnWaitDialog'. Die Anwendung ist etwas trickreich, da für dieses ControlEvent die Logik der Condition genau verkehrt herum ist. Solange die Condition 'False' ist, wird der angegebene Dialog angezeigt - sobald die Condition auf 'True' wechselt, wird der Dialog ausgeblendet. Also, was brauchts:
1) Einen einfachen Dialog (z.B. 'WaitABit') mit dem Text 'Bitte warten, ich bin am ....', ohne jegliche Buttons
2) Die auszuführende CA ('MyCA'); diese muss erweitert werden um das Setzen eines Properties auf einen definierten Wert, z.B. Propname 'CaIstFertig' auf den Wert 'Y', desweiteren muss die CA asynchron laufen, sonst klemmt's
3) ControlEvents des z.B. 'Next' Buttons des Dialogs, der warten soll, müssen bearbeitet werden:
CODE |
Event Argument Condition [CaIstFertig] {} 1 DoAction MyCA 1 SpawnWaitDialog WaitABit CaIstFertig="Y" NewDialog NaechsterDialog 1
|
Klappt bei mir wunderbar z.B. bei der Suche nach im Netzwerk verfügbaren SQL-Servern.
h.teichert-ott