diff --git a/client/installer.nsis b/client/installer.nsis
index 8b2b8ea39..b50b8e91d 100644
--- a/client/installer.nsis
+++ b/client/installer.nsis
@@ -270,6 +270,43 @@ CreateShortCut "$SMPROGRAMS\${APP_NAME}.lnk" "$INSTDIR\${UI_APP_EXE}"
CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\${UI_APP_EXE}"
SectionEnd
+# Install the Microsoft Edge WebView2 runtime if it isn't already present.
+# Macro adapted from Wails3's NSIS template (wails_tools.nsh): a registry
+# probe followed by a silent install of the embedded evergreen bootstrapper.
+# The MicrosoftEdgeWebview2Setup.exe payload is staged next to this script
+# by the sign-pipelines build step (`wails3 generate webview2bootstrapper`).
+!macro nb.webview2runtime
+ SetRegView 64
+ # Per-machine install marker — populated when the runtime ships with
+ # Edge or has been installed by an admin previously.
+ ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
+ ${If} $0 != ""
+ Goto webview2_ok
+ ${EndIf}
+ # Per-user fallback for HKCU installs.
+ ReadRegStr $0 HKCU "Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
+ ${If} $0 != ""
+ Goto webview2_ok
+ ${EndIf}
+
+ SetDetailsPrint both
+ DetailPrint "Installing: WebView2 Runtime"
+ SetDetailsPrint listonly
+
+ InitPluginsDir
+ CreateDirectory "$pluginsdir\webview2bootstrapper"
+ SetOutPath "$pluginsdir\webview2bootstrapper"
+ File "MicrosoftEdgeWebview2Setup.exe"
+ ExecWait '"$pluginsdir\webview2bootstrapper\MicrosoftEdgeWebview2Setup.exe" /silent /install'
+
+ SetDetailsPrint both
+ webview2_ok:
+!macroend
+
+Section -WebView2
+ !insertmacro nb.webview2runtime
+SectionEnd
+
Section -Post
ExecWait '"$INSTDIR\${MAIN_APP_EXE}" service install'
ExecWait '"$INSTDIR\${MAIN_APP_EXE}" service start'
@@ -316,9 +353,9 @@ DetailPrint "Deleting application files..."
Delete "$INSTDIR\${UI_APP_EXE}"
Delete "$INSTDIR\${MAIN_APP_EXE}"
Delete "$INSTDIR\wintun.dll"
-!if ${ARCH} == "amd64"
+# Legacy: pre-Wails installs shipped opengl32.dll (Mesa3D for Fyne); remove
+# any leftover copy on uninstall so old upgrades don't leave it behind.
Delete "$INSTDIR\opengl32.dll"
-!endif
DetailPrint "Removing application directory..."
RmDir /r "$INSTDIR"
diff --git a/client/netbird.wxs b/client/netbird.wxs
index 23aa250f4..1d928d8d2 100644
--- a/client/netbird.wxs
+++ b/client/netbird.wxs
@@ -29,9 +29,6 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+