Heute scheine ich an den einfachsten Dingen zu scheitern
Ich möchte einen Dialog "Bitte warten..." anzeigen sobald der Benutzer auf einen Button klickt!
Der Button hat folgende Events:
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.
"Bitte Warten" Dialog
Started by
Michael.Hu
, Jun 25 2008 17:58
6 replies to this topic
Posted 25 June 2008 - 17:58
CODE |
DoAction WaitAction 1 SpawnWaitDialog WaitDialog DoneWithAction |
Die InstallScript Custom Action (Return Processing: Asynchronous, waits for exit code) setzt das Property DoneWithAction nach 5 Sekunden:
CODE |
Delay(5); MsiSetProperty(hMsi, "DoneWithAction", "X"); |
Erwarten würde ich dass der WaitDialog (modal = true) nach 5 Sekunden verschwindet... Er bleibt aber dort, die Maus wird zur Sanduhr und nichts geht mehr...
Weiss jemand woran das liegen könnte?
Wäre euch unendlich dankbar :-)
Viele Grüsse
Michael
Posted 26 June 2008 - 13:34
Hi Michael,
Ich habe das ganze eben einmal ausprobiert. Ich bekomme meine CA leider nicht auf Asynchron gesetzt. (Steht nicht zur Auswahl) Wenn der Dialog stehen bleibt scheint die Property nicht gesetzt zu werden. Versuch doch mal einfach in deinen Dialog ne Checkbox (Poperty=DoneWithAction) einzufügen. Wenn der Dialog hochkommt sollte er durch aktivieren der Checkbox wieder verschwinden. Zumindestens so hat es bei mir ohne Probleme hingehauen. Oder du lässt dir noch eine MessageBox in deiner Funktion ausgeben um zu sehen das er auch wirklich reinläuft bzw. wann er das tut.
Wenn du nur ein "Bitte warten" anzeigen willst, wäre dann vieleicht SdShowMsg eine Alternative?
Grüße
Udo
Ich habe das ganze eben einmal ausprobiert. Ich bekomme meine CA leider nicht auf Asynchron gesetzt. (Steht nicht zur Auswahl) Wenn der Dialog stehen bleibt scheint die Property nicht gesetzt zu werden. Versuch doch mal einfach in deinen Dialog ne Checkbox (Poperty=DoneWithAction) einzufügen. Wenn der Dialog hochkommt sollte er durch aktivieren der Checkbox wieder verschwinden. Zumindestens so hat es bei mir ohne Probleme hingehauen. Oder du lässt dir noch eine MessageBox in deiner Funktion ausgeben um zu sehen das er auch wirklich reinläuft bzw. wann er das tut.
Wenn du nur ein "Bitte warten" anzeigen willst, wäre dann vieleicht SdShowMsg eine Alternative?
Grüße
Udo
Posted 26 June 2008 - 13:53
Hi Udo!
Danke dass du dir Zeit nimmst!
Habs auch mal mit einer Checkbox probiert, das funktioniert einwandfrei!
Hmm hast du wirklich eine InstallScript Custom Action erstellt? Dort müsstest du doch asynchron auswählen können...
Also ich denke die CA müsste schon asynchron, d.h. parallel zum WarteDialg laufen... Auf diese Weise läuft sie und gleichzeitig wird der WarteDialog angezeigt. Am Ende der CA wird das Property gesetzt und der Dialog verschwindet...
Das Problem ist das SdShowMsg nicht automatisch im Vordergrund ist... Oder hast du damit gute Erfahrungen gemacht?
Hat sonst noch jemand eine Idee? Ein solcher WarteDialog wurde doch sicher schonmal implementiert....
Danke dass du dir Zeit nimmst!
Habs auch mal mit einer Checkbox probiert, das funktioniert einwandfrei!
Hmm hast du wirklich eine InstallScript Custom Action erstellt? Dort müsstest du doch asynchron auswählen können...
Also ich denke die CA müsste schon asynchron, d.h. parallel zum WarteDialg laufen... Auf diese Weise läuft sie und gleichzeitig wird der WarteDialog angezeigt. Am Ende der CA wird das Property gesetzt und der Dialog verschwindet...
Das Problem ist das SdShowMsg nicht automatisch im Vordergrund ist... Oder hast du damit gute Erfahrungen gemacht?
Hat sonst noch jemand eine Idee? Ein solcher WarteDialog wurde doch sicher schonmal implementiert....
Posted 26 June 2008 - 14:56
Hi Michael,
ja, eine Installscript CA habe ich erstellt (Habe auch deinen Code kopiert ). Bei mir kann ich jedoch nur Synchron mit oder ohne Exitcode auswählen (warum auch immer) Welche "Typnummer" ist denn das bei dir. Vieleicht geht es ja wenn ich diesen entsprechend in der Tabelle eintrage.
Der Gedanke mit der Asynchronen Ausführung leuchtet mir ein, jedoch würde ich trotzdem noch einmal überprüfen ob er die Property auch richtig setzt, sprich, in die Funktion reingeht.
Ich benutze SdShowMsg ziemlich häufig. Ich glaube Probleme mit dem Fokus gibt es manchmal auf W2k Maschinen.
ja, eine Installscript CA habe ich erstellt (Habe auch deinen Code kopiert ). Bei mir kann ich jedoch nur Synchron mit oder ohne Exitcode auswählen (warum auch immer) Welche "Typnummer" ist denn das bei dir. Vieleicht geht es ja wenn ich diesen entsprechend in der Tabelle eintrage.
Der Gedanke mit der Asynchronen Ausführung leuchtet mir ein, jedoch würde ich trotzdem noch einmal überprüfen ob er die Property auch richtig setzt, sprich, in die Funktion reingeht.
Ich benutze SdShowMsg ziemlich häufig. Ich glaube Probleme mit dem Fokus gibt es manchmal auf W2k Maschinen.
Posted 27 June 2008 - 10:48
Hi Udo!
Benutzt du denn auch ein Basic MSI Projekt?
Ich versteh das nicht... SdShowMsg ist bei mir immer hinter dem eigentlichen Setup Dialog!
Wäre nett wenn du kurz testen könntest ob bei dir der SdShowMsg-Dialog korrekt angezeigt wird:
1. InstallScript Custom Action:
Benutzt du denn auch ein Basic MSI Projekt?
Ich versteh das nicht... SdShowMsg ist bei mir immer hinter dem eigentlichen Setup Dialog!
Wäre nett wenn du kurz testen könntest ob bei dir der SdShowMsg-Dialog korrekt angezeigt wird:
1. InstallScript Custom Action:
CODE |
function INT showWaitDialog(hMsi) begin SdShowMsg("showWaitDialog",TRUE); Delay(8); SdShowMsg("showWaitDialog",FALSE); return ERROR_SUCCESS; end; |
2. Einfacher Button auf InstallWelcome Dialog erstellen und als Event die obige CustomAction als DoAction aufrufen.
Was passiert nun bei dir wenn du auf den Button klickst? (bei mir seh ich in der Taskleiste zwar schon dass ein Dialog geöffnet wurde ich muss ihn aber erst mit der Maus aktivieren da er genau hinter dem InstallWelcome Dialog ist).
Vielen Dank für deine Hilfe!
Gruss
Michael
Edited by Michael.Hu, 27 June 2008 - 10:48.
Posted 27 June 2008 - 12:24
Hi Michael,
ja, bei mir ist der Dialog auch im Hintergrund. Ich benutze sowohl Basic MSI als auch Installskript. Für diese Tests jetzt natürlich Basic-MSI
Vieleicht ist das ja eine Option für dich. Versuche mal dieses:
ja, bei mir ist der Dialog auch im Hintergrund. Ich benutze sowohl Basic MSI als auch Installskript. Für diese Tests jetzt natürlich Basic-MSI
Vieleicht ist das ja eine Option für dich. Versuche mal dieses:
QUOTE |
function showWaitDialog(hMsi) HWND nHwnd; NUMBER nlParam; begin nHwnd=GetWindowHandle(HWND_INSTALL); SendMessage (nHwnd, WM_SYSCOMMAND, SC_MINIMIZE, nlParam); SdShowMsg("showWaitDialog",TRUE); Delay(3); SdShowMsg("showWaitDialog",FALSE); SendMessage (nHwnd, WM_SYSCOMMAND, SC_RESTORE, nlParam); end; |
Gruß
Udo
Edited by felltier-a, 27 June 2008 - 12:26.
Posted 27 June 2008 - 13:31
Hey Udo!
Das hat geklappt!!! Tausend Dank für den super Tip :-)
Viele Grüsse
Michael
Das hat geklappt!!! Tausend Dank für den super Tip :-)
Viele Grüsse
Michael