2 Replies Latest reply on May 6, 2014 12:08 AM by derniwi

    $BeginUninstallScript

    uei1 Apprentice
      Hallo bin neu deswegen sorry wenn die Frage dumm ist. Habe in Problem und zwar installiere ich in einem escript Paket 3 msi, die Installation passt allerdings bei der Deinstallation habe ich den Verdacht (schlägt fehl), dass zuerst das eine Basis Packet deinstalliert wird und somit dann die beiden anderen nicht mehr deinstalliert werden können. Wenn ich hingegen mit execute ex msiexec mit Parameter….die Installation und dann die deinstallation aufrufe klappt alles…nun meine Frage, gibt es da eine Möglichkeit das $BeginUninstallScript zu steuern, sodass als erstes die Nebenpakete und dann erst das Hauptpaket deinstalliert wird ?

      danke
        • 1. Re: $BeginUninstallScript
          NicoS1 Master
          Hallo,

          in einem Fall, wo ich möchte das DSM keinerlei Befehle bei der Deinstallation rückgängig macht und nur das $BeginUninstallScript ausführt, nehme ich eine If Anfrage. Dort kannst du "Auf Installationsmodus prüfen". Wählst "Deinstallation" und dann verneinst du ("Ausschließen") die Bedingung. Da sollte dann sowas stehen wie "If not CheckInstallMode(ImUninstall)"

          Dann rückst du alles bis zum $BehinUninstallScript darunter 1x ein

          Jetzt kannst du die Deinstallation in genau der Reihenfolge wie du sie brauchst selbst im $BeginUninstallScript Teil scripten.
          • 2. Re: $BeginUninstallScript
            derniwi Master
            Hallo,

            wenn Du in das Paketverzeichnis reinschaust, siehst du eine Datei "script.inc". Dies ist das eScript, welches man mit einem Texteditor öffnen kann (sollte man aber so nicht bearbeiten, wenn man nicht 100% weiß, was man tut). Jedenfalls ist das ideal, um das Skript zu kopieren und hier im Forum einzufügen. Du löschst natürlich die kritischen Teile wie evtl. verwendete Benutzernamen, Domänen oder Kennwörter raus bzw. überschreibst diese.

            Dann wird es hier einfacher, auf solche Probleme zu antworten.

            Aber wie Nico geschrieben hat, kann man das an manchen Stellen recht gut steuern:
            If not CheckInstallMode(imUninstall)
            ! Installation, Neuisntallation oder Reparatur
            Set('_RC','0')
            Set('_RCTEXT','')
            If CheckInstallMode(imAppRepair)
            !  Anwendung reparieren
              ExecuteEx('%WINSYSDIR%\msiexec.exe /faums ".\Extern$\Msidata\setup.msi"  /log "%Windir%\LOGS\DSM\setup.log" /quiet
            orestart','_RC','20')/?/TS
            Else
              If CheckInstallMode(imReinstall)
            !   Deinstallation für eine erneute Installation
               ExecuteEx('%WINSYSDIR%\msiexec.exe /uninstall ".\Extern$\Msidata\setup.msi" /log "%Windir%\LOGS\DSM\setup.log" /quiet
            orestart','_RC','20')/?/TS
            !  
            !  Installation
              ExecuteEx('%WINSYSDIR%\msiexec.exe /i ".\Extern$\Msidata\setup.msi" /log "%Windir%\LOGS\DSM\setup.log" /quiet
            orestart','_RC','20')/?/TS
            !
            If %_RC%='TIMEOUT'
              ExitProcEx(Failed,'Installation timed out!')
            If %_RC%='1641' or %_RC%='3010'
              System_Reset
            If %_RC%='0' or %_RC%='1641' or %_RC%='3010'
              ExitProc(Done)
            Else
              ExitProcEx(Failed,'Installation failed with Return Code %_RC%')
            !
            : $BeginUninstallScript
            Set('_RC','0')
            Set('_RCTEXT','')
            !Deinstallation
            ExecuteEx('%WINSYSDIR%\msiexec.exe /uninstall ".\Extern$\Msidata\setup.msi" /log "%Windir%\LOGS\DSM\setup.log" /quiet
            orestart','_RC','20')/?/TS
            If %_RC%='TIMEOUT'
            ExitProcEx(Failed,'Installation timed out!')
            If %_RC%='1641' or %_RC%='3010'
            System_Reset
            If %_RC%='0' or %_RC%='1641' or %_RC%='3010'
            ExitProc(Done)
            Else
            ExitProcEx(Failed,'Uninstallation failed with Return Code %_RC%')


            Ich persönlich versuche, mehrere MSI-Installationen in einem Paket zu vermeiden, dafür nutze ich dann einzelne Pakete und fasse die Installationen in einem Software-Set zusammen.

            Gruß
            Nils