11 Replies Latest reply on Aug 22, 2016 3:36 AM by derniwi

    Deinstallation und Überspringen von InstallFileList

    derniwi Master
      Hallo,

      wenn ich mit InstallFileList / CopyFileList eine oder mehrere Dateien verteile, werden die bei der Deinstallation des Paketes irgendwie immer gelöscht. War das früher nicht anders? Das Problem habe ich sowohl bei InstallFileList als auch bei CopyFileList (laut Doku sind die Befehle aber auch identisch).

      Hier mal ein kurzes Test-Skript:
      If not CheckInstallMode(imUninstall)
      CopyFileList('C:\Temp')
        .\test.txt
      EndProc/TS
      !
      : $BeginUninstallScript
      !Nichts zu tun


      Das Paket habe ich nur für die Installation im Benutzerkontext freigegeben. Die Test-Datei wird auch schön kopiert. Aber bei der Deinstallation des Paketes wird sie auch wieder entfernt:
      13:28:42.204 2        ---->Starting uninstallation of "test"

      13:28:42.204 1        Evaluating condition "not CheckInstallMode(imUninstall)"
      13:28:42.204 2        Condition FALSE  -> skipping IF part
      13:28:42.204 2        Skipping command : CopyFileList

      13:28:42.204 2        -> : $BeginUninstallScript
      13:28:42.204 1         xniSetup: Reverting to install mode [6010]

      13:28:42.204 2        nilsPipe: ->Routing uninstallation of wksta-part to service
      13:28:42.204 1         nilsPipe: Setting active Server project to 'db:master\test'
      13:28:42.204 2         nilsPipe: NPI: xniFPS: '' is installed
      13:28:42.220 0         nilsPipe: Initializing project 'db:master\test'...
      13:28:42.220 2         nilsPipe: NPI: Performing wksta part of uninstall for db:master\test
      13:28:42.360 2         nilsPipe: NPI: Deleting C:\Temp\test.txt
      13:28:42.376 2         nilsPipe: NPI: Removing wksta part uninstall info from registry
      13:28:42.376 2         nilsPipe: NPI: WkSta part done.
      13:28:42.376 1         nilsPipe: Setting active Server project to '(null)'
      13:28:42.376 2         nilsPipe: NPI: xniFPS: '{7A6A3AF5-64A6-4B6C-9DF4-A25C5273B4D0}' is installed
      13:28:42.391 2         nilsPipe: ---> Service part of uninstall complete...
      13:28:42.391 1        Doing user part of file uninstall...
      13:28:42.391 0        ExR status report is disabled for test
      13:28:42.391 0        nilsPipe: Both current project and new project are NULL
      13:28:42.391 2        xniFPS: '{7A6A3AF5-64A6-4B6C-9DF4-A25C5273B4D0}' is uninstalled


      DSM-Version ist die 7.2.5.2676 (Hotfix 5)

      Eigentlich würde ich erwarten, dass die Dateien erhalten bleiben.

      Ich habe ein Paket, für das ich ein manuelles Update durchführe und hier einige Dateien in einem zweiten Paket kopiere. Dabei werden vom Original halt eben Dateien überschrieben. Jetzt habe ich das Problem mit Deinstallation, dass dann die Dateien gelöscht werden, bevor die Deinstallation losläuft. Eigentlich würde die Deinstallation die neueren Dateien entsorgen...

      Muss dann wohl mit vielen Copy-Befehlen oder einem Batch arbeiten...

      Gruß
      Nils
        • 1. Re: Deinstallation und Überspringen von InstallFileList
          NicoS1 Master
          Hallo Nils,
          ich habs eben nachgestellt. Ein kleines Paket mit InstallFileList und CopyFileList in einem if not checkinstallmode(uninstall).

          7.2.2.2331 (2013.2 ohne HF) ==> Gleiches Verhalten wie bei dir.

          13:46:48.600 1        Evaluating condition "not CheckInstallMode(imUninstall)"
          13:46:48.600 2        Condition FALSE  -> skipping IF part
          13:46:48.600 2        Skipping command : InstallFileList
          13:46:48.601 2        Skipping command : CopyFileList

          13:46:48.601 2        -> : $BeginUninstallScript
          13:46:48.602 1         xniSetup: Reverting to install mode [6010]

          13:46:48.603 2        nilsPipe: ->Routing uninstallation of wksta-part to service
          13:46:48.603 2         nilsPipe: NPI: Initializing Runtime - Manager ..
          13:46:48.625 1         nilsPipe: Setting active Server project to 'db:master\Uninstall Test'
          13:46:48.626 0         nilsPipe: Initializing project 'db:master\Uninstall Test'...
          13:46:48.668 2         nilsPipe: NPI: Performing wksta part of uninstall for db:master\Uninstall Test
          13:46:48.829 2         nilsPipe: NPI: Deleting C:\Fernwartung\test.txt
          13:46:48.831 2         nilsPipe: NPI: Deleting C:\Fernwartung\test2.txt
          13:46:48.835 2         nilsPipe: NPI: Removing wksta part uninstall info from registry
          13:46:48.837 2         nilsPipe: NPI: WkSta part done.
          13:46:48.838 1         nilsPipe: Setting active Server project to '(null)'
          13:46:48.839 2         nilsPipe: NPI: xniFPS: '{577E702A-A550-4C42-A271-5AA11DCEC058}' is installed
          13:46:48.839 2         nilsPipe: ---> Service part of uninstall complete...
          13:46:48.840 1        Doing user part of file uninstall...
          13:46:48.841 0        ExR status report is disabled for Uninstall Test
          13:46:48.841 2        xniFPS: '{577E702A-A550-4C42-A271-5AA11DCEC058}' is uninstalled



          7.2.1.2070 (unsere aktuell älteste Umgebung) ==> Beide Dateien bleiben erhalten:

          13:50:13.892 2        ---->Starting uninstallation of "Uninstall-Test"
          13:50:13.894 2        Condition FALSE  -> skipping IF part
          13:50:13.894 2        Skipping command : InstallFileList
          13:50:13.895 2        Skipping command : CopyFileList

          13:50:13.895 2        -> : $BeginUninstallScript

          13:50:13.896 2        nilsPipe: ->Routing uninstallation of wksta-part to service
          13:50:13.897 2         nilsPipe: NPI: Initializing Runtime - Manager ..
          13:50:13.927 2         nilsPipe: NPI: Performing wksta part of uninstall for db:master\Uninstall-Test
          13:50:13.928 2         nilsPipe: NPI: Removing wksta part uninstall info from registry
          13:50:13.929 2         nilsPipe: NPI: WkSta part done.
          13:50:13.930 2         nilsPipe: NPI: xniFPS: '{4A46902E-8C04-4D51-AB2B-1CF960321C11}' is installed
          13:50:13.931 2         nilsPipe: ---> Service part of uninstall complete...
          13:50:13.932 2        xniFPS: '{4A46902E-8C04-4D51-AB2B-1CF960321C11}' is uninstalled



          Also kam das Verhalten irgendwo zwischen 7.2.1 Hotfix 6 und 2013.2

          Wenn ich wetten müsste, würde ich darauf wetten dass dieser Eintrag in den Release Notes von 2013.2 das Verhalten "kaputt" gemacht hat:

          Files supposed to get installed by a CopyFileList command within the
          $BeginUninstallScript section of the Script actually also got deleted after the package
          uninstallation (RM160854)



          Also ==> Ticket eröffnen
          • 2. Re: Deinstallation und Überspringen von InstallFileList
            derniwi Master
            Danke.
            Ticket wird eröffnet.
            • 3. Re: Deinstallation und Überspringen von InstallFileList
              NicoS1 Master
              würde mich freuen, wenn du uns auf dem Laufenden hälst
              • 4. Re: Deinstallation und Überspringen von InstallFileList
                derniwi Master
                Mache ich, habe mal das Test-Paket exportiert und auch ein Protokoll hochgeladen.
                • 5. Re: Deinstallation und Überspringen von InstallFileList
                  derniwi Master
                  Aktueller Stand:
                  Dateien, welche mit InstallFileList oder CopyFileList während der Installation oder auch während der Deinstallation (!) kopiert werden, werden nach dem Deinstallieren des Paketes gelöscht - sofern das Paket die Deinstallation unterstützt.

                  Dies kann aktuell nicht unterbunden werden. Der Call hat dazu geführt, dass das Verhalten insofern geändert werden soll, dass Dateien, die während der Deinstallationsphase kopiert werden, also nach
                  : $BeginUninstallScript

                  nicht mehr gelöscht werden sollen.

                  Das geht jetzt leider an meinem Problem vorbei. Ich habe mal nachgefragt, ob man nicht eine Checkbox einbauen kann, so dass man bei InstallFileList / CopyFileList angeben kann, ob die Dateien bei der Deinstallation entfernt werden.

                  Das Problem scheint generell folgendes zu sein:
                  Bei der Deinstallation wird das Skript ja nochmals von oben nach unten abgearbeitet. Dabei werden Befehl umgekehrt, falls möglich. Aber das geht halt nicht immer. Bisher hat die Abfrage
                  If not CheckInstallMode(imUninstall)

                  soweit gut funktioniert, dass man die Installation und Deinstallation sauber trennen konnte, wenngleich das auch etwas mehr Aufwand erzeugt. Aber oft ist es bei uns so, dass die automatische Deinstallation nur bei wenigen Paketen funktioniert.

                  Ich halte Euch weiter auf dem Laufenden.
                  • 6. Re: Deinstallation und Überspringen von InstallFileList
                    derniwi Master
                    Aktueller Stand:
                    Das Problem wird intern weiter besprochen.
                    Aktuell gibt es nur den Workaround, die Dateien über ein Skript (z.B. per .cmd) zu kopieren, da dieser Befehl nicht umgekehrt wird.
                    • 7. Re: Deinstallation und Überspringen von InstallFileList
                      Andreas.K Apprentice
                      Hallo zusammen,
                      gibt es zu dem Thema neue Infos? Generell wäre es mir am liebsten wenn ich die automatische Deinstallation per Paket-Eigenschaft ganz abschalten könnte

                      Gruß Andreas
                      • 8. Re: Deinstallation und Überspringen von InstallFileList
                        Frank.Scholer Master
                        HI Andreas,

                        Generell wäre es mir am liebsten wenn ich die automatische Deinstallation per Paket-Eigenschaft ganz abschalten könnte


                        Und was hindert dich daran, den Haken bei "Deinstallation unterstützt" einfach rauszunehmen? Oder hab ich das jetzt nicht kapiert...?

                        HTH, Grüße Frank
                        • 9. Re: Deinstallation und Überspringen von InstallFileList
                          _Mel_ Master
                          hab ich zuerst auch gedacht, aber ich glaube ihn stört nicht die deinstallation an sich, sondern nur das, was DSM automatisch macht; also befehlsumkehrung vor dem beginuninstallscript und das löschen der installierten dateien.

                          das zweite könnte man erreichen indem man dieses storeuninstallinormation deaktiviert (wobei es da bis vor einiger zeit noch ein problem gab, d.h. dafür sollte man eine aktuelle (und gepatchte) dsm version haben)
                          • 10. Re: Deinstallation und Überspringen von InstallFileList
                            Andreas.K Apprentice
                            Hi Frank,
                            ich meine nicht die Deinstallation allgemein sondern den Versuch vom DSM, alle Befehle umzukehren. Das heißt, DSM soll nur das durchführen was ich im Deinstallations-Teil eintrage. Ich teste zwar ein Paket mit dem "If not CheckInstallMode(imUninstall)" aber vielleicht hat sich ja etwas in der Zwischenzeit getan?
                            Vielen Dank für deine schnelle Antwort
                            Andreas

                            Edit: Genau das meinte ich, Mel. Wir verwenden DSM 2016.1, in dem Fall werde ich das mal testen, danke dir!
                            • 11. Re: Deinstallation und Überspringen von InstallFileList
                              derniwi Master
                              Hallo,

                              meines Wissens gibt es hier nichts Neues.
                              Die Deinstallation kehrt immer zuerst einmal die Befehle um, soweit möglich... und irgendwann kommt dann der Deinstallationsteil.

                              Für das Kopieren von Dateien während der Installation sollte man dann eine Batch-Datei aufrufen. Nicht schön, aber das funktioniert...

                              Gruß
                              Nils