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

"Bitte Warten" Dialog


6 replies to this topic

Michael.Hu

Michael.Hu
  • Full Members
  • 72 posts

Posted 25 June 2008 - 17:58

Heute scheine ich an den einfachsten Dingen zu scheitern mad.gif

Ich möchte einen Dialog "Bitte warten..." anzeigen sobald der Benutzer auf einen Button klickt!

Der Button hat folgende Events:

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




felltier-a

felltier-a
  • Awaiting Authorisation
  • 85 posts

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

Michael.Hu

Michael.Hu
  • Full Members
  • 72 posts

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....

felltier-a

felltier-a
  • Awaiting Authorisation
  • 85 posts

Posted 26 June 2008 - 14:56

Hi Michael,

ja, eine Installscript CA habe ich erstellt (Habe auch deinen Code kopiert wink.gif). 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.

Michael.Hu

Michael.Hu
  • Full Members
  • 72 posts

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:
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.


felltier-a

felltier-a
  • Awaiting Authorisation
  • 85 posts

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:

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.


Michael.Hu

Michael.Hu
  • Full Members
  • 72 posts

Posted 27 June 2008 - 13:31

Hey Udo!

Das hat geklappt!!! Tausend Dank für den super Tip :-)

Viele Grüsse
Michael