{"slug":"install-tailscale-on-windows-with-msi","title":"Install Tailscale on Windows with MSI","tags":["tailscale","setup"],"agent_summary":"Last validated: Jan 5, 2026","trigger_phrases":[],"runnable":false,"markdown":"\r\n# Install Tailscale on Windows with MSI\r\n\r\nLast validated: Jan 5, 2026\r\n\r\nThe current version of the Tailscale client available for [download](https://tailscale.com/download/windows) requires Windows 10 or later or Windows Server 2016 or later.\r\n\r\nThis topic shows how to install Tailscale with the Windows Installer (MSI) package. If you want to use the Tailscale\r\n`.exe` installer, refer to [Install Tailscale on Windows](https://tailscale.com/docs/install/windows).\r\n\r\n## [To install](https://tailscale.com/docs/install/windows/msi\\#to-install)\r\n\r\n1. Download the latest `.msi` file from the [Tailscale Packages](https://pkgs.tailscale.com/stable/#windows) page. You need to choose the version for your\r\nCPU architecture. If your architecture is based on `ARM64`, use the `x86` version.\r\n\r\n2. Run the installer. You can double select the download, or you can use the [`msiexec`](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/msiexec) command:\r\n\r\n`msiexec /i <path_to_tailscale_msi.msi>`\r\n\r\nOptionally, write logging information from `msiexec` to a file. The folder used for the log file must already exist.\r\n\r\n`msiexec /L <path_to_log.log> /i <path_to_tailscale_msi.msi>`\r\n\r\n3. Note the new Tailscale icon in your system tray once installation is complete. If it is not\r\nvisible, select the up arrow to find it in the system tray overflow area.\r\n\r\n4. Select the Tailscale icon to expose configuration options and status messages.\r\n\r\n5. Under your account, select **Log in** to launch a browser window, and authenticate\r\nusing [your SSO identity provider](https://tailscale.com/docs/integrations/identity).\r\n\r\n\r\n## [To uninstall](https://tailscale.com/docs/install/windows/msi\\#to-uninstall)\r\n\r\nUsers can [uninstall Tailscale](https://tailscale.com/docs/features/client/uninstall) through the Windows control panel.\r\n\r\nFor system administration or debugging purposes, you can also uninstall with `msiexec`. If you uninstall with\r\n`msiexec`, you must use the same `.msi` file that you used to install the client.\r\n\r\n```markup\r\nmsiexec /x <path_to_tailscale_msi.msi>\r\n```\r\n\r\nYou can also use the `/L` option to write logging information from `msiexec` to a file.\r\n\r\n```markup\r\nmsiexec /L <path_to_log.log> /x <path_to_tailscale_msi.msi>\r\n```\r\n\r\n## [Properties](https://tailscale.com/docs/install/windows/msi\\#properties)\r\n\r\nIf you use the `msiexec` command-line tool, you can set several MSI properties that control the user's experience with\r\nthe Tailscale client. For example, this installation command hides the **Network Devices** menu item in the Tailscale client:\r\n\r\n```markup\r\nmsiexec TS_NETWORKDEVICES=\"hide\" /i tailscale-setup-1.22.0-amd64.msi\r\n```\r\n\r\nTailscale MSI properties, if set, are stored in the `HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Tailscale` registry key.\r\nThe [registry value type](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry-value-types) for all Tailscale MSI properties is `REG_SZ`.\r\n\r\nThe following properties can be used with MSI.\r\n\r\n### [INSTALLDIR](https://tailscale.com/docs/install/windows/msi\\#installdir)\r\n\r\nSpecifies the path of the installation directory on disk. The installation path\r\ndefaults to `C:\\Program Files\\Tailscale`.\r\n\r\n### [TS\\_ADMINCONSOLE](https://tailscale.com/docs/install/windows/msi\\#ts_adminconsole)\r\n\r\nControls visibility of the **Admin Console** menu\r\n\r\n- Registry name: `AdminConsole`\r\n- Possible values: \"show\", \"hide\"\r\n\r\n### [TS\\_ADVERTISEEXITNODE](https://tailscale.com/docs/install/windows/msi\\#ts_advertiseexitnode)\r\n\r\nControls how the [Run As Exit Nodes](https://tailscale.com/docs/features/exit-nodes) option is configured\r\n\r\n- Registry name: `AdvertiseExitNode`\r\n- Possible values: \"always\", \"never\", \"user-decides\"\r\n\r\n### [TS\\_ALLOWINCOMINGCONNECTIONS](https://tailscale.com/docs/install/windows/msi\\#ts_allowincomingconnections)\r\n\r\nControls the **Preferences** \\> **Allow Incoming Connections** menu item\r\n\r\n- Registry name: `AllowIncomingConnections`\r\n- Possible values: \"always\", \"never\", \"user-decides\"\r\n\r\n### [TS\\_CHECKUPDATES](https://tailscale.com/docs/install/windows/msi\\#ts_checkupdates)\r\n\r\nThis policy does not currently change Windows behavior. It corresponds to `tailscale set --update-check` but the Windows client does not currently look at this because it always checks for updates.\r\n\r\n- Registry name: `CheckUpdates`\r\n- Possible values: \"always\", \"never\", \"user-decides\"\r\n\r\n### [TS\\_ENABLEDNS](https://tailscale.com/docs/install/windows/msi\\#ts_enabledns)\r\n\r\nControls whether to apply its DNS configuration when the tunnel is connected\r\n\r\n- Registry name: `UseTailscaleDNSSettings`\r\n- Possible values: \"always\", \"never\", \"user-decides\"\r\n\r\n### [TS\\_ENABLESUBNETS](https://tailscale.com/docs/install/windows/msi\\#ts_enablesubnets)\r\n\r\nControls whether to accept subnets advertised by other nodes in your tailnet\r\n\r\n- Registry name: `UseTailscaleSubnets`\r\n- Possible values: \"always\", \"never\", \"user-decides\"\r\n\r\n### [TS\\_EXITNODEMENU](https://tailscale.com/docs/install/windows/msi\\#ts_exitnodemenu)\r\n\r\nControls the visibility of the **Exit Nodes** menu\r\n\r\n- Registry name: `ExitNodesPicker`\r\n- Possible values: \"show\", \"hide\"\r\n\r\n### [TS\\_FLUSHDNSONSESSIONUNLOCK](https://tailscale.com/docs/install/windows/msi\\#ts_flushdnsonsessionunlock)\r\n\r\nEnables additional DNS cache flushing for debugging purposes. This should only be enabled if recommended by Tailscale Support.\r\n\r\n- Registry name: `FlushDNSOnSessionUnlock`\r\n- Possible values: \"1\", \"0\"\r\n\r\n### [TS\\_INSTALLUPDATES](https://tailscale.com/docs/install/windows/msi\\#ts_installupdates)\r\n\r\nControls how **Automatically Install Updates** is configured\r\n\r\n- Registry name: `InstallUpdates`\r\n- Possible values: \"always\", \"never\", \"user-decides\"\r\n\r\n### [TS\\_KEYEXPIRATIONNOTICE](https://tailscale.com/docs/install/windows/msi\\#ts_keyexpirationnotice)\r\n\r\nEnables a warning message that will be displayed up to time prior to the login's\r\nactual expiry. The default is 24 hours.\r\n\r\n- Registry name: `KeyExpirationNotice`\r\n- Possible values: String value that can be parsed by Go's [`time.ParseDuration` function](https://pkg.go.dev/time#ParseDuration). For example, \"12h\".\r\n\r\n### [TS\\_LOGINURL](https://tailscale.com/docs/install/windows/msi\\#ts_loginurl)\r\n\r\nControls the required use of a particular Tailscale coordination server. For more information, refer to [Set a custom control server URL](https://tailscale.com/docs/features/tailscale-system-policies#set-a-custom-control-server-url).\r\n\r\n- Registry name: `LoginURL`\r\n- Possible values: URL for the coordination server\r\n\r\n### [TS\\_NETWORKDEVICES](https://tailscale.com/docs/install/windows/msi\\#ts_networkdevices)\r\n\r\nControls the visibility of the **Network Devices** menu\r\n\r\n- Registry name: `NetworkDevices`\r\n- Possible values: \"show\", \"hide\"\r\n\r\n### [TS\\_NOLAUNCH](https://tailscale.com/docs/install/windows/msi\\#ts_nolaunch)\r\n\r\nControls whether the Tailscale client is launched as part of the installation. This property is applicable only during silent installation.\r\n\r\n- Registry name: Not applicable—no value is saved to the registry.\r\n- Possible values: Any string. Set this to a non-empty string to prevent the Tailscale GUI client from launching as part of installation.\r\n\r\n### [TS\\_ONBOARDING\\_FLOW](https://tailscale.com/docs/install/windows/msi\\#ts_onboarding_flow)\r\n\r\nControls visibility of the onboarding flow\r\n\r\n- Registry name: `OnboardingFlow`\r\n- Possible values: \"show\", \"hide\"\r\n\r\n### [TS\\_PREFERENCESMENU](https://tailscale.com/docs/install/windows/msi\\#ts_preferencesmenu)\r\n\r\nControls the visibility of the **Preferences** menu\r\n\r\n- Registry name: `PreferencesMenu`\r\n- Possible values: \"show\", \"hide\"\r\n\r\n### [TS\\_TESTMENU](https://tailscale.com/docs/install/windows/msi\\#ts_testmenu)\r\n\r\nControls whether it is possible for users to bring up the debug menu by holding either `CTRL` or `SHIFT` when opening the Tailscale menu.\r\n\r\n- Registry name: `TestMenu`\r\n- Possible values: \"show\", \"hide\"\r\n\r\n### [TS\\_UNATTENDEDMODE](https://tailscale.com/docs/install/windows/msi\\#ts_unattendedmode)\r\n\r\nControls the **Preferences** \\> **Run Unattended** menu item\r\n\r\n- Registry name: `UnattendedMode`\r\n- Possible values: \"always\", \"never\", \"user-decides\"\r\n\r\n### [TS\\_UPDATEMENU](https://tailscale.com/docs/install/windows/msi\\#ts_updatemenu)\r\n\r\nControls the visibility of the **Update Tailscale** menu item.\r\n\r\n- Registry name: `UpdateMenu`\r\n- Possible values: \"show\", \"hide\"\r\n\r\n![Project Logo](https://cdn.brandfetch.io/tailscale.com/fallback/lettermark/theme/dark/h/256/w/256/icon?c=1bfwsmEH20zzEfSNTed)\r\n\r\nAsk AI\r\n\r\nreCAPTCHA\r\n\r\nRecaptcha requires verification.\r\n\r\nprotected by **reCAPTCHA**\r\n","html":"<h1>Install Tailscale on Windows with MSI</h1>\n<p>Last validated: Jan 5, 2026</p>\n<p>The current version of the Tailscale client available for <a href=\"https://tailscale.com/download/windows\">download</a> requires Windows 10 or later or Windows Server 2016 or later.</p>\n<p>This topic shows how to install Tailscale with the Windows Installer (MSI) package. If you want to use the Tailscale\r\n<code>.exe</code> installer, refer to <a href=\"https://tailscale.com/docs/install/windows\">Install Tailscale on Windows</a>.</p>\n<h2><a href=\"https://tailscale.com/docs/install/windows/msi#to-install\">To install</a></h2>\n<ol>\n<li>\n<p>Download the latest <code>.msi</code> file from the <a href=\"https://pkgs.tailscale.com/stable/#windows\">Tailscale Packages</a> page. You need to choose the version for your\r\nCPU architecture. If your architecture is based on <code>ARM64</code>, use the <code>x86</code> version.</p>\n</li>\n<li>\n<p>Run the installer. You can double select the download, or you can use the <a href=\"https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/msiexec\"><code>msiexec</code></a> command:</p>\n</li>\n</ol>\n<p><code>msiexec /i &#x3C;path_to_tailscale_msi.msi></code></p>\n<p>Optionally, write logging information from <code>msiexec</code> to a file. The folder used for the log file must already exist.</p>\n<p><code>msiexec /L &#x3C;path_to_log.log> /i &#x3C;path_to_tailscale_msi.msi></code></p>\n<ol start=\"3\">\n<li>\n<p>Note the new Tailscale icon in your system tray once installation is complete. If it is not\r\nvisible, select the up arrow to find it in the system tray overflow area.</p>\n</li>\n<li>\n<p>Select the Tailscale icon to expose configuration options and status messages.</p>\n</li>\n<li>\n<p>Under your account, select <strong>Log in</strong> to launch a browser window, and authenticate\r\nusing <a href=\"https://tailscale.com/docs/integrations/identity\">your SSO identity provider</a>.</p>\n</li>\n</ol>\n<h2><a href=\"https://tailscale.com/docs/install/windows/msi#to-uninstall\">To uninstall</a></h2>\n<p>Users can <a href=\"https://tailscale.com/docs/features/client/uninstall\">uninstall Tailscale</a> through the Windows control panel.</p>\n<p>For system administration or debugging purposes, you can also uninstall with <code>msiexec</code>. If you uninstall with\r\n<code>msiexec</code>, you must use the same <code>.msi</code> file that you used to install the client.</p>\n<pre><code class=\"language-markup\">msiexec /x &#x3C;path_to_tailscale_msi.msi>\n</code></pre>\n<p>You can also use the <code>/L</code> option to write logging information from <code>msiexec</code> to a file.</p>\n<pre><code class=\"language-markup\">msiexec /L &#x3C;path_to_log.log> /x &#x3C;path_to_tailscale_msi.msi>\n</code></pre>\n<h2><a href=\"https://tailscale.com/docs/install/windows/msi#properties\">Properties</a></h2>\n<p>If you use the <code>msiexec</code> command-line tool, you can set several MSI properties that control the user's experience with\r\nthe Tailscale client. For example, this installation command hides the <strong>Network Devices</strong> menu item in the Tailscale client:</p>\n<pre><code class=\"language-markup\">msiexec TS_NETWORKDEVICES=\"hide\" /i tailscale-setup-1.22.0-amd64.msi\n</code></pre>\n<p>Tailscale MSI properties, if set, are stored in the <code>HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Tailscale</code> registry key.\r\nThe <a href=\"https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry-value-types\">registry value type</a> for all Tailscale MSI properties is <code>REG_SZ</code>.</p>\n<p>The following properties can be used with MSI.</p>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#installdir\">INSTALLDIR</a></h3>\n<p>Specifies the path of the installation directory on disk. The installation path\r\ndefaults to <code>C:\\Program Files\\Tailscale</code>.</p>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_adminconsole\">TS_ADMINCONSOLE</a></h3>\n<p>Controls visibility of the <strong>Admin Console</strong> menu</p>\n<ul>\n<li>Registry name: <code>AdminConsole</code></li>\n<li>Possible values: \"show\", \"hide\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_advertiseexitnode\">TS_ADVERTISEEXITNODE</a></h3>\n<p>Controls how the <a href=\"https://tailscale.com/docs/features/exit-nodes\">Run As Exit Nodes</a> option is configured</p>\n<ul>\n<li>Registry name: <code>AdvertiseExitNode</code></li>\n<li>Possible values: \"always\", \"never\", \"user-decides\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_allowincomingconnections\">TS_ALLOWINCOMINGCONNECTIONS</a></h3>\n<p>Controls the <strong>Preferences</strong> > <strong>Allow Incoming Connections</strong> menu item</p>\n<ul>\n<li>Registry name: <code>AllowIncomingConnections</code></li>\n<li>Possible values: \"always\", \"never\", \"user-decides\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_checkupdates\">TS_CHECKUPDATES</a></h3>\n<p>This policy does not currently change Windows behavior. It corresponds to <code>tailscale set --update-check</code> but the Windows client does not currently look at this because it always checks for updates.</p>\n<ul>\n<li>Registry name: <code>CheckUpdates</code></li>\n<li>Possible values: \"always\", \"never\", \"user-decides\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_enabledns\">TS_ENABLEDNS</a></h3>\n<p>Controls whether to apply its DNS configuration when the tunnel is connected</p>\n<ul>\n<li>Registry name: <code>UseTailscaleDNSSettings</code></li>\n<li>Possible values: \"always\", \"never\", \"user-decides\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_enablesubnets\">TS_ENABLESUBNETS</a></h3>\n<p>Controls whether to accept subnets advertised by other nodes in your tailnet</p>\n<ul>\n<li>Registry name: <code>UseTailscaleSubnets</code></li>\n<li>Possible values: \"always\", \"never\", \"user-decides\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_exitnodemenu\">TS_EXITNODEMENU</a></h3>\n<p>Controls the visibility of the <strong>Exit Nodes</strong> menu</p>\n<ul>\n<li>Registry name: <code>ExitNodesPicker</code></li>\n<li>Possible values: \"show\", \"hide\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_flushdnsonsessionunlock\">TS_FLUSHDNSONSESSIONUNLOCK</a></h3>\n<p>Enables additional DNS cache flushing for debugging purposes. This should only be enabled if recommended by Tailscale Support.</p>\n<ul>\n<li>Registry name: <code>FlushDNSOnSessionUnlock</code></li>\n<li>Possible values: \"1\", \"0\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_installupdates\">TS_INSTALLUPDATES</a></h3>\n<p>Controls how <strong>Automatically Install Updates</strong> is configured</p>\n<ul>\n<li>Registry name: <code>InstallUpdates</code></li>\n<li>Possible values: \"always\", \"never\", \"user-decides\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_keyexpirationnotice\">TS_KEYEXPIRATIONNOTICE</a></h3>\n<p>Enables a warning message that will be displayed up to time prior to the login's\r\nactual expiry. The default is 24 hours.</p>\n<ul>\n<li>Registry name: <code>KeyExpirationNotice</code></li>\n<li>Possible values: String value that can be parsed by Go's <a href=\"https://pkg.go.dev/time#ParseDuration\"><code>time.ParseDuration</code> function</a>. For example, \"12h\".</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_loginurl\">TS_LOGINURL</a></h3>\n<p>Controls the required use of a particular Tailscale coordination server. For more information, refer to <a href=\"https://tailscale.com/docs/features/tailscale-system-policies#set-a-custom-control-server-url\">Set a custom control server URL</a>.</p>\n<ul>\n<li>Registry name: <code>LoginURL</code></li>\n<li>Possible values: URL for the coordination server</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_networkdevices\">TS_NETWORKDEVICES</a></h3>\n<p>Controls the visibility of the <strong>Network Devices</strong> menu</p>\n<ul>\n<li>Registry name: <code>NetworkDevices</code></li>\n<li>Possible values: \"show\", \"hide\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_nolaunch\">TS_NOLAUNCH</a></h3>\n<p>Controls whether the Tailscale client is launched as part of the installation. This property is applicable only during silent installation.</p>\n<ul>\n<li>Registry name: Not applicable—no value is saved to the registry.</li>\n<li>Possible values: Any string. Set this to a non-empty string to prevent the Tailscale GUI client from launching as part of installation.</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_onboarding_flow\">TS_ONBOARDING_FLOW</a></h3>\n<p>Controls visibility of the onboarding flow</p>\n<ul>\n<li>Registry name: <code>OnboardingFlow</code></li>\n<li>Possible values: \"show\", \"hide\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_preferencesmenu\">TS_PREFERENCESMENU</a></h3>\n<p>Controls the visibility of the <strong>Preferences</strong> menu</p>\n<ul>\n<li>Registry name: <code>PreferencesMenu</code></li>\n<li>Possible values: \"show\", \"hide\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_testmenu\">TS_TESTMENU</a></h3>\n<p>Controls whether it is possible for users to bring up the debug menu by holding either <code>CTRL</code> or <code>SHIFT</code> when opening the Tailscale menu.</p>\n<ul>\n<li>Registry name: <code>TestMenu</code></li>\n<li>Possible values: \"show\", \"hide\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_unattendedmode\">TS_UNATTENDEDMODE</a></h3>\n<p>Controls the <strong>Preferences</strong> > <strong>Run Unattended</strong> menu item</p>\n<ul>\n<li>Registry name: <code>UnattendedMode</code></li>\n<li>Possible values: \"always\", \"never\", \"user-decides\"</li>\n</ul>\n<h3><a href=\"https://tailscale.com/docs/install/windows/msi#ts_updatemenu\">TS_UPDATEMENU</a></h3>\n<p>Controls the visibility of the <strong>Update Tailscale</strong> menu item.</p>\n<ul>\n<li>Registry name: <code>UpdateMenu</code></li>\n<li>Possible values: \"show\", \"hide\"</li>\n</ul>\n<p><img src=\"https://cdn.brandfetch.io/tailscale.com/fallback/lettermark/theme/dark/h/256/w/256/icon?c=1bfwsmEH20zzEfSNTed\" alt=\"Project Logo\"></p>\n<p>Ask AI</p>\n<p>reCAPTCHA</p>\n<p>Recaptcha requires verification.</p>\n<p>protected by <strong>reCAPTCHA</strong></p>\n"}