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 beim Deinstallieren


5 replies to this topic

Smileman

Smileman
  • Members
  • 11 posts

Posted 07 November 2005 - 16:36

Hallo,

ich versuche schon seit einer Weile, einen Dialog am Ende des Deinstallationsprozesses einzufügen, um den User z.B. zu fragen, ob ein oder mehrere bestimmte Verzeichnisse endgültig gelöscht werden sollen.

Dazu habe ich folgendes gemacht:
(1) Eine CustomAction eingeführt, die nur beim deinstallieren aufgerufen wird (Condition: REMOVE="ALL") -> funktioniert soweit.
(2) Diese CustomAction ruft eine Funktion auf. Funktioniert ebenfalls.
(3) In dieser Funktion definiere ich einen Dialog (den ich zuvor schon erstellt habe) und möchte diesen anzeigen. Funktioniert nicht. EzDefineDialog(...) bringt keinen Fehler zurück. Beim Aufruf von WaitOnDialog(...) bekomme ich aber immer den Fehler DLG_ERR zurück (In diesem Dialog habe ich einen Yes-Button und einen No-Button).

(4) Dann wollte ich das ganze einfach nur mit einer AskYesNo(...) Dialogbox erreichen. Diese wird aber niemals im Vordergrund "aufgepoppt", sondern bleibt ständig im Hintergrund und dann kann der User davon schlecht was mitbekommen.

Bin schon etwas genervt sad.gif

Kann mir jemand einen Tipp geben?
Bin für alles dankbar!

Smileman

Holger.Winkelmann

Holger.Winkelmann
  • Members
  • 19 posts

Posted 08 November 2005 - 16:44

Eine Möglichkeit für einen einfachen Dialog bietet die MessageBox-Funktion aus der Windows-API, die man als CA definieren kann.
Bin mir nicht sicher, ob es das ist was du brauchst, aber in der Online-Hilfe zu IS 11 ist ein gutes Sample (damit habe sogar ich das hingekriegt).

HTH Holger

Smileman

Smileman
  • Members
  • 11 posts

Posted 09 November 2005 - 09:55

Danke für den Hinweis ...

Mit der MessageBox habe ich es auch probiert - grundsätzlich geht es auch.
Aber die MessageBox bzw. die AskYesNo-Box bleibt beim "Aufpoppen" im Hintergrund. D.h. die Statusanzeige mit dem Verlauf bleibt stehen (auf Rest 0 Sekunden) - und in der Taskleiste erscheint eine neues Feld für die MessageBox/AskYesNoBox. Leider kommt diese aber nicht in den Vordergrund - so daß der User sie sofort sieht. Das ist dann natürlich nicht so prickelnd...

... hab auch schon alles mögliche versucht - kann mir aber nicht herleiten, warum dies so ist.

unsure.gif

Holger.Winkelmann

Holger.Winkelmann
  • Members
  • 19 posts

Posted 09 November 2005 - 17:22

QUOTE
Aber die MessageBox bzw. die AskYesNo-Box bleibt beim "Aufpoppen" im Hintergrund
Das klappt bei mir einwandfrei, obwohl ich zu Anfang Probleme hatte, weil ich das mit "MsiWindowHandle" nicht richtig gemacht hatte, aber seitdem ...

Bei mir soll die Uralt-Version meines Verfahrens deinstalliert werden. Das klappt auch ganz gut, aber das zugehörige Deinstallations-Fenster hängt auch nur hinter dem IS-Fenster.
Habe in der InstallShield-Community gelesen, dass das daran liegen kann, dass die IS-Programmierer nicht den korrekten Fenster-Stil verwenden und solche Aktionen (ich wollte das Fenster minimieren, meine Deinstallation per CA durchführen und dann wieder maximieren) nicht möglich sind.

Hast du mal versucht deine Box als Ereignis über "DoAction" an einen PushButton eines der Dialoge anzuhängen?

HTH

Smileman

Smileman
  • Members
  • 11 posts

Posted 11 November 2005 - 08:26

Hmmm ... naja - nachdem die Deinstallation aus Systemsteuerung -> Software heraus gestartet wird, gibt es da kein Dialog der aufpoppt und an den ich den Dialog anhand DoAction anführen könnte. Die komplette Deinstallation läuft ja fast sozusagen im "Silent Mode" - also man sieht, dass was passiert an dem Fortschrittsbalken, aber mehr auch nicht.

Bin momentan echt ratlos ... is aber auch echt ein Witz, wenn man eine MessageBox / AskYesNo Box aufpoppen lässt und die im Hintergrund aufpoppt (oder minimiert) ...

Holger, kannst Du mir mal Dein Sample hier anführen, das Du aus der Online Hilfe des IS 11 hast? Was machst Du da mit "MsiWindowHandle"? Baust Du erst einen Dialog und holst ihn dann separat in den Vordergrund?

Ich hab es bisher - wie gesagt - anhand einer CustomAction probiert - dort eine Script-Funktion aufgerufen und wollte dann nur kurz ne Frage stellen am Ende der Deinstallation ... mehr auch nicht. Dachte nicht, daß es da mit dem "Monster"-Tool "Installshield" ein Problem geben könnte ... tongue.gif

Danke

Marko

Edited by Smileman, 11 November 2005 - 08:29.


Holger.Winkelmann

Holger.Winkelmann
  • Members
  • 19 posts

Posted 18 November 2005 - 12:33

Sorry, dass ich jetzt erst antworte, aber ich bin nicht täglich im Forum und manchmal erwarten die Kunden auch, dass man sich um sie kümmert...

QUOTE
Holger, kannst Du mir mal Dein Sample hier anführen, das Du aus der Online Hilfe des IS 11 hast? Was machst Du da mit "MsiWindowHandle"? Baust Du erst einen Dialog und holst ihn dann separat in den Vordergrund?
Das Ganze findet man unter "Beispiel: Aufrufen von MessageBoxA in einem Setup".
Der Ablauf sah bei mit in etwa so aus:
1. Anlegen einer CA wie in dem Beispiel der Online-Hilfe beschrieben
2. Unter Benutzeroberfläche/Dialogfelder den richtigen Dialog gesucht (bei mir: ReadyToInstall)
3. Dort bei Verhalten den PushButton "InstallNow" ausgewählt
4. Unter "Ereignisse" ein "DoAction" hinzugefügt. Als Argument ist der Name der unter 1. angelegten CA anzugeben. Eine Bedingung ist empfehlenswert aber nicht zwingend.
5. Das Ereignis in der Auflistung an die richtige Stelle verschoben.
Man kann die CA natürlich auch in die Sequence einbauen. Das hat bei mir auch ohne Probleme gaklappt.

HTH Holger