2 Replies Latest reply on Feb 28, 2018 1:13 AM by Vito

    Links erstellen im Userpart

    Vito Apprentice

      Guten Morgen,

       

      habmal wieder eine Frage oder eher einen best Practice Ansatz fürs paketieren

      Hierzu muss ich sagen, dass mir hier bisher immer geholfen wurde

       

       

      Das OSD läuft komplett mit einem DummyUser.durch

      Danach wird erst das NB für den eigentlichen Benutzer eingerichtet.

      Nun ist es so dass DSM alle Pakete nochmal durchgeht wenn er irgendwelche Userparts in einem Script ausführen muss (oder?)

       

      Soweit so gut jetzt läuft das gesamte Script wieder los pbwohl wir nur einen Befehl haben der im "Userpart" ausgeführt warden soll (Link erstellen im Startmenü).

      Jetzt kommt das Script aber gar nicht mehr an die Stelle, da wir im Script vor der Installation des VPN Clients auf den Regwert "PendingFilesRenameOperation" prüfen.

      Der ist nun gesetzt und die Installion bricht ab und läuft nun solange bis eben der Link für den User gesetzt werden kann.. (Siehe Logauszug)

       

      Später dann, wird der Link nicht mehr gesetzt weil der VPN dann schon geöffnet ist.

      So wird das Paket nie fertig..

       

      06:52:39.244 2          ---->Starting installation of "Sophos SSL VPN 2.1 Client"

      06:52:39.259 1          Evaluating condition "not CheckInstallMode(imUninstall)"
      06:52:39.259 2          Condition TRUE    -> entering IF part

      06:52:39.259 2          ->  goto $BeginInstallScript

      06:52:39.259 2          -> Set('ReturnCode','0')

      06:52:39.259 2          -> Set('WMI_OSLanguage','0')

      06:52:39.259 2          -> WMISimpleQuery('\\.\root\cimv2','WIN32_OPERATINGSYSTEM','OSLanguage=1031','WMI_') ...
      06:52:39.259 1           xniTools: namespace \\.\root\cimv2 connected successfully
      06:52:39.259 0           xniTools: Enumerating Objects of class WIN32_OPERATINGSYSTEM.
      06:52:39.306 0           xniTools: Starting enumeration.
      06:52:39.306 1           xniTools: 1 instances were found.
      06:52:39.306 E           Warning (Module:xniTools, Severity:0x03): no matching Object was found
      06:52:39.306 2           SWMSRT: //------------| Starting Checking if policies should run for the trigger 'On error'. |------------\\
      06:52:39.306 0           SWMSRT: No triggered jobs found
      06:52:39.306 2           SWMSRT: \\------------| Finished Checking if policies should run for the trigger 'On error'. |------------//

      06:52:39.306 2          -> Set('VARProcess','openvpn-gui.EXE')

      06:52:39.306 2          -> Set('WMI_Name','0')

      06:52:39.306 2          -> WMISimpleQuery('\\.\root\cimv2','Win32_Process','Name=openvpn-gui.EXE','WMI_') ...
      06:52:39.322 1           xniTools: namespace \\.\root\cimv2 connected successfully
      06:52:39.322 0           xniTools: Enumerating Objects of class Win32_Process.
      06:52:39.353 0           xniTools: Starting enumeration.
      06:52:39.369 1           xniTools: 203 instances were found.
      06:52:39.369 E           Warning (Module:xniTools, Severity:0x03): no matching Object was found
      06:52:39.369 2           SWMSRT: //------------| Starting Checking if policies should run for the trigger 'On error'. |------------\\
      06:52:39.369 0           SWMSRT: No triggered jobs found
      06:52:39.369 2           SWMSRT: \\------------| Finished Checking if policies should run for the trigger 'On error'. |------------//

      06:52:39.369 1          Evaluating condition "_WMI_Name_='_VARProcess_'"
      06:52:39.369 0           Comparing '0' with 'openvpn-gui.EXE'
      06:52:39.369 2          Condition FALSE  -> skipping IF part
      06:52:39.369 2          Skipping command : ExitProcEx

      06:52:39.369 2          -> KillProcess('openvpnserv.exe',kpByFileName+kpKillAll)/TS
      06:52:39.369 1           Skipping wksta-cmd.

      06:52:39.369 2          -> KillProcess('openvpn-gui.exe',kpByFileName+kpKillAll)/TS
      06:52:39.369 1           Skipping wksta-cmd.

      06:52:39.369 1         Evaluating condition "Exist('_ProgramFilesDir_\Sophos\Sophos SSL VPN Client\Uninstall.exe')"
      06:52:39.369 1           RegValue 'ProgramFilesDir' resolved as 'C:\Program Files (x86)'
      06:52:39.369 2          Condition TRUE    -> entering IF part

      06:52:39.369 1          Evaluating condition "RegValueExists('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager','PendingFileRenameOperations')"
      06:52:39.369 2          Condition TRUE    -> entering IF part

      06:52:39.369 2          ->   ExitProcEx(Undone,'Neustart steht aus')
      06:52:39.385 1          Logging up ExR event 3003 (0x00000bbb)
      06:52:39.385 0          nilsPipe: Both current project and new project are NULL
      06:52:39.385 2          xniFPS: '{823A4FEC-BE62-4D40-AC09-56C2DC4AD004}' is installed

      06:52:39.385 2          ---->Installation of Sophos SSL VPN 2.1 Client has not completed on exit.

       

      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      ZWEITES LOG

       

      ---->Starting installation of "Sophos SSL VPN 2.1 Client"

      Evaluating condition "not CheckInstallMode(imUninstall)"
      Condition TRUE    -> entering IF part

      ->  goto $BeginInstallScript

      -> Set('ReturnCode','0')

      -> Set('WMI_OSLanguage','0')

      -> WMISimpleQuery('\\.\root\cimv2','WIN32_OPERATINGSYSTEM','OSLanguage=1031','WMI_') ...
      xniTools: namespace \\.\root\cimv2 connected successfully
      xniTools: Enumerating Objects of class WIN32_OPERATINGSYSTEM.
      xniTools: Starting enumeration.
      xniTools: 1 instances were found.
      Warning (Module:xniTools, Severity:0x03): no matching Object was found
      SWMSRT: //------------| Starting Checking if policies should run for the trigger 'On error'. |------------\\
      SWMSRT: No triggered jobs found
      SWMSRT: \\------------| Finished Checking if policies should run for the trigger 'On error'. |------------//

      -> Set('VARProcess','openvpn-gui.EXE')

      -> Set('WMI_Name','0')

      -> WMISimpleQuery('\\.\root\cimv2','Win32_Process','Name=openvpn-gui.EXE','WMI_') ...
      xniTools: namespace \\.\root\cimv2 connected successfully
      xniTools: Enumerating Objects of class Win32_Process.
      xniTools: Starting enumeration.
      xniTools: setting WMI_Name=openvpn-gui.exe
      xniTools: Enumeration callback requested end of enumeration.

      Evaluating condition "_WMI_Name_='_VARProcess_'"
      Comparing 'openvpn-gui.exe' with 'openvpn-gui.EXE'
      Condition TRUE    -> entering IF part

      ->  ExitProcEx(Undone,'OpenVPN GUI running')
      Logging up ExR event 3003 (0x00000bbb)
      nilsPipe: Both current project and new project are NULL
      xniFPS: '{823A4FEC-BE62-4D40-AC09-56C2DC4AD004}' is installed

      ---->Installation of Sophos SSL VPN 2.1 Client has not completed on exit.

       

       

      Jetzt meine Frage:

      Wie macht ihr das oder was ist best Practice (ein eigenes Paket zur Usereinrichtung)?

       

      Danke für eure Antworten und Anregungen im Voraus

      Beste Grüße

      Vito

        • 1. Re: Links erstellen im Userpart
          derniwi Master

          Hallo Vito,

           

          ja, das ist eine prnzipielle Frage, die Ihr Euch stellen solltet. Ich habe für mich (da ich hier der Einzige DSMler war) entschieden, eher einzelne Pakete zu machen und diese über Software-Sets zu packen.

           

          Mit den neueren DSM-Versionen ist das auch einfacher geworden.

          Es gibt in der Regel ein Paket für die reine Programm-Installation, dieses läuft nur im Kontext des Service und der Haken zur Installation der benutzerbezogenen Teile ist entfernt.

          Ein weiteres Paket läuft nur im Kontext des Benutzers und verteilt dementsprechend auch nur benutzerbezogene Daten.

          Über das Set, welches in beiden Kontexten laufen muss, wird dann zuerst das Programm und danach die Benutzerkonfiguration eingespielt.

           

          Klar, es gibt auch Ausnahmen, wenn es gar zu einfach ist, aber manchmal auch mehrere Pakete.

           

          Der Voteil ist, dass die Paketausführung relativ klar ist. Der Nachteil ist eben, dass man deutlich mehr Pakete bekommt.

           

          Eine weitere Möglichkeit ist natürlich, beide Abschnitte in ein Paket zu packen und im Paket mit "If RunningAsService" zu prüfen, ob gerade der Computerteil ausgeführt wird, im Else-Zweig kämen dann die Benutzergeschichten.

          Auch das habe ich hier und da im Einsatz, kommt hal auf das Paket an.

           

          Wie hier auch an einigen Stellen zu finden ist, kann man den aktuellen Status des Paketes in der Registry hinterlegen und im Skript abfragen:

          If RegValueExistsEx('HKEY_LOCAL_MACHINE\SOFTWARE\NetSupport\NetInstall\Installed Apps\%CurrentPackage.Object.UniqueId%','InProgress',)
           RegDeleteKey('HKEY_LOCAL_MACHINE\SOFTWARE\NetSupport\NetInstall\Installed Apps\%CurrentPackage.Object.UniqueId%','InProgress',)/TW
           ExitProcEx(Done,'Fertig')
          ... weiter im Paket...
          RegModifyDWord('HKEY_LOCAL_MACHINE\SOFTWARE\NetSupport\NetInstall\Installed Apps\%CurrentPackage.Object.UniqueId%','InProgress','1',mrdwSet)/TS
          

           

          Da man hier mit einem DWort fast beliebige Zahlen schreiben kann, hat man viele Schritte, die man prüfen und auswerten kann. Allerdings muss man hier auch aufpassen, dass alles Möglich ist, also auch Reinstallation und Reparatur während eines x-beliebigen Status. Das wird dann wieder ein wenig kniffliger, wenn man das abfangen möchte.

           

          Gruß

          Nils

          • 2. Re: Links erstellen im Userpart
            Vito Apprentice

            Hi Nils,

             

            Danke für die verschiedenen Möglichkeiten und die ausführliche Erklärung.

            Ich denke wir machen einfach ein Userbezogenes eScript , dass einmalig die Links bei der Benutzeranmeldung erstellt.

             

             

            Mega Danke nochmals

            Gruß

            Vito