Skip to main content

Installers

NVM for Windows has a Community Build and a Certified Build. Each build has an amd64 (x64) package and an arm64 package. For help identifying the build best for you, review Choosing a Build.

Community Build​

Use the Community Build for a user-managed install under %LOCALAPPDATA%\Author Software\nvm. The published installer is code-signed by Author Software Inc.

You may already have NVM for Windows installed!

Microsoft Zenith preconfigures NVM for Windows, starting with AMD Ryzen AI Max / Halo devices. Lenovo ThinkCentre X Ultra will begin shipping this in November 2026. More silicon partners & OEMs are being added in 2027 and beyond.

Open PowerShell and run nvm env. If NVM for Windows is present, the command shows the configuration.

  1. Download the setup.exe installer (MIT License).
  2. Run the installer.
Recommended Approach

The installer opens a wizard to customize your Node.js workflow / environment configuration.


Silent Installation​

The community installer is Inno Setup. These switches apply to nvm-<version>-x64-setup.exe and nvm-<version>-arm64-setup.exe.

SwitchWhat it does
/VERYSILENTNo wizard and no progress window.
/SILENTProgress window only. No wizard pages.
/SUPPRESSMSGBOXESSkip message boxes. Use with /SILENT or /VERYSILENT.
/NORESTARTDo not reboot when the install finishes.
/DIR⚠️ Ignored. A path other than the default program root stops the silent install with NVM4100.
/DIR is ignored

Do not pass /DIR to choose an install folder. The community program root stays %LOCALAPPDATA%\Author Software\nvm. A different /DIR value is ignored, and the silent install stops with error NVM4100. Set Node.js storage with InstallRoot in the wizard, or with nvm config after install.

.\nvm-<version>-x64-setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART
.\nvm-<version>-x64-setup.exe /SILENT /SUPPRESSMSGBOXES /NORESTART

A silent install skips the storage-permissions page. If InstallRoot is not a safe managed path and the ACL check fails, the installer moves storage to AppData. If ACL repair still fails, the silent install stops. Pass /ALLOWDEGRADEDACLS to continue.

Runtime directories (.shim, .nodejs, .sync, .cache, .verify, proxy.exe) always live under the program root. Custom InstallRoot holds version trees only — NVM never creates those runtime dirs as siblings of a custom storage folder (for example choosing D:\nvm must not create D:\.shim).

ParameterAccepted valuesWhat it does
/ALLOWDEGRADEDACLS1, true, yesFinish a silent install when Node storage ACLs cannot be hardened. Sets RuntimeACLDegraded. Repair later with nvm doctor --autofix.
/OFFICIALNODEadopt (default), dropWhat to do with an official Node.js install (not NVM). adopt copies that version and your %APPDATA%\npm global modules into NVM storage, then uninstalls official Node.js. drop uninstalls official Node.js. It does not copy that install.

If official Node.js is present, the wizard shows a line like Node.js 22.20.0 detected with 14 global modules (128 MB). The wizard then shows Adopt and Drop only. Silent and winget installs skip that page. Those installs use /OFFICIALNODE. The community default is adopt. Any other value, including copy, keep, and ignore, is treated as adopt.

The community installer cannot keep official Node.js. The system PATH Node.js directory overrides the NVM user PATH. copy and keep are available only on the certified MSI.

If the installer cannot remove official Node.js, the silent install stops. The exit code is not 0. Remove that Node.js installation, then run the installer again.

.\nvm-<version>-x64-setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /ALLOWDEGRADEDACLS=1
.\nvm-<version>-x64-setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /OFFICIALNODE=adopt
.\nvm-<version>-x64-setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /OFFICIALNODE=drop

There is no task list. /TASKS has no effect.

Winget​

winget install nvm-windows uses the very-silent switches above. Pass a custom parameter with --custom. Winget appends --custom to those switches.

winget install nvm-windows --custom "/ALLOWDEGRADEDACLS=1"
winget install nvm-windows --custom "/OFFICIALNODE=adopt"

--override replaces the default switches. If you use --override, include /VERYSILENT /SUPPRESSMSGBOXES /NORESTART.

Certified Build​

Use the Certified Build for a machine-managed MSI install under %ProgramFiles%\Author Software\nvm. The installer is code-signed by Author Software Inc.

Available now

Certified Build files are available from the customer portal.

Certified Builds support remote install through Active Directory and Microsoft Entra / Intune. You can also install the MSI on one computer. See Enterprise Deployment to install NVM for Windows on many computers.

Quiet installs need elevation. Pass MSI properties after the package path.

PropertyAccepted valuesWhat it does
ACCEPT_EULA1Accept the EULA without the wizard. Required for /qn and /qb.
OFFICIALNODEcopy (default), adopt, keep, dropWhat to do with an official Node.js install (not NVM). copy copies that version and %APPDATA%\npm global modules into NVM. It leaves the official install on disk. It puts NVM first on the system PATH. adopt copies the same files, then uninstalls official Node.js. keep does not copy official Node.js. It leaves that install on disk. It puts NVM first on the system PATH. drop uninstalls official Node.js. It does not copy that install.

