For first-time v2rayN users on Windows and anyone switching from WPF to the Desktop version. Check your system architecture and package type, then extract the files, verify runtime requirements, import a subscription, and configure the system proxy. Troubleshoot startup, core, and app proxy issues separately—a page failing to load doesn’t necessarily mean the installation failed.
Choosing between the Desktop and WPF versions
v2rayN is a client interface for managing server configurations, subscriptions, and routing rules. The proxy core it runs handles the actual connections. The Desktop and WPF versions differ mainly in interface technology and how they’re used—not in server protocols or subscription services. Whether a server connects still depends on the core, node settings, and network conditions.
Desktop version
RecommendedUses a cross-platform interface. For a first-time setup, start with the Windows Desktop download and check the package’s architecture and runtime requirements. It’s recommended because the setup path is clear for new users—not because it necessarily connects faster than WPF.
Best for: First-time setup and users who prefer a cross-platform interface
WPF version
Uses the classic Windows interface and suits users already familiar with its menus. Check the package’s release notes and startup prompts for dependencies. Don’t mix files from an older installation directory with a new package just because the interfaces look similar.
Best for: Users who prefer the classic Windows interface or have an established workflow
When switching versions, test the new one in a separate directory first. Don’t run two clients at once: they may repeatedly change the system proxy or conflict over local listening ports. Once the new version imports your configuration and connects successfully, you can deal with the old directory. Keep subscription URLs and configuration backups somewhere only you can access.
Before downloading: check your system architecture and package
Open Windows Settings → System → About and check System type. x64 and ARM64 refer to processor architectures, not interface styles. Choose from the packages actually listed on the download page. If there’s no package for your architecture, don’t guess based on the filename. For older Windows versions, check the current system requirements rather than repeatedly reinstalling the same package.
| Check | What to do | Problem to avoid |
|---|---|---|
| Processor architecture | Check whether System type shows x64 or ARM64, then match it to the download page. | The app won’t run, or its dependencies don’t match your architecture. |
| Package type | For an archive, select Extract All. For an installer, follow the setup wizard. | Treating an installer and a portable package the same way. |
| Runtime | Note the .NET runtime type, major version, and architecture required by the startup prompt. | Installing only the SDK or the wrong runtime type still leaves the app unable to start. |
| Core files | Keep the package’s directory structure intact and check the logs for missing core files. | Copying only the main executable can leave the interface working but connections unavailable. |
If the startup window specifically asks for .NET Desktop Runtime, install the matching major version and architecture. If it asks for another runtime, follow the prompt. WPF uses the Desktop Runtime, but not every release package includes the same dependencies, so there’s no single version number that applies to all releases. If no missing dependency is reported, you don’t need to install development tools “just in case.”
Extract and launch: follow these steps in order
-
Get the package
Visit the client downloads page and choose the v2rayN Desktop or WPF version for Windows. After saving the file, check whether it’s an archive or an installer before proceeding.
-
Extract all files
Right-click the archive and select Extract All. Use a separate directory you can write to, such as
D:\Apps\v2rayN. Don’t launch the app from the archive preview window or extract only one executable. -
Launch the main app
Run the main app from the directory where you extracted the files. If a runtime is missing, install the required dependency. If no main window appears, check the notification area to see whether the app is minimized to the system tray.
-
Check local settings
Open Settings → Parameters and check the local listening ports and related options. For your first test, leave TUN off; don’t enable both a virtual network adapter and the system proxy at the same time.
-
Create a shortcut
Once the app starts and saves settings correctly, create a shortcut to the main program. Launch it from the shortcut, leave the program files where they are, and don’t treat the extracted directory as a temporary folder to clean up.
Import your first subscription: subscription URL or node link?
A subscription URL retrieves a set of server configurations; a share link describes a single node. Installing the client doesn’t automatically provide servers—you’ll need subscription or node details you’re authorized to use. Subscription links often contain access tokens, so don’t share the full URL in screenshots, logs, or public support requests.
- Open Subscription Groups → Subscription Group Settings and select Add. Enter a recognizable name, paste the complete subscription URL into the address field, and save. In some versions, the add option appears as a plus sign; it does the same thing.
- Back in the main window, open the Subscription Groups menu. For the first update, choose Update All Subscriptions (without proxy). If you don’t have a working node yet, don’t rely on “Update through proxy” to establish your first connection.
- After updating, check the server list. If another group is selected or a search term is active, switch to the intended group and clear the filter first. That way, a hidden entry won’t look like a failed import.
- Select the server you want, right-click it, and choose Set as Active Server. Confirm the active entry has changed, then check the core startup information. Selecting a row doesn’t necessarily make it the active server.
If you have a single share link beginning with vmess:// or vless://, copy it and choose Servers → Import share links from clipboard. Don’t paste these links into the subscription update field, which expects an HTTP URL. Menu wording may vary by version; look for the distinction between importing a share link and updating a subscription.
System proxy and ports: test with a browser first
After setting an active server, applications still need to send requests to the local proxy. From the tray menu or main window, open System Proxy and select Set system proxy. Start with the built-in routing preset that bypasses mainland China; the exact name depends on the current rule list. The system proxy directs applications to the client, while routing determines which outbound connection handles traffic once it reaches the core. Neither replaces the other.
These are local entry points for apps connecting to the client, not remote server ports. Newer configurations may use one mixed port for both HTTP and SOCKS requests; older ones may listen on separate ports. Don’t enable an extra port just because a guide mentions it. Check the actual listening details in Settings → Parameters and the runtime logs.
First connection checklist
- Active server
- Set as active from the right-click menu
- System proxy
- Set system proxy
- TUN mode
- Leave off for the first test
- Routing
- Start with a built-in preset; don’t add custom rules yet
First, confirm a browser that follows the system proxy can access the web. Then test other apps.
Set proxy manually
- Server address
127.0.0.1- Example port
10808; must match the actual listening port- Proxy type
- Choose HTTP or SOCKS5 as required by the app
- Listening address
- For local use only, keep the loopback address
Set a proxy in the app only if it doesn’t use the system proxy and provides its own proxy settings.
First, open a website you’re authorized to access in your browser and check the logs for new connection entries. Browser access doesn’t mean every app will use the proxy: some ignore the system proxy or have their own proxy settings. In that case, check the app’s network settings. “Set system proxy” doesn’t route all traffic from your computer.
Startup and connection issues: troubleshoot by layer
Nothing happens when I double-click the app. Should I reinstall it?
Check whether the app is already running in the system tray, then confirm the files were fully extracted and look for a runtime prompt. If it asks for Desktop Runtime, check the major version and whether you need x64 or ARM64. Rather than repeatedly overwriting the same directory with different interface versions, reproduce the issue in a separate directory to narrow it down.
The server list is populated, but why won’t the core start?
Open the logs or information area at the bottom of the main window. Check for missing files, unsupported configuration, or a port conflict. If files are missing, extract the package again in full. If the protocol or settings aren’t supported, check the node requirements and selected core. A successful import doesn’t guarantee a valid configuration.
A port is already in use. Which one should I change?
First, exit any other client instances and proxy apps. If needed, run netstat -ano | findstr :10808 to see what’s using the port, then identify the process by PID in Task Manager. Change the local listening port only if necessary, and update any apps where you entered the proxy settings manually.
After I exit, my browser can’t connect either. Why?
Restart the client, select Clear system proxy from the System Proxy menu, then exit normally. If the app won’t start, open Windows Settings → Network & internet → Proxy and remove any leftover local proxy under “Use a proxy server.” If the settings are managed by your organization, check with your administrator first.
Reinstalling isn’t the right fix for a certificate error. First check that Windows Settings → Time & language → Date & time is correct, then verify the node’s server name and TLS settings. Keep certificate verification enabled and use the logs to pinpoint the issue. Disabling certificate checks as a permanent workaround removes an important layer of identity verification.
Updates and everyday use: keep a rollback option
Once the app runs successfully, note the interface version, local port, routing preset, and subscription group name. There’s no need to share full server details. Before upgrading, confirm the package type on the downloads page and exit the running client. Follow the update instructions for that package. For archives, testing a new directory makes it easier to rule out leftover files than overwriting the existing installation.
- Exit before backing up: Fully exit the client before backing up personal configuration to reduce the risk of inconsistent files. Backups may contain subscription credentials, so restrict access.
- Check after upgrading: Verify the active server, listening port, system proxy, and routing settings, then test browser access. Don’t stop at confirming that the main window opens.
- Change one thing at a time: Don’t switch interface versions, change the core, enable TUN, and modify DNS all at once. Test the connection after each change so you know what to roll back if something fails.
- Clear the proxy before exiting: When you’re done, clear the system proxy before closing the app. Enable startup on boot only after manual connections are working reliably.
Once these steps are complete, the connection path should be clear: apps connect to the local listening port, the client routes requests to the appropriate outbound, and the core connects to the remote server. To connect apps that don’t follow the system proxy, see the TUN and routing guide under Advanced Setup. If you still have questions about the basics, check Troubleshooting instead of adding more settings before you’ve found the cause.