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!
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.
Hi,
Thanks for the headsup, it is now included.
Regards,
Jörgen
Very nice tool. Is there an option to have IpuInstaller generate a SetupConfig.ini file with “DynamicUpdate=Enabled”?
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.
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
Is there a way to use this without having the toast notification about the progress of the install?
Hi,
Yes, install the ConfigurationEditor, and from the MEMCM extension you can select to not show the upgrade progess..
Regards,
Jörgen
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
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.
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…
Hi Johan
That will be excellent, if we could add a custom setupconfig.ini to the application.
Kind Regards, Jakob
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.
Hi Johan, any idea on when the option of adding a custom setupconfig.ini will be supported. Kind Regards Jakob
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 ?
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
How do you use the ESD file insted of the WIM?
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.
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
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
I am really loving this tool. However as someone stated above I’m unable to use the Configuration Editor without it crashing the console whenever I try to Load/Save a settings file. Also don’t think the Deploy is actually working either as it seems it always gets a Default dialog maybe??
IS there anything to resolve this?