adopt-keep means copy. adopt-drop means adopt. ignore-keep and ignore mean keep. ignore-drop means drop. Any other value becomes copy. Bare adopt uninstalls official Node.js after the copy. It is not an alias of copy.

msiexec /i "C:\path\to\nvm-windows-<version>-certified-x64.msi" ACCEPT_EULA=1 /qn /norestart
msiexec /i "C:\path\to\nvm-windows-<version>-certified-x64.msi" ACCEPT_EULA=1 OFFICIALNODE=copy /qn /norestart
msiexec /i "C:\path\to\nvm-windows-<version>-certified-x64.msi" ACCEPT_EULA=1 OFFICIALNODE=adopt /qn /norestart
msiexec /i "C:\path\to\nvm-windows-<version>-certified-x64.msi" ACCEPT_EULA=1 OFFICIALNODE=keep /qn /norestart
msiexec /i "C:\path\to\nvm-windows-<version>-certified-x64.msi" ACCEPT_EULA=1 OFFICIALNODE=drop /qn /norestart

NVM first means %LOCALAPPDATA%\Author Software\nvm\.nodejs, then C:\Program Files\Author Software\nvm, then official Node.js. If the copy fails, or the uninstall fails, the install stops. Remove the existing Node.js installation, then run the installer again.

The wizard shows Copy, Adopt, Keep, and Drop. Copy is the default.

FileUse Case
Deploy ManuallyInstall with the MSI (or a script) on one computer.
IntuneDeploy to a Microsoft Entra organization.
Active DirectoryDeploy sitewide with GPO Software Installation.

Silent Installation​

The Certified Build uses a Windows Installer (MSI) package. Quiet installs need elevation.

FlagWhat it does
/i <path.msi>Install or upgrade.
/qnNo UI (quiet).
/norestartDo not reboot when the install finishes.

Pass MSI properties after the package path.

msiexec /i "C:\path\to\nvm-windows-<version>-certified-x64.msi" ACCEPT_EULA=1 /qn /norestart
PropertyAccepted valuesWhat it does
ACCEPT_EULA1Accept the EULA without the wizard. Required for /qn and /qb. A full-UI install does not need this property.
OFFICIALNODE
  • adopt-keep (default)
  • adopt-drop
  • ignore-keep
  • ignore-drop
What to do with an official Node.js install (not NVM).
adopt-keep copies that version and %APPDATA%\npm global modules into NVM. It leaves the official install on disk. It puts NVM first on the system PATH.
adopt-drop copies the same files. It then uninstalls official Node.js.
ignore-keep does not copy official Node.js. It leaves that install on disk. It puts NVM first on the system PATH. Alias: ignore.
ignore-drop does not copy official Node.js. It uninstalls that install. Alias: drop.
adopt is an alias of adopt-keep.
Any other value becomes adopt-keep.
msiexec /i "C:\path\to\nvm-windows-<version>-certified-x64.msi" ACCEPT_EULA=1 OFFICIALNODE=adopt-keep /qn /norestart
msiexec /i "C:\path\to\nvm-windows-<version>-certified-x64.msi" ACCEPT_EULA=1 OFFICIALNODE=adopt-drop /qn /norestart
msiexec /i "C:\path\to\nvm-windows-<version>-certified-x64.msi" ACCEPT_EULA=1 OFFICIALNODE=ignore-keep /qn /norestart
msiexec /i "C:\path\to\nvm-windows-<version>-certified-x64.msi" ACCEPT_EULA=1 OFFICIALNODE=ignore-drop /qn /norestart

NVM first means %LOCALAPPDATA%\Author Software\nvm\.nodejs, then C:\Program Files\Author Software\nvm, then official Node.js. If the copy fails, or the uninstall fails, the install stops. Remove the existing Node.js installation, then run the installer again.

More msiexec flags, repair, and MST transforms: Deploy Manually.

Upgrading from v1 or Community v2

The certified MSI installs to Program Files and updates machine NVM_HOME and PATH. Existing Node.js versions stay under LocalAppData. On the first nvm launch, obsolete AppData app binaries are removed. The installs folder is kept. The MSI does not run the community uninstaller. The MSI also registers the ETW event provider and clears legacy SYSTEM environment variables during install. Remediation/ scripts (machine-startup.ps1, Register-EventLogSource.ps1, Remove-LegacySystemEnv.ps1) are backup only. Do not add those scripts to GPO startup.

Installing Node.js​

After NVM for Windows is installed, install one or more Node.js versions.

Example: Install the latest supported Node.js version
nvm install lts

Warnings​

Read these warnings before you install the Community Build.

Do not install the Community Build as Administrator!

Do not install the Community Build as Administrator. An Administrator install configures NVM for Windows for the administrator account. It does not configure the user account that will run Node.js. See registered event source permissions.

UAC for Logging

The community installer tries to register NVM for Windows as a system event source. That step shows a UAC prompt. If the user account cannot complete that step, Event Viewer shows the source as "Unknown". It does not show "NVM for Windows". Native logging still works.