Remove the Built-In Apps during a Windows 10 Upgrade

By | November 12, 2016

Ever since Windows 8 was first released, removing the built-in or “provisioned” apps that get installed for every user has definitely added some additional considerations when building or deploying your Windows image. Windows 10 is no different, but to make matters worse, their is a little “twist” this time around. If you have performed an upgrade to a new build of Windows 10, no matter which method you have used, you have already noticed that the apps just get reinstalled after the upgrade. In this blog we will cover three different ways you can remove the Windows 10 inbox apps and keep them away.

During a ConfigMgr or MDT Task Sequence

Whether you are using a Configuration Manager or a MDT task sequence to upgrade your versions of Windows 10, you can still use the traditional PowerShell script that so many of us have grown accustomed to over the years. If you haven’t used this method in the past, Microsoft MVP Jörgen Nilsson has an excellent script for you to use. You can find this script and the instructions over on his blog found here.

Removing the Apps from the Source WIM

If you are using a deployment tool like Configuration Manager or MDT (or something that uses the source Windows 10 files to perform the upgrade), you can actually remove the apps straight from the source install.wim. This is nice because it is a set-it-and-forget-it method. Once you download your Windows 10 source ISO and extract the binaries, you can run PowerShell to mount the install .wim and remove the apps before you import it into your deployment tool.

To do this, create a folder called C:\Mount and run the following PowerShell commands from an elevated session:

Mount-WindowsImage -Path C:\Mount -ImagePath <Path to the install.wim> -Index 1

mount-image

Once the image is mounted, you can see what provisioned apps are included in that build by running the following – take note of the PackageName because that is what you use to remove the app:

Get-AppxProvisionedPackage -Path C:\Mount

getapps

Once you see which apps you don’t want, run the following command to remove them (in this case I will remove 3DBuilder):

Remove-AppxProvisionedPackage -Path C:\Mount -PackageName Microsoft.3DBuilder_10.9.50.0_neutral_~_8wekyb3d8bbwe

removeapp

Do this for every app that you want removed. Again, be very careful when you decide which apps you remove.

Once you are happy with the outcome, you can run the following to save the new install.wim:

Dismount-WindowsImage -Path C:\Mount -Save

Remove Apps when Upgrading through Windows 10 Servicing (Feature Upgrade)

Now this is where things get interesting. If you have decided to leverage Windows 10 Servicing as an upgrade method, you are already aware that there aren’t many ways to customize the OS during the upgrade. To remove the provisioned apps while leveraging Windows 10 servicing, you need to create a SetupConfig.ini file. The SetupConfig.ini file is an answer file that the system will look for and configure during the Windows 10 servicing. The options available in the SetupConfig.ini file are equivalent to the switches available if you were running the Setup.exe engine found here. There are quite a few different customizations that can be added to this file and I highly suggest taking a look at them. You can find more documentation on the SetupConfig.ini as an answer file here.

One of the options you have with this file is to run a script after the OOBE is finished. For this particular post, this is what we will be focusing on. First, open up Notepad and copy the following:

[SetupConfig]
PostOOBE=C:\SetupComplete.cmd

Save the file as SetupConfig.ini (make sure you change the Save as type to All Files) and place it in the “C:\Users\Default\AppData\Local\Microsoft\Windows\WSUS” folder (if the WSUS folder isn’t there just create it).

Now open Notepad once again and copy and paste the following:

@echo off

Set psfile=%~dp0SetupComplete.ps1
if exist %psfile% ( 
   Powershell.exe -ExecutionPolicy Bypass -File %psfile% -WindowStyle Hidden 
)

Save the file as SetupComplete.cmd (again, make sure you change the Save as type to All Files) and place it in the same “C:\Users\Default\AppData\Local\Microsoft\Windows\WSUS” folder.

And finally, add the script you use to remove the provisioned apps (and any other required files) to the WSUS folder and rename the script SetupComplete.ps1. Once again, if you don’t have a PowerShell script to remove provisioned apps, take a look here.