14 Replies Latest reply on Oct 10, 2018 6:37 AM by derniwi

    Windows 10 Inplace Upgrade

    TSchei Apprentice

      Hallo zusammen,

       

      ich würde gerne in unserer Umgebung das Inplace Upgrade zur Verfügung stellen. Jedoch bekomme ich das Paket nicht zum laufen. Ich verwende das Standard Template aus der DSM Version 2018.1.1 4467.

       

      !
      !Windows 10 inplace upgrade
      !This package uses a os setup file packages as a source and after running the setup sets the corresponding OS Set to compliant.
      !The inplace upgrade needs all files from the ISO and not just the sources directory, so it only works with os setup file packages created with DSM 2017 or later.
      !
      GetPackagePath('%InstallationParameters.OSSetupFilePckgLink%','PackagePath',)
      If %PackagePath%=''
       ExitProcEx(Undone,'Failed to get package path')
      !Currently the package will most likely be used from the share, but don't rely on this
      StrLeft('%PackagePath%','2','PathPrefix')
      If %PathPrefix%='\\'
      ! Use the depot account to access the share
       NetUseDepot('%PackagePath%','O:',)
       Set('PackagePath','O:')
      Set('SetupPath','%PackagePath%\Extern$\Setup.exe')
      Set('ExitCode','not executed')
      !
      If not Exist('%SetupPath%')
       Set('ExitCode','Setup.exe missing')
      Else
       If not FileVersion('%SetupPath%')>%CurrentComputer.BasicInventory.InstalledOSVersion%
      !  Os is newer (or equal) than the setup.exe -> Just quit
        If %PackagePath%='O:'
         NetDisconnect('O:')/?
        ExitProcEx(Done,'Installed OS is already up to date')
      !  
       Set('SetupParams','/auto upgrade /DynamicUpdate disable /noreboot /quiet /resizerecoverypartition disable /migratedrivers %InstallationParameters.MigrateDrivers% /compactos disable')
      !  
       ExecuteEx('%SetupPath% %SetupParams% /Compat ScanOnly','ExitCode','120')/?
       If IsTrue('%ExitCode% != -1047526896',)
        If %PackagePath%='O:'
         NetDisconnect('O:')/?
        ExitProcEx(Failed,'Compatibility scan failed with %ExitCode%')
      !   
       Set('ExitCode','not executed')
       ExecuteEx('%SetupPath% %SetupParams%','ExitCode','120')/?
      ! 
      If %PackagePath%='O:'
       NetDisconnect('O:')/?
      If not %ExitCode%='0'
       ExitProcEx(Failed,'Execution failed with error %ExitCode%')
      ! 
      !All OS Sets that use the same os setup file package should be green.
      SetOsSetAsInstalled('%InstallationParameters.OSSetupFilePckgLink%',)
      InitiateSystemShutDown('2',issRebootAfterShutdown)
       Reboot for inplace upgrade
      EndProc
      !
      

       

      Im Log bekomme ich auch keinen Fehler und die Policy sagt "Compliance bevorstehend".

       

      Weiß jemand Rat?

       

      VG

      Thorsten

        • 1. Re: Windows 10 Inplace Upgrade
          derniwi Master

          Hallo Thorsten,

           

          die Installationsparameter hast Du gesetzt?

           

          Gruß

          Nils

          • 2. Re: Windows 10 Inplace Upgrade
            TSchei Apprentice

            Hi Nils, ja, die sind gesetzt. Das Problem ist, wenn das Paket per Pilotinstallation einem Gerät zugewiesen wird, passiert nichts. Wenn ich aber sage, Policy Instanz sofort ausführen, startet die Ausführung des Paketes. Wieso ist das so? Gruß Thorsten

            • 3. Re: Windows 10 Inplace Upgrade
              derniwi Master

              Naja, eine Zuweisung per Pilot oder auch ein freigegebenes Paket direkt löst an einem Rechner noch nichts aus. Hier muss man dann auf der Maschine noch entweder per DSMC "Änderungen ausführen" aufrufen oder im Softwareshop die Pakete ausführen lassen. Ansonsten wird das Paket erst bei nächsten Lauf des Installers eingespielt, also entweder kurz nach dem nächsten Rechnerneustart oder einer Anmeldung eines Benutzers an Windows oder wenn der AutoInstaller das nächste mal von sich aus startet (Infrastruktur, Konfiguration AutoInstaller => Pollingintervall des Agenten).

              • 4. Re: Windows 10 Inplace Upgrade
                TSchei Apprentice

                Nach der Zuweisung per Pilotinstall wird selbstverständlich auf dem Client der Befehl niinst32 /ai ausgeführt ;)

                • 5. Re: Windows 10 Inplace Upgrade
                  derniwi Master

                  Wie ist das Paket konfiguriert? Ausführung nur im Kontext des Service? Dann probiere mal am Client bitte

                  "niinst32 /service"

                  welches den Service-Installer aufruft. Eigentlich sollte mit 2018 auch /ai reichen, aber ich bin mir jetzt nicht sicher, ob man da in der Konfiguration etwas ändern kann oder muss.

                  • 6. Re: Windows 10 Inplace Upgrade
                    TSchei Apprentice

                    Wenn ich "niinst32 /Service" auf dem Client aufrufe, passiert auch nichts...im Log steht, dass er gehöhte Rechte benötigt

                    • 7. Re: Windows 10 Inplace Upgrade
                      TSchei Apprentice

                      Es funktioniert erst, wenn ich den Rechner neu starte. Läuft das Script auch im Benutzerkontext?

                      • 8. Re: Windows 10 Inplace Upgrade
                        derniwi Master

                        Das Skript ist im System so konfiguriert, dass es nur im Service Kontext läuft. Was ja letztlich auch Sinn macht... das Skript soll ja nicht für jeden Benutzer einzeln laufen, nur um dann festzustellen, dass das Windows bereits aktuell ist.

                        Wenn das mit "/service" nicht klappt, müsstest Du mal schauen, ob Du auf dem Zielcomputer mit einem Neustart des "DSM Runtime Service" weiter kommst.

                         

                        Das mit den höheren Rechten kann ich hier leider aktuell nicht prüfen.

                        • 9. Re: Windows 10 Inplace Upgrade
                          TSchei Apprentice

                          Das Problem dabei ist folgendes: Wenn der Installer im Service Kontext läuft, kann der User ja nicht entscheiden ob er "jetzt" neustarten möchte. Im Script wird ja einfach so neu gestartet, aber das möchten wir nicht. Hast du Ideen?

                          • 10. Re: Windows 10 Inplace Upgrade
                            derniwi Master

                            Du kannst ja eine MessageBoxEx erstellen und eine Meldung ausgeben, die der Benutzer bestätigen soll / kann. Evtl. macht man das sogar im Vorfeld, also bevor das Upgrade installiert wird.

                            Die MessageBoxEx kannst Du im erweiterten Editor manuell noch als computerbezogenen Befehl für den Service Installer markieren:

                            MsgBoxEx('Reboot now?','Reboot','',mbYesNo,'30','1')/TS

                            Die Variable "Reboot" setzt man vorher noch auf "No" (mache ich immer der Sauberkeit wegen), nach dem Befehl prüft man ab, ob diese auf "Yes" steht...

                            • 11. Re: Windows 10 Inplace Upgrade
                              TSchei Apprentice

                              Hallo, bin wieder aus dem Urlaub...jetzt geht's weiter! Ist es möglich, dass der User das Upgrade aus dem Shop startet? Wenn ja, was gibt es dabei zu beachten? Gruß Thorsten

                              • 12. Re: Windows 10 Inplace Upgrade
                                derniwi Master

                                Das sollte problemlos gehen. Es wird ja ein Shop-Policy erstellt (d.h. früher gab es hierfür spezielle Policies, jetzt sind es ja nur noch unterschiedliche Parameter an einer Policy) und durch die Auswahl über den Shop wird dann für den Computer eine Policy-Instanz angelegt. Wichtig ist, dass die Zuordnung der Policy weiterhin für den Computer gemacht wird, sonst würde jeder weitere Rechner, an dem sich der Benutzer anmeldet, automatisch auf diese Version aktualisiert werden.

                                • 13. Re: Windows 10 Inplace Upgrade
                                  TSchei Apprentice

                                  Hat ganz gut funktioniert! Was mir da halt jetzt nicht so gut gefällt ist das, dass die Hinweisfenster unten rechts erscheinen und nicht zentral auf dem Bildschirm...viele unserer User werden dieses Fenster übersehen. Gibt es da noch andere Möglichkeiten? Noch eine andere Frage. Hab ich die Möglichkeit, dass Script so umzuschreiben, dass der User 10 mal aufgefordert wird, und beim 11 mal wird es zwangsweise installiert?

                                  • 14. Re: Windows 10 Inplace Upgrade
                                    derniwi Master

                                    Ja, das geht. die aufwendige Methode findest Du hier. Ich habe mal ein Skript gebaut, mit welchem man diese Anforderung im Prinzip für jedes Paket verwenden kann.

                                     

                                    Kurz:

                                    Du legst eine Variable an (z.B. "Counter"), welche Du auf 0 (Null) setzt. Dann liest Du einen Wert aus der Registry, falls es ihn gibt:

                                    Counter = RegValue(HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\NetSupport\NetInstall\Installed Apps\%CurrentPackage.Object.UniqueId%\Counter)

                                     

                                    Wenn es ihn nicht gibt, bleibt "Counter" auf 0. Dann vergleichst Du den Wert mit der maximalen Anzahl. Falls der Wert gleich ist, wird installiert. Ansonsten wird per MessageBoxEx abgefragt, ob jetzt installiert werden soll. Bei "ja" wird dann installiert, ansonsten wird "Counter" um 1 erhöht und wieder in die Registry geschrieben.

                                     

                                    HKLM deswegen, damit der Counter pro Maschine gezählt wird. Hat aber den Effekt, wenn sich neun mal Frau Müller anmeldet und nicht installiert, dann einmal Herr Maier anmeldet, dann hat er keine Wahl mehr.

                                    Ein weiterer Nachteil ist, dass die Zählung noch nicht zeitabhängig ist, sprich drei mal den Rechner am Tag neu starten heißt auch drei Abfragen und eine Erhöhung des Zählers um drei.

                                     

                                    Aber das kannst Du auch lösen, als Inspiration kann der oben verlinkte Thread helfen.