mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 01:43:15 +08:00
fix: fallback to hardcoded Edge/Chrome/Firefox Windows browser paths if user's default browser no longer exists (#3262)
To reproduce: - Use Windows - Set your default browser to Firefox (Settings -> Apps -> Default Apps -> Web Browser) - Rename your firefox.exe to something.else The BrowserOpenURL before this commit silently fails. The BrowserOpenURL after this commit tries to use a hardcoded fallback browser. If successful, a warning message is logged. If unsuccessful (default browser and fallback browsers fail), an error message is logged. Co-authored-by: Sean <sean@malonetuning.com>
This commit is contained in:
parent
08a71de536
commit
9cafd85cda
@ -10,5 +10,7 @@ import (
|
|||||||
// BrowserOpenURL Use the default browser to open the url
|
// BrowserOpenURL Use the default browser to open the url
|
||||||
func (f *Frontend) BrowserOpenURL(url string) {
|
func (f *Frontend) BrowserOpenURL(url string) {
|
||||||
// Specific method implementation
|
// Specific method implementation
|
||||||
_ = browser.OpenURL(url)
|
if err := browser.OpenURL(url); err != nil {
|
||||||
|
f.logger.Error("Unable to open default system browser")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,5 +8,7 @@ import "github.com/pkg/browser"
|
|||||||
// BrowserOpenURL Use the default browser to open the url
|
// BrowserOpenURL Use the default browser to open the url
|
||||||
func (f *Frontend) BrowserOpenURL(url string) {
|
func (f *Frontend) BrowserOpenURL(url string) {
|
||||||
// Specific method implementation
|
// Specific method implementation
|
||||||
_ = browser.OpenURL(url)
|
if err := browser.OpenURL(url); err != nil {
|
||||||
|
f.logger.Error("Unable to open default system browser")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,31 @@ package windows
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/pkg/browser"
|
"github.com/pkg/browser"
|
||||||
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var fallbackBrowserPaths = []string{
|
||||||
|
`\Program Files (x86)\Microsoft\Edge\Application\msedge.exe`,
|
||||||
|
`\Program Files\Google\Chrome\Application\chrome.exe`,
|
||||||
|
`\Program Files (x86)\Google\Chrome\Application\chrome.exe`,
|
||||||
|
`\Program Files\Mozilla Firefox\firefox.exe`,
|
||||||
|
}
|
||||||
|
|
||||||
// BrowserOpenURL Use the default browser to open the url
|
// BrowserOpenURL Use the default browser to open the url
|
||||||
func (f *Frontend) BrowserOpenURL(url string) {
|
func (f *Frontend) BrowserOpenURL(url string) {
|
||||||
// Specific method implementation
|
// Specific method implementation
|
||||||
_ = browser.OpenURL(url)
|
err := browser.OpenURL(url)
|
||||||
|
if err == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, fallback := range fallbackBrowserPaths {
|
||||||
|
if err := openBrowser(fallback, url); err == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
f.logger.Error("Unable to open default system browser")
|
||||||
|
}
|
||||||
|
|
||||||
|
func openBrowser(path, url string) error {
|
||||||
|
return windows.ShellExecute(0, nil, windows.StringToUTF16Ptr(path), windows.StringToUTF16Ptr(url), nil, windows.SW_SHOWNORMAL)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user