Menu
CCMEXEC.COM – Enterprise Mobility
  • Home
  • General
  • Configuration Manager
  • Windows 10
  • Intune
  • About the author
  • GitHub
CCMEXEC.COM – Enterprise Mobility

Windows Servicing in the work from anywhere era using IPUInstaller

Posted on February 17, 2021February 17, 2021 by Jörgen Nilsson

During the Nordic Virtual Summit me and Ronni Pedersen did a session on “Windows Servicing in the work from anywhere era”, great event, great fun! Nordic Virtual Summit – A virtual IT Pro Community Event!

During that session we demoed a new community tool or actually two community tools from my colleague Johan Schrewelius.

DeploymentScheduler – An advanced UI to schedule updates, app deployments, upgrades, reboots and much more.

IPUInstaller – A solution to do Windows 10 Servicing in a new way, with driver support, post upgrade actions, full media or .ESD support and much more.

It can be downloaded here together with the manual, https://onevinn.schrewelius.it/index.html  
Here is a short video on how the end-user experience could look like.

One of the reasons this was developed was to provide an alternative to Task Sequence and Windows Servicing to manage upgrades of Windows 10 to Windows 10. Task Sequences are the most used way to do in-place upgrades when we asked the community on Twitter.

Many customers and end-users are getting tired of the long downtime when doing an in-place upgrade of Windows 10 using a Task Sequence. Work from home also requires us to do things in new ways.

I did a non-scientific comparison between some options. Fairly clean Windows 10 1909 upgraded to Windows 10 20H2.
This will take longer when testing on a computer that has been used for a while.

We always want the user to be productive which is the main driver from the end-users and business. IPUInstaller is an application that we deploy just like that, an application in Configuration Manager. It has a folder structure that looks like shown below.

In the media folder we place a fully updated In-place upgrade media, which can be created for example by using WIM Witch which is a great tool by Donna Ryan. https://msendpointmgr.com/2019/10/04/wim-witch-a-gui-driven-solution-for-image-customization/
In the SetupComplete folder we can add post commands and for all of you using TSBackground you will recognize Runsilent.exe and Runsilent.ini. Which can be used to run commands hidden, for example suppress the blue PowerShell splash screen.
Example from what I have in my folder when testing.

Runsilent will create a log file as well in C:\Windows\Temp where you can see the exit codes from the commands and help you troubleshoot.
In Configuration Manager we extend the HW inventory and create a collection structure that looks like this.

The computer will then move between Failed, Succeeded and pending reboot based on the inventory of registry values that the are written by IPUInstaller.

If IPUInstaller failes there will be more values in the inventoried IpuResult as shown below.

There is also a script that can be run as a Run Script in the console to retry the upgrade.

Johan has created a useful tool which provides us a new way of managing In-place upgrades, he has also written a great documentation which you can find here https://onevinn.schrewelius.it/

