5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-02 15:11:53 +08:00
wails/v2/internal/frontend/desktop/windows/go-webview2/webviewloader/find_dll.go
Misite Bao f70d9de366
fix: fix go test errors (#2169)
* fix: fix go test errors

* Add flags to mac test

* Run on all branches

* Update PR workflow

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-12-06 06:45:06 +11:00

75 lines
1.4 KiB
Go

//go:build windows
package webviewloader
import (
"errors"
"fmt"
"os"
"path/filepath"
"runtime"
"golang.org/x/sys/windows/registry"
)
var (
errNoClientDLLFound = errors.New("no webview2 found")
)
func findEmbeddedBrowserVersion(filename string) (string, error) {
block, err := getFileVersionInfo(filename)
if err != nil {
return "", err
}
info, err := verQueryValueString(block, "\\StringFileInfo\\040904B0\\ProductVersion")
if err != nil {
return "", err
}
return info, nil
}
func findEmbeddedClientDll(embeddedEdgeSubFolder string) (outClientPath string, err error) {
if !filepath.IsAbs(embeddedEdgeSubFolder) {
exe, err := os.Executable()
if err != nil {
return "", err
}
embeddedEdgeSubFolder = filepath.Join(filepath.Dir(exe), embeddedEdgeSubFolder)
}
return findClientDllInFolder(embeddedEdgeSubFolder)
}
func findClientDllInFolder(folder string) (string, error) {
arch := ""
switch runtime.GOARCH {
case "arm64":
arch = "arm64"
case "amd64":
arch = "x64"
case "386":
arch = "x86"
default:
return "", fmt.Errorf("Unsupported architecture")
}
dllPath := filepath.Join(folder, "EBWebView", arch, "EmbeddedBrowserWebView.dll")
if _, err := os.Stat(dllPath); err != nil {
return "", mapFindErr(err)
}
return dllPath, nil
}
func mapFindErr(err error) error {
if errors.Is(err, registry.ErrNotExist) {
return errNoClientDLLFound
}
if errors.Is(err, os.ErrNotExist) {
return errNoClientDLLFound
}
return err
}