- Guide to install or uninstall Windows Subsystem for Linux on Windows 10 Anniversary Update and Creators Update
- Uninstalling/Removing the legacy distro
- Manually deleting the legacy distro
- Select the .NET version to use
- The SDK uses the latest installed version
- Target Framework Monikers define build time APIs
- Framework-dependent apps roll forward
- Self-contained deployments include the selected runtime
- Windows Setup Command-Line Options
- /1394Debug
- /AddBootMgrLast
- /BitLocker
- /BusParams
- /ConfigFile
- /CompactOS
- /Compat
- /CopyLogs
- /Debug
- /DiagnosticPrompt
- /DynamicUpdate
- /EMSPort
- /Finalize
- /ImageIndex
- /InstallDrivers
- /InstallFrom
- /InstallLangPacks
- /MigNEO
- /MigrateDrivers
- /NetDebug
- /NoReboot
- /Priority
- /PostOOBE
- /PostRollback
- /Quiet
- /ReflectDrivers
- /ResizeRecoveryPartition
- /ShowOOBE
- /SkipFinalize
- /Telemetry
- /TempDrive
- /Unattend
- /Uninstall
- /USBDebug
- /WDSDiscover
- /WDSServer
Guide to install or uninstall Windows Subsystem for Linux on Windows 10 Anniversary Update and Creators Update
If you’re running Windows 10 Creators Update or later, please follow the Windows 10 installation instructions.
The following instructions are for users running Windows 10 Anniversary Update or Windows 10 Creators Update
Prior to Windows 10 Fall Creators Update (version 1709), WSL was released as a beta feature and installed a single Ubuntu instance when «Bash on Ubuntu on Windows» (or Bash.exe) was first run.
While you CAN use WSL on earlier Windows 10 releases, this beta «legacy distro» is now considered obsolete. We strongly encourage you to run the most recent version of Windows 10 available. Each new Windows 10 release includes many hundreds of fixes and improvements in WSL alone, allowing ever more Linux tools and apps to run correctly on WSL.
If you cannot upgrade to Fall Creators Update or later, follow the steps below to enable and use WSL:
Turn on Developer Mode To run WSL on Windows 10 Anniversary Update or Creators Update, you must enable Developer Mode:
Open Settings -> Update and Security -> For developers
Select the Developer Mode radio button
Open a command prompt. Type bash and hit enter
The first time you run Bash on Ubuntu on Windows, you’ll be prompted to accept Canonical’s license. Once accepted, WSL will download and install the Ubuntu instance onto your machine, and a «Bash on Ubuntu on Windows» shortcut will be added to your start menu.
The first time you run Bash on Ubuntu on Windows, you will be prompted to create a UNIX username and password. Follow the new distro instance instructions to complete your installation
Launch a new Ubuntu shell by either:
- Running bash from a command-prompt
- Clicking the start menu «Bash on Ubuntu on Windows» shortcut
Uninstalling/Removing the legacy distro
If you upgrade to Windows 10 Fall Creators Update from an earlier Windows 10 release upon which you installed WSL, your existing distro will remain intact. However, we STRONGLY encourage you to install a new Store-delivered distro ASAP, and migrate any necessary files, data, etc. from your legacy distro to your new distro.
To remove the legacy distro from your machine, run the following from a Command Line or PowerShell instance:
If you are not using Windows Version 1903 or higher, you may need to run wslconfig /u Legacy or lxrun /uninstall /full instead.
Manually deleting the legacy distro
If you wish, you can manually delete your legacy instance. This may be required if you encounter issues uninstalling the legacy distro using lxrun.exe , or are running Windows 10 Spring 2018 Update (or later) which do not ship with lxrun.exe .
To forcefully delete your legacy WSL distro, delete the %localappdata%\lxss\ folder (and all it’s sub-contents) using Windows’ File Explorer, or the command-line:
Select the .NET version to use
This article explains the policies used by the .NET tools, SDK, and runtime for selecting versions. These policies provide a balance between running applications using the specified versions and enabling ease of upgrading both developer and end-user machines. These policies perform the following actions:
- Easy and efficient deployment of .NET, including security and reliability updates.
- Use the latest tools and commands independent of target runtime.
Version selection occurs:
The rest of this document examines those four scenarios.
The SDK uses the latest installed version
SDK commands include dotnet new and dotnet run . The .NET CLI must choose an SDK version for every dotnet command. It uses the latest SDK installed on the machine by default, even if:
- The project targets an earlier version of the .NET runtime.
- The latest version of the .NET SDK is a preview version.
You can take advantage of the latest SDK features and improvements while targeting earlier .NET runtime versions. You can target multiple runtime versions of .NET on different projects, using the same SDK tools for all projects.
On rare occasions, you may need to use an earlier version of the SDK. You specify that version in a global.json file. The «use latest» policy means you only use global.json to specify a .NET SDK version earlier than the latest installed version.
global.json can be placed anywhere in the file hierarchy. The CLI searches upward from the project directory for the first global.json it finds. You control which projects a given global.json applies to by its place in the file system. The .NET CLI searches for a global.json file iteratively navigating the path upward from the current working directory. The first global.json file found specifies the version used. If that SDK version is installed, that version is used. If the SDK specified in the global.json is not found, the .NET CLI uses matching rules to select a compatible SDK, or fails if none is found.
The following example shows the global.json syntax:
The process for selecting an SDK version is:
- dotnet searches for a global.json file iteratively reverse-navigating the path upward from the current working directory.
- dotnet uses the SDK specified in the first global.json found.
- dotnet uses the latest installed SDK if no global.json is found.
You can learn more about selecting an SDK version in the Matching rules section of the article on global.json.
Target Framework Monikers define build time APIs
You build your project against APIs defined in a Target Framework Moniker (TFM). You specify the target framework in the project file. Set the TargetFramework element in your project file as shown in the following example:
You may build your project against multiple TFMs. Setting multiple target frameworks is more common for libraries but can be done with applications as well. You specify a TargetFrameworks property (plural of TargetFramework ). The target frameworks are semicolon-delimited as shown in the following example:
A given SDK supports a fixed set of frameworks, capped to the target framework of the runtime it ships with. For example, the .NET Core 3.1 SDK includes the .NET Core 3.1 runtime, which is an implementation of the netcoreapp3.0 target framework. The .NET Core 3.1 SDK supports netcoreapp2.1 , netcoreapp2.2 , netcoreapp3.0 , but not net5.0 (or higher). You install the .NET 5.0 SDK to build for net5.0 .
.NET Standard target frameworks are also capped to the target framework of the runtime the SDK ships with. The .NET 5.0 SDK is capped to netstandard2.1 . For more information, see .NET Standard.
Framework-dependent apps roll forward
When you run an application from source with dotnet run , from a framework-dependent deployment with dotnet myapp.dll , or from a framework-dependent executable with myapp.exe , the dotnet executable is the host for the application.
The host chooses the latest patch version installed on the machine. For example, if you specified netcoreapp3.0 in your project file, and 3.0.2 is the latest .NET runtime installed, the 3.0.2 runtime is used.
If no acceptable 3.0.* version is found, a new 3.* version is used. For example, if you specified netcoreapp3.0 and only 3.1.0 is installed, the application runs using the 3.1.0 runtime. This behavior is referred to as «minor version roll-forward.» Lower versions also won’t be considered. When no acceptable runtime is installed, the application won’t run.
A few usage examples demonstrate the behavior, if you target 3.0:
- вњ”пёЏ 3.0 is specified. 3.0.3 is the highest patch version installed. 3.0.3 is used.
- вќЊ 3.0 is specified. No 3.0.* versions are installed. 2.1.1 is the highest runtime installed. An error message is displayed.
- вњ”пёЏ 3.0 is specified. No 3.0.* versions are installed. 3.1.0 is the highest runtime version installed. 3.1.0 is used.
- вќЊ 2.0 is specified. No 2.x versions are installed. 3.0.0 is the highest runtime installed. An error message is displayed.
Minor version roll-forward has one side-effect that may affect end users. Consider the following scenario:
- The application specifies that 3.0 is required.
- When run, version 3.0.* is not installed, however, 3.1.0 is. Version 3.1.0 will be used.
- Later, the user installs 3.0.3 and runs the application again, 3.0.3 will now be used.
It’s possible that 3.0.3 and 3.1.0 behave differently, particularly for scenarios like serializing binary data.
Self-contained deployments include the selected runtime
You can publish an application as a self-contained distribution. This approach bundles the .NET runtime and libraries with your application. Self-contained deployments don’t have a dependency on runtime environments. Runtime version selection occurs at publishing time, not run time.
The publishing process selects the latest patch version of the given runtime family. For example, dotnet publish will select .NET Core 3.0.3 if it is the latest patch version in the .NET Core 3.0 runtime family. The target framework (including the latest installed security patches) is packaged with the application.
It’s an error if the minimum version specified for an application isn’t satisfied. dotnet publish binds to the latest runtime patch version (within a given major.minor version family). dotnet publish doesn’t support the roll-forward semantics of dotnet run . For more information about patches and self-contained deployments, see the article on runtime patch selection in deploying .NET applications.
Self-contained deployments may require a specific patch version. You can override the minimum runtime patch version (to higher or lower versions) in the project file, as shown in the following example:
The RuntimeFrameworkVersion element overrides the default version policy. For self-contained deployments, the RuntimeFrameworkVersion specifies the exact runtime framework version. For framework-dependent applications, the RuntimeFrameworkVersion specifies the minimum required runtime framework version.
Windows Setup Command-Line Options
The following command-line options are available for WindowsВ Setup (setup.exe). Beginning with Windows 10, version 1607, you can use a setupconfig file as an alternative to passing parameters to Windows Setup on a command line. For more information, see Windows Setup Automation Overview.
/1394Debug
Enables kernel debugging over an IEEE 1394 (FireWire) port while Windows is running and during the WindowsPE configuration pass of Windows Setup.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
Remarks
The default value for is 1. specifies the baud to use when Windows transfers data during debugging. The default value is 19200, but can also be set to 57600 or 115200.
/AddBootMgrLast
Instructs Windows Setup to add the Windows Boot Manager as the last entry in the UEFI firmware boot order.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
Remarks
This option is only supported on UEFI PCs running Windows PE 4.0 or later.
Performs an automated upgrade to Windows 10 or Windows 8.1 volume license editions only.
Parameter | Description |
---|---|
Clean | Performs a clean install of Windows |
DataOnly | Performs an upgrade of Windows, saving only data (and not apps.) If the data-only installation option is not available due to compatibility checks, Windows Setup will exit silently and log an exit code. |
Upgrade | Performs an upgrade of Windows saving apps and data. If the upgrade installation option is not available, or the user needs to resolve an app compatibility issue, Windows Setup will exit silently and log an exit code. |
NoAutoEit | Not used in Windows 10. In Windows 8.1, if an error is found, Windows Setup does not exit, but instead stops and stays on the Windows Setup screen until the user addresses the issue. The installation from that point on is attended. |
PerformDU | Not used in Windows 10. In Windows 8.1, Windows Setup checks for Dynamic Updates for Windows Setup |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | No |
Remarks
When /Auto is used, an unattend file cannot be used. When /Auto is used, Windows Setup consumes ei.cfg, and checks compatibility issues before starting the installation. If ei.cfg is malformed, Windows Setup exits silently and logs an exit code. See Windows Setup Exit Codes below. When /Auto is used, only the following customizations of the Windows image are supported. This is not a change in Windows Setup support policy but instead a clarification:
- Applying a cumulative (quality) update
- Applying updates to the servicing stack necessary to complete the feature update (see Servicing stack updates for more information)
- Applying updates to Setup.exe binaries or other files that Setup uses for feature updates
- Appling updates for the «safe operating system» (SafeOS) that is used for the Windows recovery environment
- Adding or removing languages
- Adding or removing Features on Demand
For clarity, when /Auto is used, Windows Setup does not support upgrades nor clean installs to a Windows image that has been customized by adding / removing / changing applications, settings nor drivers.
When /Auto is used, Windows Setup will upgrade using the \sources\install.wim Windows image. Using Dism /Export-Image, this image can be used as a source image for exporting a new image using the /Compress:recovery option. This exported image must be named install.esd for Windows Setup to use it instead of install.wim. You must also remove install.wim from \sources. You should only export to install.esd if you want to reduce the Windows image size. The exported image will be smaller, but will not be mountable.
/BitLocker
Specifies the BitLocker status during upgrades.
Parameter | Description |
---|---|
AlwaysSuspend | BitLocker is always suspended during an upgrade. |
TryKeepActive | Attempts an upgrade without suspending BitLocker. If the upgrade fails, Windows Setup will suspend BitLocker and complete the upgrade. This is the default behavior if the /BitLocker option is not specified. |
ForceKeepActive | Enables upgrading without suspending BitLocker. If the upgrade can’t be completed because BitLocker is active, the upgrade will fail. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
/BusParams
Specifies the PCI address of a 1394, USB, or NET debug port.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
Remarks
The bus, device, and function numbers must be in decimal format. For more info, see Setting Up Kernel Debugging with USB 2.0.
/ConfigFile
Specifies the location to the setupconfig file.
Parameter | Description |
---|---|
Local file path or UNC network path to a folder that contains the Windows Setup configuration file. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | No |
Remarks
If you include an option on the command line and the same option in the setupconfig file, the setupconfig file option and value has precedence.
/CompactOS
Specifies whether to use the Compact OS feature to save hard drive space.
Parameter | Description |
---|---|
Enable | Windows Setup installs Windows using compressed system files. |
Disable | Windows Setup installs Windows using uncompressed system files. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
By default, Windows Setup determines whether to use this feature automatically. To learn more about Compact OS, see Compact OS, single-instancing, and image optimization.
/Compat
Instructs Windows Setup how to handle compatibility scans and messages.
Parameter | Description |
---|---|
IgnoreWarning | Windows Setup completes installation, ignoring any dismissible compatibility messages. |
ScanOnly | Windows Setup runs through compatibility scans, and then exits (without completing the installation) with an exit code to indicate if any compatibility concerns are present. Windows Setup will return 0xC1900210 if no concerns are found. Windows Setup will return 0xC1900208 if compatibility concerns are found. |
This command works with other switches. To run Windows Setup in the background without any UI:
To ignore common disclaimers in the UI, for example, language changes:
Often an IT Pro will look at the compat XML if Windows Setup finds compatibility issues. Use /CopyLogs to collect Windows Setup logs:
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes only with /Compat IgnoreWarning |
Remarks
This option is available in Windows 10.
If you launch Windows Setup with /Compat ScanOnly:
- If it does not find any compatibility issue, it will return MOSETUP_E_COMPAT_SCANONLY (0xC1900210)
- If it finds actionable compatibility issues, like Apps, it will return MOSETUP_E_COMPAT_INSTALLREQ_BLOCK (0xC1900208)
- If it finds that the Mig-Choice selected is not available, it will return MOSETUP_E_COMPAT_MIGCHOICE_BLOCK (0xC1900204)
- If it finds that machine is not eligible for Windows 10, it will return MOSETUP_E_COMPAT_SYSREQ_BLOCK (0xC1900200)
- If it finds that machine does not have enough free space to install, it will return MOSETUP_E_INSTALLDISKSPACE_BLOCK (0xC190020E)
/CopyLogs
Windows Setup will copy or upload compressed logs upon failure to the specified location assuming machine/user has permission and network access to location.
Parameter | Description |
---|---|
Local file path or UNC network paths. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
Accepted parameters are local file paths and UNC network paths. Execution runs in the system context, so it may not have permissions to copy to locations that require user permissions.
/Debug
Enables kernel debugging over a communications (COM) port when Windows is running, and during the WindowsPE configuration pass of Windows Setup.
Parameter | Description |
---|---|
Specifies the debugging port. The default value is 1. | |
Specifies the baud to use when Windows transfers data during debugging. The default setting is 19200, but can also be set to 57600 or 115200. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
/DiagnosticPrompt
Specifies that the Command Prompt is available during Windows Setup.
Parameter | Description |
---|---|
Enable | The Command Prompt can be accessed by pressing Shift+F10 during Windows Setup. |
Disable | The Command Prompt is not available during Windows Setup. The Command Prompt wil not be available while offline and OOBE phases are running. This is the default setting. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
This option is available in Windows 10, Version 1703.
/DynamicUpdate
Specifies whether Windows Setup will perform Dynamic Update operations (search, download, and install updates).
Parameter | Description |
---|---|
Enable | Dynamic Update operations are performed. |
Disable | Dynamic Update operations are not performed. |
NoDrivers | Dynamic Update operations are performed except driver acquisition. |
NoDriversNoLCU | Dynamic Update operations are performed except driver and latest cumulative update acquisition. |
NoLCU | Dynamic Update operations are performed except latest cumulative update acquisition. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes for Microsoft Update (MU) based feature updates; Yes for Unified Updated Platform (UUP) based feature updates only when /DynamicUpdate NoDrivers is specified |
Remarks
NoDrivers, NoLCU and NoDriversNoLCU are new for Windows 10, version 2004. When NoDrivers, NoLCU or NoDriversNoLCU is specified, Dynamic Update operations will be performed but drivers and/or the latest cumulative update acquisition will not be performed. /DynamicUpdate can be used with /SkipFinalize to control Dynamic Update operations; /DynamicUpdate is ignored when used with /Finalize.
/EMSPort
Enables or disables Emergency Management Services (EMS) during Windows Setup and after the server operating system has been installed.
Parameter | Description |
---|---|
COM1 | Enables EMS over COM1. Supported for x86 systems only. |
COM2 | Enables EMS over COM2. Supported for x86 systems only. |
UseBIOSSettings | uses the setting that the BIOS specifies. For x86 systems, Windows uses the value from the Serial Port Console Redirection (SPCR) table. If no SPCR table or EFI console device path is specified in the BIOS, Windows disables EMS. |
Off | Disables EMS. If EMS is disabled in Windows Setup, you can later enable EMS by modifying the boot settings. |
Specifies the baud to use when Windows transfers data during debugging. The default value is 19200, but it can also be set to 57600 or 115200. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
/Finalize
Instructions Windows Setup to finish previously started update operations on the down-level OS, followed by an immediate reboot to start the offline phase.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | No |
Remarks
This option is new for Windows 10, version 2004. /Finalize should not be specified with the /NoReboot option. Windows Setup will return error MOSETUP_E_FINALIZE_RESUME_FAILURE (0xC1900132) if /Finalize is called and the device is not in the proper state to resume after running /SkipFinalize. See /SkipFinalize.
/ImageIndex
Instructions Windows Setup which OS image to install from install.wim if multiple images may be applicable.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes for Microsoft Update (MU) based feature updates; No for Unified Updated Platform (UUP) based feature updates |
Remarks
If multiple images are applicable, Windows Setup will prompt the user to select. If multiple images are applicable and Windows Setup is invoked with /Quiet, Windows Setup will fail with error MOSETUP_E_NO_MATCHING_INSTALL_IMAGE (0xC1900215). This may occur when the product key specified using /PKey applies to multiple OS images.
/InstallDrivers
Adds .inf-style drivers to the new Windows 10 installation.
Parameter | Description |
---|---|
Local file path or UNC network path to a folder that contains .inf files. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
This option is new for Windows 10. The driver .inf can be in a folder within the specified location. The command will recurse through the specified location.
/InstallFrom
Specifies a different Install.wim file to use during Windows Setup.
Parameter | Description |
---|---|
The path of the .wim file to install. |
This option also be used with split image files (.swm). Select the first split image file in the series
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | No |
Remarks
This enables you to use a single preinstallation environment to install multiple versions of Windows images. For example, you can use a 32-bit version of Windows Setup to deploy a 64-bit Windows image. You can also use an answer file for cross-platform deployments. For more information, see “Creating a WIM for Multiple Architecture Types” in Windows Setup Supported Platforms and Cross-Platform Deployments
/InstallLangPacks
Adds language packs (lp.cab) to the new Windows 10 installation.
Parameter | Description |
---|---|
Local file path or UNC network path to a folder that contains .inf files. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes for Microsoft Update (MU) based feature updates; No for Unified Updated Platform (UUP) based feature updates |
Remarks
This option is new for Windows 10. The language packs can be in a folder within the specified . The command installs all lp.cab files and language capabilities such as text-to-speech recognition, in the folder and subfolders at the specified . Language capabilities may have be dependent on other language capabilities. For example, Text-to-speech is dependent on the Basic component of the same language. Language capabilities should not be renamed within . See Language and region Features on Demand (FOD). In Windows 10, version 1903 and later, install failures will cause Windows Setup to fail and rollback.
Instructs Windows Setup to copy alternate files from an alternate location. This option instructs Windows Setup to look in the alternate location first, and, if files are present, to use them instead of the files from the default location.
Parameter | Description |
---|---|
Name and the location of the folder that contains the replacement files and can be any local drive location. UNC paths are not supported. |
Examples
To copy an updated C:\Program Files\Messenger\Msmsgs.exe file into the Windows installation, create the following folder structure on the Pro\Sources$OEM$$Progs\Messenger\Msmsgs.exe installation source by using the Setup command:
If you replace a file that Windows file protection protects, you must also copy the updated file to the local sources to be installed with Windows. For example, you may copy the file to the C:\Windows\i386 folder. The file name must be the same as the name that is used in Windows Setup. For example, add the following file and folder structure to your $OEM$ directory: Pro\sources$OEM$$$\i386\msmsgs.ex_. If you use files that are not on an installation share, you must specify the folder name. In this example the is C:\additional_files, where C:\additional_files is your customized $OEM$ directory. For example: C:\additional_files$$\i386\msmsgs.ex_.
If you change resources in your replacement files, you must add the updated Multilanguage User Interface (MUI) files to the installation.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
Remarks
You must know where the files will be installed on the Windows installation. All the additional files must be copied to an $OEM$ folder in your installation sources or in the . The $OEM$ structure provides a representation of the destination installation disk:
- $OEM$\$1 maps to %SYSTEMDRIVE%, which could be drive C.
- $OEM$\$$ maps to %WINDIR%, which could be C:\windows.
- $OEM$\$progs maps to the program files directory.
- $OEM$\$docs maps to the user’s My Documents folder.
/MigNEO
Tells Windows Setup to perform an upgrade of Windows without additional offline phase optimizations.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes only with /Auto Upgrade | DataOnly |
setupconfig.ini files used for feature updates | Yes only with /Auto Upgrade | DataOnly |
Remarks
NEO stands for Non-event Objective, a multi-release effort to reduce feature update offline time, including a single reboot for most users. This option is available in Windows 10, version 1803 and later.
/MigrateDrivers
Instructs Windows Setup whether to migrate the drivers from the existing installation during the upgrade.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
You can specify All or None. By default, Windows Setup decides which is best for each individual driver based on the install choice. You can use this switch with /InstallDrivers, though it’s not required.
/NetDebug
Enables kernel debugging over the network.
Syntax
/NetDebug:hostip= ,port= ,key= [,nodhcp][,busparams= ]
Parameter | Description |
---|---|
IP address of the host computer. | |
Port of the host computer. | |
Password to set up a secure connection. | |
Bus number, device number, and function number of an adapter for a specific PCI bus device.. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
Remarks
Use hostip to identify the IP address of the host computer. Use port to identify the port. The default start port is 49152, and the default end port is 65535. Use key to provide a password to set up a secure connection. Use nodhcp to avoid using a DHCP connection. (optional). Use busparams to select the bus number, device number, and function number of an adapter for a specific PCI bus device. (optional). For additional details, see Setting Up Kernel-Mode Debugging over a Network Cable Manually.
/NoReboot
Instructs Windows Setup not to restart the computer after the down-level phase of Windows Setup completes.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | No |
Remarks
This option is new for Windows 10. The /NoReboot option enables you to execute additional commands before Windows restarts. This option suppresses only the first reboot. The option does not suppress subsequent reboots.
Supplies Windows Setup with the specific product key.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
This option is new for Windows 10.
/Priority
Tells Windows Setup to increase the thread priority from low to normal for feature updates through Windows Update.
Parameter | Description |
---|---|
Normal | Windows Setup will execute with normal thread priority. |
Low | Windows Setup will execute with low thread priority. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
This option is available in Windows 10, version 1709 and later. Low priority is new for Windows 10, version 2004. Media based installations already run at Normal priority by default but can be decreased to Low priority.
/PostOOBE
After Windows Setup is complete, run a script.
Syntax
/PostOOBE [\setupcomplete.cmd]
Parameter | Description |
---|---|
Local file path or UNC network path to a file named setupcomplete.cmd or to a folder that contains setupcomplete.cmd. |
Path to folder that contains a script with the name setupcomplete.cmd. setupcomplete.cmd is copied to $Windows.
BT to be run after OOBE.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
This option is available in Windows 10.
/PostRollback
Instructs Windows Setup to run a script if the feature update fails to install and rolls back the changes, or if the user chooses to uninstall the feature update and go back to a previous version of Windows.
Syntax
/PostRollback [/PostRollbackContext
Parameter | Description |
---|---|
Local file path or UNC network path to a file named setuprollback.cmd, or to a folder that contains setuprollback.cmd. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
This option is available in Windows 10. /PostRollbackContext option is available in Windows 10, version 1803 and later. The /PostRollbackContext option allows you to specify whether the script runs in the context of the System account or the account of the signed in user. By default, updates from media run setuprollback.cmd in user context, which requires the first user who logs in post-upgrade to have administrator rights. For updates from Windows Update, setuprollback.cmd runs in system context, regardless of the rights of the first logged-in user. Windows Setup will copy setuprollback.cmd to $Windows.
BT to be run after OOBE.
/Quiet
This will suppress any Windows Setup user experience including the rollback user experience.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | No |
Remarks
This option is available in Windows 10.
/ReflectDrivers
Specifies the path to a folder that contains encryption drivers for a computer that has third-party encryption enabled.
Parameter | Description |
---|---|
Local file path or UNC network path to a folder that contains .inf files. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
This option is available in Windows 10, version 1607. Make sure that contains only a minimal set of encryption drivers. Having more drivers than necessary can negatively impact upgrade scenarios.
/ResizeRecoveryPartition
Specifies whether it’s OK to resize the existing Windows Recovery Environment (Windows RE) partition or create a new one during installation.
Parameter | Description |
---|---|
Enable | During installation, Windows can resize the existing Windows RE tools partition or create a new one if needed. |
Disable | Windows does not resize the existing Windows RE tools partition or create a new one during installation. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
/ShowOOBE
Specifies whether the user is required to interactively complete the out of box experience (OOBE).
Parameter | Description |
---|---|
Full | Requires the user to interactively complete the out of box experience (OOBE). |
None | Skips OOBE and selects the default settings. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
This option is available in Windows 10.
/SkipFinalize
Instructions setup to start update operations on the down-level OS without initiating a reboot to start the offline phase.
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | No |
Remarks
This option is available in Windows 10, version 2004. /SkipFinalize will prepare the update without committing. This allows for the commit to be completed using /Finalize followed by an immediate reboot of the device. This is the preferred approach to pending the update as the /NoReboot option will commit the changes but suppress the first reboot to allow for additional tasks. /SkipFinalize will not automatically instruct Windows Setup to run silently on the down-level OS while the computer is in use. Use /Quiet to suppress the Windows Setup user experience, and /Priority Low to prevent user impact. /SkipFinalize should not be specified with the /NoReboot option. See /Finalize.
/Telemetry
Specifies whether Windows Setup should capture and report installation data.
Parameter | Description |
---|---|
Enable | Windows Setup captures and reports installation data. |
Disable | Windows Setup does not capture and report installation data. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
/TempDrive
Instructs Windows Setup to put temporary installation files on the specified partition.
Parameter | Description |
---|---|
The partition to copy installation files to during Windows Setup. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
This option is available in Windows 10, version 1607. For an upgrade, the /TempDrive option affects only the placement of temporary files. The operating system is upgraded in the partition from which you run the setup.exe file.
/Unattend
Enables you to use an answer file with Windows Setup.
Parameter | Description |
---|---|
The file path and file name of the unattended Windows Setup answer file. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
Remarks
This is known as an unattended installation. You must specify a value for . Windows Setup applies the values in the answer file during installation. When /Unattend is used, /Auto cannot be used.
/Uninstall
Determines whether Windows will include controls that allow the user to go back to the previous operating system.
Parameter | Description |
---|---|
Enable | Windows Setup includes controls that allow the user to go back to the previous operating system. |
Disable | Windows Setup does not includes controls that allow the user to go back to the previous operating system. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | No |
Setup.exe started from Windows 10 | Yes |
setupconfig.ini files used for feature updates | Yes |
Remarks
This option is available in Windows 10.
/USBDebug
Sets up debugging on a USB port.
Parameter | Description |
---|---|
The name of the computer to debug. |
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
Remarks
Debug data is effective on the next reboot.
/WDSDiscover
Specifies that the Windows Deployment Services (WDS) client should be in discover mode.
Examples
To start the WDS client in dynamic discover mode, run the following command:
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
Remarks
If you do not specify /WDSServer WDS searches for a server.
/WDSServer
Specifies the name of the Windows Deployment Services (WDS) server that the client should connect to.
Parameter | Description |
---|---|
The name of the Windows Deployment Services server. |
Examples
To start the Windows Deployment Services client in static discover mode, run the following command:
Configuration | Applicable |
---|---|
Setup.exe started from WinPE | Yes |
Setup.exe started from Windows 10 | No |
setupconfig.ini files used for feature updates | No |
Remarks
To use this setting, you must also use the /WDSDiscover option. can be an IP address, a NetBIOS name, or a fully qualified domain name (FQDN).