Test it out and provide any feedback!

  • IPUInstaller
  • Windows 10 Servicing
  • 20 thoughts on “Windows Servicing in the work from anywhere era using IPUInstaller”

    1. Jakob Svarrer says:
      February 17, 2021 at 3:00 pm

      Hi,
      The tools looks great and I’ve believe that this will be tool to go for(used tslaunch so far)
      The configurationEditor.msi seems to be missing in the Zip file.

      Reply
      1. Jörgen Nilsson says:
        February 17, 2021 at 3:38 pm

        Hi,
        Thanks for the headsup, it is now included.

        Regards,
        Jörgen

        Reply
    2. John says:
      February 18, 2021 at 11:45 pm

      Very nice tool. Is there an option to have IpuInstaller generate a SetupConfig.ini file with “DynamicUpdate=Enabled”?

      Reply
    3. Brian says:
      February 19, 2021 at 6:54 pm

      Been trialing it for the last couple of days, seems to work great (IPUInstaller) but the ConfigurationEditor cannot save/load configurations without crashing AdminConsole. There’s also some differences in the screenshots (upgrades show up in the “applications” pane) similar to what Gary Blok noted in his review (https://docs.recastsoftware.com/ConfigMgr-Docs/Community-Tools/Community-Tools-OneVinn-Tools.html) – so I’d very much like to see what can be done to replicate the exact screenshot on the IPUInstaller page and what you have in your video, this does not seem to be the out of the box experience unless I missed something.

      Fantastic tool, upgraded in about ~6 minutes after reboot.

      Reply
      1. Jörgen Nilsson says:
        February 21, 2021 at 11:48 pm

        Hi,
        Glad to hear you like it.
        If add a User Category on the IPU application “IPUApplication” in the Software Center tab, it will show up as an upgrade.

        Regards,
        Jörgen

        Reply
    4. Kevin Everts says:
      February 19, 2021 at 7:04 pm

      Is there a way to use this without having the toast notification about the progress of the install?

      Reply
      1. Jörgen Nilsson says:
        February 21, 2021 at 11:49 pm

        Hi,
        Yes, install the ConfigurationEditor, and from the MEMCM extension you can select to not show the upgrade progess..
        Regards,
        Jörgen

        Reply
    5. Jakob Svarrer says:
      February 24, 2021 at 9:18 am

      Hi,
      Unless I missed something in the well-done documentation, is there anyway to avoid that an overwrite of an existing Setupconfig.ini is done when running the application. Like don’t modify any values already pre-filled in the existing file. I need some extra values eg. langpacks.
      Kind Regards,
      Jakob

      Reply
      1. Johan says:
        February 26, 2021 at 12:06 pm

        Where planning a small service release within shortly, will add the possibility to add a custom SetupConfig.ini to the Application, if exists it will be used instead of the auto-generated. Possibly also check for a pre-existing (under default user), however that could lead to trouble if one is left behind.

        Reply
    6. Aldin says:
      March 2, 2021 at 9:13 am

      So does this mean that TSLaucnh is discontinued and won’t be updated anymore?
      I was using TSLaunch in my last upgrade cycle and it worked fine for most of the upgrades.

      I’m going to test this one out…

      Reply
    7. Jakob Svarrer says:
      March 2, 2021 at 3:25 pm

      Hi Johan
      That will be excellent, if we could add a custom setupconfig.ini to the application.
      Kind Regards, Jakob

      Reply
    8. Thomas L says:
      March 9, 2021 at 9:26 am

      Hi

      Great idea running the upgrade within an application.
      I’m running the solution in test at the moment and got a few questions.
      – Is it possible to brand the application with company logo and name as shown in your video?
      – All our devices need the application Deployment Scheduler installed which is fine. Our company only want to use it for feature upgrades. The problem is that devices with Deployment Scheduler installed that is not a member of the IPU collection with the configuration settings applied, are able to schedule applications, handle restarts, wizards etc. Maybe the application could check if a device is member of a collection with configuration configured?

      Thanks in advance.

      Reply
    9. Jakob Svarrer says:
      March 16, 2021 at 1:35 pm

      Hi Johan, any idea on when the option of adding a custom setupconfig.ini will be supported. Kind Regards Jakob

      Reply
    10. Jan Christiansen says:
      March 25, 2021 at 1:34 pm

      hi Jorgen and Johan
      This tool looks really great, and i have been testing it for a couple of days.
      Which leads to a few questions.
      Could IPUinstaller preserve the background image and the lockscreen, for after the upgrade is completed, the upgrade sets default Win10 backgrounds, and that kind of ruins our corporate design scheme.
      Will all the files in setupcomplete be available when the command is run, what about subfolders ?

      Reply
      1. Jörgen Nilsson says:
        April 1, 2021 at 5:13 pm

        Hi,
        How have you deployed the corporate background? I think I have it in my example to replace the default backgrounds if that is what you need.

        Regards,
        JÖrgen

        Reply
    11. Jonas Lindqvist says:
      May 21, 2021 at 12:48 pm

      How do you use the ESD file insted of the WIM?

      Reply
    12. Christopher Ireland says:
      May 25, 2021 at 9:12 pm

      Hi Johan and JÖrgen,
      It works great. I did notice that in the C:\ProgramData\~IpuLog\IpuInstaller.log that it reported the free space on the drive as the total drive space. I had intentionally given my 80 GB VM under 10 GB of space to see if it would fail, and it reported that I had 80 GB free space and was attempting the upgrade. And it worked, ha! Awesome stuff. Thank you so much.

      Reply
    13. Christopher Ireland says:
      May 25, 2021 at 9:17 pm

      For the question about RunSilent.exe and subfolders, here are a few examples of RunSilent.ini with various types of executables:
      powershell.exe,-WindowStyle Hidden -NoProfile -ExecutionPolicy ByPass -File .\BGInfo\Install-BGInfo.ps1
      msiexec.exe,/I 7-Zip\7z1900-x64.msi /qb
      Win10-Upgrade-Modifications\2019-08-21\Modifications.cmd

      Reply
    14. Christopher Ireland says:
      June 24, 2021 at 9:58 pm

      I found that for an executable being referenced by one of the PowerShell scripts in a subfolder and run by RunSilent.exe, the normal variables for finding the current working directory don’t work, probably because it’s a script calling another script. It does work when run manually, but not when kicked off by RunSilent.exe.
      For instance, if SetupComplete\BGInfo\Install-BGInfo.ps1 runs the BGInfo.msi file next to it, $PSScriptroot, $pwd, or Get-Location in Install-BGInfo.ps1 don’t resolve to the current BGInfo directory. Instead, they resolve to SetupComplete and thus the installation fails. What ended up working was getting the downlevel directory this way:

      $scriptpath = $MyInvocation.MyCommand.Path
      $dir = Split-Path $scriptpath

      Reply
    15. Pingback: IPUInstaller update with Windows 11 and MUI Support - CCMEXEC.COM - Enterprise Mobility

    Leave a Reply Cancel reply

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

    My name is Jörgen Nilsson and I work as a Senior Consultant at Onevinn in Malmö, Sweden. This is my blog where I will share tips and stuff for my own and everyone elses use on Enterprise Mobility and Windows related topics.
    All code is provided "AS-IS" with no warranties.

    Tweets by ccmexec

    Recent Posts

    • Logging the Co-management and Defender onboarding process during OSD
    • Show DP information during OSD using TSBackground
    • Using Install-language during AutoPilot Windows 11 insider
    • Co-Management and the importance of device token enrollment.
    • Windows 11 Insider Start Menu layout registry customizations

    ©2022 CCMEXEC.COM – Enterprise Mobility | WordPress Theme by Superb Themes
    This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.Accept Reject Read More
    Privacy & Cookies Policy

    Privacy Overview

    This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
    Necessary
    Always Enabled
    Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
    Non-necessary
    Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
    SAVE & ACCEPT