11 Replies Latest reply on Aug 7, 2015 2:53 AM by asch68

    Software per MSI deinstallieren

    asch68 Expert
      Hallo Zusammen,

      ich bin irgend am stocken, komme nicht so richtig weiter... :-(((
      Ich versuche eine Software zu deinstallieren, die per msiexec /x deinstalliert werden kann, jedenfalls, wenn ich das am Rechner in die commandline, oder aber auch die eigene Deinstallation des Programmes (link) benutze.
      Aber irgendwie bekomme ich das nicht im Script hin.
      Ich habe versucht, eine Batch zu starten, in der der Befehl der MSI drinsteht, auch per RunAs geht es nicht.
      Als Fehlermeldung erhalte ich bei RunAs zum Beispiel, das die angegebene Datei nicht gefunden werden kann, die msiexec ist aber am Rechner vorhanden, wie schon geschrieben es geht ja auch ohne DSM....
      Was mache ich hier noch falsch, das kann doch eigentlich nicht so schwer sein.....oder...!?

      Danke

      Andreas
        • 1. Re: Software per MSI deinstallieren
          ZellOr Apprentice
          Hallo asch68,

          kannst Du mal das Script und oder das Logfile posten?

          Grüße
          • 2. Re: Software per MSI deinstallieren
            asch68 Expert
            !Execute('.\Extern$\deinstall.bat')/?
            RunAs('msiexec.exe','/x {A201F93A-61B3-4A58-8BE1-EFA36174C059}','administrator','xxxxxxxxxxxxx','5',WaitForExecution+Undone)
            !
            !
            Execute('%NiDir%\Extern$\svpro_2015v0_x86.exe /S /v/qn')/?/TS
            Copy('.\Extern$\svlic.xml','C:\ProgramData\Solid Concepts Inc\Licenses')/U/TS
            !
            !Dateien
            InstallFileList('%WINSYSDIR%\Tasks\Microsoft\Windows\SoftwareProtectionPlatform')
            %NiDir%\Extern$\SvcRestartTask
            EndProc/U/TW
            InstallFileList('%USERPROFILE%\AppData\Local\Solid Concepts Inc\SolidView Pro 2015')
            %NiDir%\Extern$\AnnotationSettings.xml
            %NiDir%\Extern$\MeasurementSettings.xml
            %NiDir%\Extern$\ModifySettings.xml
            %NiDir%\Extern$\SolidViewLayout.XML
            %NiDir%\Extern$\SolidViewPreferences.xml
            %NiDir%\Extern$\SolidViewPreferencesSchemes.xml
            %NiDir%\Extern$\SolidViewRibbonLayout.XML
            %NiDir%\Extern$\SvMatDen.txt
            EndProc/U/TU
            InstallFileList('C:\Users\All Users\Solid Concepts Inc\Licenses')
            %NiDir%\Extern$\Licenses\svlic.xml
            EndProc/U/TW
            !
            !Registry
            RegLoad('.\Standard.nir')
            • 3. Re: Software per MSI deinstallieren
              info@offlimits-it.com Expert
              Du solltest MSI nicht mit RunAs msiexec installieren sondern mit "MSIINstallProduct" dann funktioniert die Deinstallation von ganz alleine falls du nur deinstallieren möchtest gibt es den Befehl MSIUninstallProductEX"
              • 4. Re: Software per MSI deinstallieren
                asch68 Expert
                [QUOTE=info@offlimits-it.com;45988]Du solltest MSI nicht mit RunAs msiexec installieren sondern mit "MSIINstallProduct" dann funktioniert die Deinstallation von ganz alleine falls du nur deinstallieren möchtest gibt es den Befehl MSIUninstallProductEX"

                Das hatte ich schon im Visier, leider verlangt hier der Befehl die direkte MSI Installationsdatei, um die ID auszulesen.
                Das Programm kommt aber leider nur als EXE, somit kann ich die MSI ID nicht eintragen....
                Ich versuche das jetzt mal, irgendeine MSI zu nehmen und in der Script.in dann die ID anzupassen.
                Danke, melde mich, wenn der Weg geklappt hat.
                • 5. Re: Software per MSI deinstallieren
                  asch68 Expert
                  hat leider nicht funktioniert....
                  • 6. Re: Software per MSI deinstallieren
                    XN04113 Specialist
                    als erstes sollte man prüfen ob die Software überhaupt installiert ist
                    If MSIIsProductInstalled('{A201F93A-61B3-4A58-8BE1-EFA36174C059}')
                    und dann
                    MSIUnInstallProduct('{A201F93A-61B3-4A58-8BE1-EFA36174C059}','[produktname]')/TS
                    als Service Befehl flaggen
                    • 7. Re: Software per MSI deinstallieren
                      asch68 Expert

                      als erstes sollte man prüfen ob die Software überhaupt installiert ist
                      If MSIIsProductInstalled('{A201F93A-61B3-4A58-8BE1-EFA36174C059}')
                      und dann
                      MSIUnInstallProduct('{A201F93A-61B3-4A58-8BE1-EFA36174C059}','[produktname]')/TS
                      als Service Befehl flaggen




                      Perfekt, danke das war es was ich brauchte, nun geht es.

                      Schöne Warme Tage und ein schönes WE.

                      Andreas
                      • 8. Re: Software per MSI deinstallieren
                        ZellOr Apprentice
                        Wenn Du den ProductCode nicht hardcodiert im Script haben möchtest und die Eigenschaft "InstallLocation" bei der Installation gesetzt wird, dann kannst Du auch wie folgt vorgehen:


                        Set('L_Win32_Product_IdentifyingNumber','NULL')

                        WMISimpleQuery('\\.\root\cimv2','Win32_Product','InstallLocation=%ProgramFilesDir%\Java\jre8\','L_Win32_Product_')
                        IdentifyingNumber
                        Name
                        EndProc
                        If not %L_Win32_Product_IdentifyingNumber%='NULL'
                        ! # "Oracle Java(TM) SE Runtime Environment 1.8 x86" deinstallieren.
                        MSIUnInstallProductEx('%L_Win32_Product_IdentifyingNumber%',' ','REBOOT=REALLYSUPPRESS','2','0')/TS

                        (Auszug aus meinem Java 1.8-Paket)
                        • 9. Re: Software per MSI deinstallieren
                          gl-hl Apprentice
                          Falls es dir hilft:
                          Ich nutze gerne das Tool myUninstaller von Nirsoft um schnell und unkompliziert die MSI-GUIDs auszulesen.
                          Danach kannst du diese Daten in der Packaging Workbench im Expertenmodus einfach per Copy und Paste eintragen. Wichtig ist nur die MSI-GUID und der Softwarename selbst.

                          Vorher einfach den MSIUnInstallProduct Befehl reinziehen und auf irgendein MSI verweisen und danach im Expert-Mode editieren

                          Hat bisher immer super funktioniert!
                          • 10. Re: Software per MSI deinstallieren
                            NicoS1 Master
                            Hallo Asch,

                            vielleicht noch als kleine Anmerkung. Per RunAs oder Execute einen "msiexec.exe /X" auszuführen sollte natürlich genau so funktionieren wie ein MsiUninstallProduct.

                            Wenn ich mir dein Script anschaue liegt das bei dir höchstwahrscheinlich da dran, dass der Befehl nicht komplett ist:

                            Du benutzt: msiexec.exe /X{A201F93A-61B3-4A58-8BE1-EFA36174C059}
                            Das sollte dir ein Fenster bringen mit der Abfrage ob du das Produkt deinstallieren willst oder nicht. Das wird, vor allem beim Serviceinstaller bzw. wenn der Befehl "per Service" geflaggt ist, vermutlich auf die Bretter gehen.

                            Was du aus DSM heraus noch bräuchtest wäre hinten dran der Schalter /qn, also so:
                            msiexec.exe /X{A201F93A-61B3-4A58-8BE1-EFA36174C059} /qn
                            Das ist der Unattendend Modus ohne Benutzeroberfläche.

                            Gruß
                            • 11. Re: Software per MSI deinstallieren
                              derniwi Master
                              Hallo,

                               

                              msiexec.exe /X{A201F93A-61B3-4A58-8BE1-EFA36174C059} /qn



                              Ich würde noch den Parameter "
                              orestart" anhängen, damit kein autmoatischer Neustart erfolgt:
                              msiexec.exe /X{A201F93A-61B3-4A58-8BE1-EFA36174C059} /qn 
                              orestart


                              Evtl. während der Testphase auch
                              msiexec.exe /X{A201F93A-61B3-4A58-8BE1-EFA36174C059} /qb!- 
                              orestart /log "c:\Test.log"


                              Siehe auch die [URL="https://msdn.microsoft.com/en-us/library/aa367988%28v=vs.85%29.aspx"]Microsoft-Seite bezgl. MsiExec.

                              Ich würde auch den Return Code abfragen, um zu sehen, dass alles funktioniert hat und auch ggfs. einen Neustart durchzuführen. Mögliche Werte für einen notwendigen Neustart sind 3010 und auch 1641, wobei 1641 sagt, dass das System jetzt schon einen Neustart in die Wege geleitet hat. Da kommt man dann leider nicht mehr raus. Der Parameter "
                              orestart" soll das eigentlich verhindern, aber ich habe bei einigen MSI-Dateien genau diesen Fall schon ein paar mal erlebt.

                              Gruß
                              Nils