3 Replies Latest reply on Oct 7, 2013 5:23 AM by derniwi

    MSGBOXEX liefert falschen wert

    erzwodezwo Expert
      Hallo,

      ich muss in einem Paket eine Abfrage machen ob das Programm momentan geöffnet ist, ist dem so soll wenn das Paket nicht als Service läuft dem User eine Message Box angezeigt werden, in der der User mit OK das schließen des Programms veranlassen kann oder mit Abbrechen die Installation verschieben.
      Selbiges möchte ich auch bei der Deinstallation abfragen, allerdings funktioniert hier die MsgBoxex nicht sauber, ich habe einen Timeout von 60 sec eingestellt und als default Antwort "OK" vorgeben, läuft jetzt der Timer in einen Timeout dann setzt er als wert "CANCEL" und setzt das Paket auf undone, setzt aber die Deinstallation fort in der Form dass er die Programordner löscht aber keinen KillProzess durchführt.

      Hier mal ein Auszug aus meinem Script:

      If %WMI_Name%='WinRAR.exe'
      If not RunningAsService
        Set('choice','OK')
        MsgBoxEx('Für die Deinstallation des Software Pakets muss WinRAR geschlossen werden.Bestätigen Sie mit Ok zum Schliessen von WinRAR oder mit Abbrechen um die Deinstallation zu verschieben, sie wird dann im nächsten Wartungsintervall automatisch neu gestartet.','choice','',mbOKCancel,'60','0')
        If %choice%='CANCEL'
         ExitProcEx(Undone,'Der Anwender hat die Paketinstallation abgebrochen')
      KillProcess('WinRAR.exe',kpByFileName+kpKillAll)/TS
      DecrementVar('count','1')
      If %Count%='0'
        ExitProcEx(Undone,'WinRAR konnte nicht beendet werden')
      goto UnWinRAR
      ExecuteEx('%ProgramFilesDir64%\WinRAR\uninstall.exe /s','ReturnRemove','10')/?/TS

      Und aus dem Log:

      20:18:25.762 2        ->  ExitProc(Done)
      20:18:25.762 0         Uninstall of ExitProc not supported

      20:18:25.763 2        -> : $BeginUninstallScript
      20:18:25.764 1         xniSetup: Reverting to install mode [2010]

      20:18:25.765 2        -> Set('count','3')

      20:18:25.767 2        -> : UnWinRAR

      20:18:25.768 2        -> Set('WMI_Name','0')

      20:18:25.770 2        -> WMISimpleQuery('\\.\root\cimv2','Win32_Process','Name=WinRAR.exe','WMI_') ... /TS
      20:18:25.770 2         nilsPipe: Executing through IPC : WMISimpleQuery
      20:18:25.771 1         nilsPipe: Script needs addon xniTools.dll for execution - notifying NPI
      20:18:25.772 2         nilsPipe: NPI: -> WMISimpleQuery('\\.\root\cimv2','Win32_Process','Name=WinRAR.exe','WMI_') ...
      20:18:25.773 1         nilsPipe: Service var bridge: Setting var WMI.ERROR to 0
      20:18:25.774 1         nilsPipe: Service var bridge: Setting var WMI.ERRORTEXT to
      20:18:25.990 1         nilsPipe: Service var bridge: Setting var WMI_Name to WinRAR.exe

      20:18:25.992 1        Evaluating condition "_WMI_Name_='WinRAR.exe'"
      20:18:25.993 0         Comparing 'WinRAR.exe' with 'WinRAR.exe'
      20:18:25.993 2        Condition TRUE  -> entering IF part

      20:18:25.994 1        Evaluating condition "not RunningAsService"
      20:18:25.994 2        Condition TRUE  -> entering IF part

      20:18:25.995 2        ->   Set('choice','OK')

      20:18:25.996 2        ->   MsgBoxEx('Für die Deinstallation des Software Pakets muss WinRAR geschlossen werden.Bestätigen Sie mit Ok zum Schliessen von WinRAR oder mit Abbrechen um die Deinstallation zu verschieben, sie wird dann im nächsten Wartungsintervall automatisch neu gestartet.','choice','',mbOKCancel,'60','...
      20:18:25.997 0         Failed to read registry value 'HKCU\Software\NetSupport\NetInstall\NetInstall Installer\AlwaysMinimizeAIWindowNcpCache'. Error code = '2'
      20:18:25.997 0         Failed to read registry value 'HKCU\Software\NetSupport\NetInstall\NetInstall Installer\AlwaysMinimizeAIWindow'. Error code = '2'
      20:18:25.997 2         Minimize autoinstaller window: 'no'
      20:19:27.275 1         Message box command timed out

      20:19:27.278 1        Evaluating condition "_choice_='CANCEL'"
      20:19:27.280 0         Comparing 'CANCEL' with 'CANCEL'
      20:19:27.280 2        Condition TRUE  -> entering IF part

      20:19:27.281 2        ->    ExitProcEx(Undone,'Der Anwender hat die Paketinstallation abgebrochen')
      20:19:27.283 2         ER: Creating event manager
      20:19:27.283 1         ER: file name is C:\Program Files (x86)\NetInst\ExR\Event.erl
      20:19:27.284 1         ER: user name is xne0236
      20:19:27.285 1        Logging up ExR event 3006 (0x00000bbe)
      20:19:27.305 0        Check if sending data is on: ExrClientOptions.ExrSendingActivated

      20:19:27.306 1        ExR is allowed to send data.
      20:19:27.306 1        Loading SI.dll ...

      20:19:27.307 1        SI: Starting ExRSend.exe ...
      20:19:27.309 2        SI: Rewriting SI client state data...
      20:19:27.309 1         SI: Reading client state...
      20:19:27.349 0         SI: Getting IP addresses...
      20:19:27.349 0         SI: Getting MAC addresses...
      20:19:27.349 1         SI: Writing possible changes of client state...
      20:19:27.365 2        xniFPS: '{43F80F60-C51F-4EDB-B43C-CB1DCB1A8484}' is uninstalled

      20:19:27.366 2        ---->Uninstallation of Win RAR 5.00 Deutsch (64 bit) has not completed on exit.

      Hab ich einen Denkfehler oder kann ich den MsgBoxEx Befehl so nicht in der Deinstallation anwenden?