11 Replies Latest reply on Jan 21, 2014 8:33 AM by derniwi

    Computer- und Benutzerteil unter DSM 7.2.2

    derniwi Master
      Hallo,

      ich habe ein Paket, welches im Kontext des Benutzers oder Service installiert werden kann. Im Paket gibt es benutzerabhängige und computerabhängige Befehle:
      !Language Pack Japanese for Windows 7 SP1 - 32 Bit
      !Initialize variables
      If not CheckInstallMode(imUninstall)
      Set('_RC','0')
      If RegKeyExistsEx('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\LPKSetup\ja-JP',reUseX64Hive)
        ExecuteEx('%WINSYSDIR%\lpksetup.exe /r /s /u ja-JP','_RC','30')/?/x64/TS
      ExecuteEx('%WINSYSDIR%\lpksetup.exe /i * /r /s /p ".\Extern$\lp.cab"','_RC','60')/?/x64/TS
      Execute('%WINSYSDIR%\wuauclt.exe /detectnow')/x64/TW
      If %_RC%='0'
        CreateLink('Sprache wechseln','%WINSYSDIR%\control.exe %WINSYSDIR%\intl.cpl,,2','%WINSYSDIR%','%WINSYSDIR%\intl.cpl,0','Desktop\','',)/TU
        Execute('%WINSYSDIR%\control.exe %WINSYSDIR%\intl.cpl,,2')/x64/TU
        ExitProc(Done)
      Else
        ExitProcEx(Failed,'Installation failed: RC=%_RC%')
      !
      : $BeginUninstallScript
      Set('_RC','0')
      ExecuteEx('%WINSYSDIR%\lpksetup.exe /r /s /u ja-JP','_RC','30')/?/x64/TS
      If %_RC%='0'
      ExitProc(Done)
      Else
      ExitProcEx(Failed,'Deinstallation failed: RC=%_RC%')
      Execute('%windir%\System32\wuauclt.exe /detectnow')/x64/TS


      Wenn ich das Paket über den Shop verteile, ist alles ok. Die Policy wird angelegt und bleibt auch nach einer Neuinstallation des Rechners bestehen. Bei einer Neuinstallation wird jetzt aber nur noch der computerabhängige Teil installiert. Da ich das Paket erst vor kurzem überarbeitet, getestet und freigegeben habe, bin ich mir aktuell nicht sicher, ob die volle Installation auch unter DSM 7.2.1 gelaufen ist, denke es aber.

      Warum läuft das jetzt nicht so, wie ich das erwarte? Im Shop (gleicher Benutzer wie vor der Neuinstallation des Rechners) sehe ich das Paket bei den zu installierenden Paketen.

      Ich war bisher der Meinung, dass bei "Im Kontext des Benutzers oder Service" die benutzerabhängigen Teile trotzdem für jeden Benutzer ausgeführt werden.

      Im Service-Log finde ich die Installation und auch den übersprungenen Benutzerteil:
      13:44:11.989 1          Evaluating condition "__RC_='0'"
      13:44:11.989 2          Condition TRUE  -> entering IF part

      13:44:11.989 2          ->   CreateLink('Sprache wechseln','C:\Windows\system32\control.exe C:\Windows\system32\intl.cpl,,2','C:\Windows\system32','C:\Windows\system32\intl.cpl,0','Desktop\','',)/TU
      13:44:11.989 1           Skipping user-cmd.

      13:44:11.989 2          ->   Execute('C:\Windows\system32\control.exe C:\Windows\system32\intl.cpl,,2')/x64/TU
      13:44:11.989 1           Skipping user-cmd.


      Ich habe das Paket in einem Software-Set, um bei Updates die Policy-Instanzen zu erhalten. Im AI-Log finde ich dann das hier:
      14:11:29.705 1    SWMSRT: -------- Processing PolicyInstance POLICYINSTANCE.49223 -----------------------
      14:11:29.705 1     SWMSRT: ExecutionMode is 'Install', ClientRolloutState is 'Implemented', InstallationState is 'Installed'
      14:11:29.705 1      SWMSRT: The PolicyInstance is already implemented
      14:11:29.705 1     SWMSRT: Checking if direct handling is allowed
      14:11:29.705 1      SwmsTpExtenderCMP: DirectInstall of PolicyInstance POLICYINSTANCE.49223 is not allowed, because Policy is a ComponentPolicy
      14:11:29.705 2      SWMSRT: TargetProviderExtender SwmsTpExtenderCMP denies direct Execution for PolicyInstance POLICYINSTANCE.49223
      14:11:29.705 1      niMW: Computer is in maintenance mode, installation of package 'Microsoft Windows 7 Language Pack Japanese for Windows 7 SP1 - 32 Bit' possible

      14:11:29.705 1    SWMSRT: -------- Processing PolicyInstance POLICYINSTANCE.49224 -----------------------
      14:11:29.705 1     SWMSRT: ExecutionMode is 'Install', ClientRolloutState is 'Implemented', InstallationState is 'Installed'
      14:11:29.705 1      SWMSRT: The PolicyInstance is already implemented
      14:11:29.705 1     SWMSRT: Checking if direct handling is allowed
      14:11:29.705 1      niMW: Computer is in maintenance mode, installation of package 'Microsoft Windows 7 Language Pack Japanese - 32 Bit' possible
      14:11:29.705 2     SWMSRT: Start handle the PolicyInstance POLICYINSTANCE.49224
      14:11:29.705 1      SwmsTpExtenderCMP: Getting Component PolicyInstances of SwSet
      14:11:29.705 1      SwmsTpExtenderCMP: Handling Component PolicyInstances of SwSet
      14:11:29.705 1       SwmsTpExtenderCMP: Handling Component with PolicyInstance POLICYINSTANCE.49223
      14:11:29.705 1          SwmsTpExtenderScript: User part completion is needed
      14:11:29.705 1      SwmsTpExtenderCMP: JobList of SwSet for PolicyInstance POLICYINSTANCE.49224 is empty: nothing to do
      14:11:29.705 1      SWMSRT: Handled PolicyInstance POLICYINSTANCE.49224 successfully


      Wie gesagt, ich bin mir nicht sicher, ob das vor DSM 7.2.2 richtig lief. Muss ich an dieser Stelle das Paket aufteilen und das Sprachpaket als Service-Installation, den Link aber als Benutzer-Installation kennzeichnen und beide Pakete in das Set packen?

      Gruß
      Nils
        • 1. Re: Computer- und Benutzerteil unter DSM 7.2.2
          derniwi Master
          Hallo,

          bisher kam hier leider noch keine Antwort. Folgendes habe ich jetzt herausgefunden:
          Situation 1)
          Software-Set enthält Paket X, als Ausführungskontext sind sowohl Service als auch Benutzer erlaubt.
          Im Paket sind computer- und benutzerabhängige Befehle enthalten.

          Wird das Set über den Service-Installer verteilt, dann wird das Paket auch installiert, allerdings die benutzerabhängigen Befehle werden übersprungen.
          Läuft dann der Auto-Installer los, erkennt dieser, dass das Paket schon installiert wurde und führt das Paket nicht erneut aus.

          Situation 2)
          Software-Set enthält Paket X und Y, als Ausführungskontext sind sowohl Service als auch Benutzer für das Set erlaubt. Paket X enthält nur computerspez. Befehle und ist auf den Service beschränkt, Paket Y enthält nur benutzerspez. Befehl und darf nur im Benutzerkontext laufen.

          Wird das Set über den Service-Installer verteilt, dann werden auch beide Pakete darüber installiert. Der Auto-Installer erkennt dann auch, dass nichts mehr zu tun ist. Die benutzerspez. Befehle werden auch nicht ausgeführt.

          Situation 3)
          Software-Set enthält Paket X, als Ausführungskontext ist jeweils nur der Benutzerkontext erlaubt.
          Im Paket sind computer- und benutzerabhängige Befehle enthalten.

          Wird das Set über den Service-Installer angestoßen, erkennt dieser, dass er nichts machen darf. Läuft der Auto-Installer los, erkennt dieser, dass computerspez. Befehle vorhanden sind und gibt diese an den NPI weiter, der diese Befehl dann auch ausführt. Und die benutzerabhängigen Befehl werden ebenfalls durch den AI ausgeführt...

          Ist das so gewollt? Dann wird die Ausführung "Installation im Kontext des Benutzer oder Service" für benutzerabhängige Teile eigentlich unbrauchbar... ich dachte, dass ich das vor DSM 7.2.1 erfolgreich verwendet hatte...

          Gruß
          Nils
          • 2. Re: Computer- und Benutzerteil unter DSM 7.2.2
            _Mel_ Master
            nur um sicherzugehen, daß es nicht daran liegt:
            ist bei dem paket zufällig "Installation of user-related portions" nicht aktiviert ?
            • 3. Re: Computer- und Benutzerteil unter DSM 7.2.2
              derniwi Master
              Der Haken ist gesetzt. Es scheint ein Problem durch das Software-Set zu sein.
              Werde morgen mal ein Testpaket und -set erstellen.
              • 4. Re: Computer- und Benutzerteil unter DSM 7.2.2
                derniwi Master
                Update:
                Ich habe ein paar weitere Tests durchgeführt:
                Set-Kontext "Installation nur im Kontext eines Benutzers"
                Paket-Kontext "Installation im Kontext eines Benutzers oder Service"
                Set-Zuweisung auf einen Computer.

                Die eigentliche Installation eines Paketes über ein Software-Set läuft bei der direkten Zuweisung auf einen Computer problemlos. Bei einer Zuweisung eines Sets zu einer Gruppe wird sich da auch nicht viel ändern.

                Allerdings ist die Installation über den Shop problematisch. Hier wird das Paket für den aktuell angemeldeten Benutzer zuerst ordentlich installiert.
                Meldet sich ein anderer Benutzer an, dann wird der Benutzerteil nicht mehr ausgeführt. Im NIAI.log finde ich aber folgende Einträge:
                14:31:30.662 0          SWMSRT: User part installation for package ESCRIPTPACKAGE.7811 is needed.
                14:31:30.662 1          SwmsTpExtenderScript: User part completion is needed


                Aber das war es dann auch. Auto-Installer erneut gestartet ändert nicht. Rechner neu gestartet, SI und AI liefen los, auch egal.

                Das Script ist jetzt auch nicht sonderlich komplex:
                MsgBox
                Test (computerbezogen)
                EndProc/TS
                Copy('.\TestComputer.txt','C:\Users\Public\Desktop')/TS
                Copy('.\TestBenutzer.txt','%USERPROFILE%\Desktop\TestBenutzer %username%.txt')/TU
                MsgBox
                Test (benutzerbezogen)
                EndProc/TU


                Die Datei "Textbenutzer xxx.txt" wird bei der ersten Installation aus dem Shop erstellt / kopiert, das geht also.

                Bei einer Rechner-Neuinstallation wird das Paket dann über den Service installiert. Dieser überspring dann die benutzerbezogenen Befehle (NISRV32.log):
                14:55:50.519 2          -> Copy('C:\Program Files\Common Files\enteo\RepositoryCache\7811\rev\1\TestBenutzer.txt','C:\Users\_DSM.Service\Desktop\TestBenutzer ServiceUser.txt')/TU
                14:55:50.519 1           Skipping user-cmd.

                14:55:50.519 2          -> MsgBox  Test (benutzerbezogen)/TU
                14:55:50.519 1           Skipping user-cmd.


                Später, wenn ich den gleichen Benutzer wie vor der Rechnerneuinstallation anmelde und der AI läuft, finde ich das im NIAI32.log:
                15:04:13.293 0          SWMSRT: User part installation for package ESCRIPTPACKAGE.7811 is needed.
                15:04:13.293 1          SwmsTpExtenderScript: User part completion is needed
                15:04:13.293 0          SwmsTpExtenderScript: User part related portions active
                15:04:13.293 0          SwmsTpExtenderScript: Check if user part completion is allowed for the shopped policy...
                15:04:13.293 0          siClnt32: Installation state of package {1FAB0A49-089C-4FB8-83ED-DA4E83B95C87} (workstation part): Installed:  16.1.2014 14:55, Version: 1, State: (2) completely installed, Count: 1, Context: XXX, GUID: {0DC0D3BA-4C31-4DB3-8FE5-4706ABBD1866}
                15:04:13.293 0          SwmsTpExtenderScript: User part completion is not allowed.
                15:04:13.293 0          siClnt32: Installation state of package {1FAB0A49-089C-4FB8-83ED-DA4E83B95C87} (workstation part): Installed:  16.1.2014 14:55, Version: 1, State: (2) completely installed, Count: 1, Context: XXX, GUID: {0DC0D3BA-4C31-4DB3-8FE5-4706ABBD1866}
                15:04:13.293 0          SwmsTpExtenderScript: Currently inspected policy instance is not a PnP project
                15:04:13.293 0          SwmsTpExtenderScript: UserPart Completion of PolicyInstance POLICYINSTANCE.50733 is currently not allowed


                Der benutzerbezogene Teil wird nicht ausgeführt.

                Rufe ich den Shop auf, dann finde ich dort das Software-Set unter der verfügbaren Software. Verlasse ich den Shop, passiert nichts weiter.
                Installiere ich die Software durch den Shop, finde ich im NI32.log folgendes:
                15:18:19.129 2          -> Copy('C:\Program Files\Common Files\enteo\RepositoryCache\7811\rev\1\TestComputer.txt','C:\Users\Public\Desktop')/TS
                15:18:19.129 1           Skipping wksta-cmd.

                15:18:19.129 2          -> Copy('C:\Program Files\Common Files\enteo\RepositoryCache\7811\rev\1\TestBenutzer.txt','C:\Users\USER\Desktop\TestBenutzer USER.txt')/TU

                Das System erkennt also, dass der Benutzerteil schon installiert wurde und überspringt diese Befehle. Und die benutzerbezogenen werden ausgeführt.

                War das schon immer so? Und wenn ja, warum ist das so?
                Und was bedeutet "User part completion is not allowed" bzw. wieso kommt dieser Eintrag?
                • 5. Re: Computer- und Benutzerteil unter DSM 7.2.2
                  _Mel_ Master
                  nur weil user A das paket geshopt hat, bekommt user B noch lange keinen user part installiert.
                  das ist by design. jeder kriegt nur das, was er bestellt.
                  • 6. Re: Computer- und Benutzerteil unter DSM 7.2.2
                    derniwi Master
                    Naja, das macht nur teilweile Sinn.
                    Der Computerteil wird ja trotzdem installiert, sprich ein Programm oder auch ein MSI-Paket würde ja verteilt werden. Was fehlt, ist dann eben eine evtl. Benutzerkonfiguration.

                    Aber leider bekommt der Anwender seine Software nach einer Neuinstallation des Rechners auch nur teilweise. Hier muss er alle Pakete über den Shop erneut aufrufen, obwohl das System die computerabhängigen Befehle schon ausgeführt hat und auch weiß, dass hier Komponenten fehlen.
                    • 7. Re: Computer- und Benutzerteil unter DSM 7.2.2
                      _Mel_ Master
                      bei einer neuinstallation sollte der user part eigentlich neu installiert werden.
                      ...außer ihr hab servergespeicherte user profile, denn dann hat das profil den userpart ja schon.

                      die idee dahinter ist, daß der maschinenteil die maschinenbezogenen sachen macht (z.B: dateien unter program files ablegen) und der userteil die änderungen im profil macht (z.B. Icons auf dem desktop anlegen)
                      • 8. Re: Computer- und Benutzerteil unter DSM 7.2.2
                        derniwi Master
                        Wir verwenden lokale Profile, noch nicht einmal ein Backup und Restore von Profilen. D.h. das Profil ist definitiv sauber.

                        Ansonsten gebe ich dir Recht.

                        Für Software-Installationen über den Shop verstehe ich das so, dass ich die Shop-Policy auf einen Rechner bzw. eine Rechnergruppe zuweise. Wenn ein Benutzer dann Software X für Rechner 1 über den Shop bezieht, dann sollten doch alle Benutzer, die an diesem Rechner arbeiten, diese Software verwenden können. Und somit ist es wichtig, dass spezielle Benutzerkonfigurationen für alle Benutzer eingerichtet werden.

                        Wenn ich anstelle des Shops die Software auf eine Gruppe zuweise, dann funktioniert das ja auch.

                        Update:
                        Würde ich die Shop-Policy auf einen Benutzer oder eine Benutzergruppe zuweisen, dann würde ich erwarten, dass die Anwendung von Benutzer X installiert werden kann und auf allen Rechner, an denen sich X anmeldet auch eingespielt wird (wenn die Voraussetzungen passen). Und meldet sich Y an, der die Software nicht installiert hat oder nicht installieren darf, dann wird sie deinstalliert.
                        Jedenfalls würde ich das von den beiden Möglichkeiten der Shop-Policies so erwarten.
                        • 9. Re: Computer- und Benutzerteil unter DSM 7.2.2
                          derniwi Master
                          Wenn ich das Paket direkt im Shop zur Verfügung stelle und Benutzer X instaliert dieses, dann wird das Paket bei einer Neuinstallation des Rechners auch komplett wiederhergestellt (also computerbezogene und benutzerbezogene Befehle werden ausgeführt).

                          Dann liegt also hier ein Problem mit den Software-Sets vor.

                          Aber nach wie vor ist mir unklar, wieso man lokal Software installieren kann, die dann nicht für alle Benutzer am Rechner fertig konfiguriert wird. Da verstehe ich den Sinn nicht. Oder muss man die Pakete dementsprechend anpassen, dass es keine Links oder ähnliches für alle Benutzer gibt, sondern nur für diejenigen, welche die Appliaktion über den Shop bezogen haben? Das macht bei MSI-Installationen auch viel zusätzliche Arbeit...
                          • 10. Re: Computer- und Benutzerteil unter DSM 7.2.2
                            _Mel_ Master
                            gut, die idee ist halt, daß nur der userpart steuert ob die software für alle benutzer sichtbar ist.
                            wenn das unabhängig vom userpart immer der fall ist, und man nur noch ne config nachschieben will, damit alles funktioniert, dann könnte es sinn machen das im installer anders zu handhaben.
                            mach doch mal nen entsprechenden FR auf.

                            und wenn geshopte sets beim reinstall ein problem haben, dann dafür auch noch einen
                            • 11. Re: Computer- und Benutzerteil unter DSM 7.2.2
                              derniwi Master
                              Hallo,

                              die Probleme wurden bestätigt.

                              Das Problem, warum bei einer Revisionsänderung eines Software-Sets die benutzerbasierten Teile nicht aktualisiert werden ist wohl das gleiche wie bei einer Neuinstallation des Rechners. Daran arbeiten sie noch.

                              Der andere Punkt, wie man eine Anwendung über den Shop für alle Benutzer der Maschine installiert, ist auch nicht neu. Da wird es wohl auch eine Anpassung am Shop geben.

                              Für mich heißt das, entweder die Situation noch etwas aussitzen oder eine andere Lösung finden, wie man über den Shop Software für alle installiert und wie die Software nicht automatisch deinstalliert wird, wenn der erste Benutzer diese über den Shop dann wieder entfernt...

                              Gruß
                              Nils