@@ -2165,6 +2165,26 @@ tauri::Builder::default()
21652165 } ,
21662166 } ;
21672167
2168+ // The env var must be set before the Runtime is created so that GetAvailableBrowserVersionString picks it up.
2169+ #[ cfg( windows) ]
2170+ {
2171+ if let crate :: utils:: config:: WebviewInstallMode :: FixedRuntime { path } =
2172+ & manager. config . bundle . windows . webview_install_mode
2173+ {
2174+ if let Some ( exe_dir) = crate :: utils:: platform:: current_exe ( )
2175+ . ok ( )
2176+ . and_then ( |p| p. parent ( ) . map ( |p| p. to_path_buf ( ) ) )
2177+ {
2178+ std:: env:: set_var ( "WEBVIEW2_BROWSER_EXECUTABLE_FOLDER" , exe_dir. join ( path) ) ;
2179+ } else {
2180+ #[ cfg( debug_assertions) ]
2181+ eprintln ! (
2182+ "failed to resolve resource directory; fallback to the installed Webview2 runtime."
2183+ ) ;
2184+ }
2185+ }
2186+ }
2187+
21682188 #[ cfg( any( windows, target_os = "linux" ) ) ]
21692189 let mut runtime = if self . runtime_any_thread {
21702190 R :: new_any_thread ( runtime_args) ?
@@ -2242,25 +2262,6 @@ tauri::Builder::default()
22422262 app. manage ( ChannelDataIpcQueue :: default ( ) ) ;
22432263 app. handle . plugin ( crate :: ipc:: channel:: plugin ( ) ) ?;
22442264
2245- #[ cfg( windows) ]
2246- {
2247- if let crate :: utils:: config:: WebviewInstallMode :: FixedRuntime { path } =
2248- & app. manager . config ( ) . bundle . windows . webview_install_mode
2249- {
2250- if let Ok ( resource_dir) = app. path ( ) . resource_dir ( ) {
2251- std:: env:: set_var (
2252- "WEBVIEW2_BROWSER_EXECUTABLE_FOLDER" ,
2253- resource_dir. join ( path) ,
2254- ) ;
2255- } else {
2256- #[ cfg( debug_assertions) ]
2257- eprintln ! (
2258- "failed to resolve resource directory; fallback to the installed Webview2 runtime."
2259- ) ;
2260- }
2261- }
2262- }
2263-
22642265 let handle = app. handle ( ) ;
22652266
22662267 // initialize default tray icon if defined
0 commit comments