[windows-x] Support webview2 runtime checker on startup

This commit is contained in:
Lea Anthony
2021-08-16 21:35:25 +10:00
parent 9d9c3d971a
commit c383a61036
4 changed files with 43 additions and 4 deletions

View File

@@ -40,6 +40,7 @@ func (a *App) Run() error {
// CreateApp creates the app!
func CreateApp(appoptions *options.App) (*App, error) {
var err error
ctx := context.Background()
@@ -50,12 +51,18 @@ func CreateApp(appoptions *options.App) (*App, error) {
myLogger := logger.New(appoptions.Logger)
myLogger.SetLogLevel(appoptions.LogLevel)
// Preflight Checks
err = PreflightChecks(appoptions, myLogger)
if err != nil {
return nil, err
}
// Create the menu manager
menuManager := menumanager.NewManager()
// Process the application menu
appMenu := options.GetApplicationMenu(appoptions)
err := menuManager.SetApplicationMenu(appMenu)
err = menuManager.SetApplicationMenu(appMenu)
if err != nil {
return nil, err
}

View File

@@ -0,0 +1,12 @@
// +build !windows
package appng
import (
"github.com/wailsapp/wails/v2/internal/logger"
"github.com/wailsapp/wails/v2/pkg/options"
)
func PreflightChecks(_ *options.App, _ *logger.Logger) error {
return nil
}

View File

@@ -2,6 +2,7 @@ package appng
import (
"github.com/wailsapp/wails/v2/internal/binding"
"github.com/wailsapp/wails/v2/internal/ffenestri/windows/wv2runtime"
"github.com/wailsapp/wails/v2/internal/frontend"
"github.com/wailsapp/wails/v2/internal/frontend/windows"
"github.com/wailsapp/wails/v2/internal/logger"
@@ -11,3 +12,21 @@ import (
func NewFrontend(appoptions *options.App, myLogger *logger.Logger, bindings *binding.Bindings, dispatcher frontend.Dispatcher) frontend.Frontend {
return windows.NewFrontend(appoptions, myLogger, bindings, dispatcher)
}
func PreflightChecks(options *options.App, logger *logger.Logger) error {
_ = options
// Process the webview2 runtime situation. We can pass a strategy in via the `webview2` flag for `wails build`.
// This will determine how wv2runtime.Process will handle a lack of valid runtime.
installedVersion, err := wv2runtime.Process()
if installedVersion != nil {
logger.Debug("WebView2 Runtime installed: Name: '%s' Version:'%s' Location:'%s'. Minimum version required: %s.",
installedVersion.Name, installedVersion.Version, installedVersion.Location, wv2runtime.MinimumRuntimeVersion)
}
if err != nil {
return err
}
return nil
}

View File

@@ -1,6 +1,7 @@
package wv2runtime
import (
"github.com/jchv/go-webview2/webviewloader"
"github.com/leaanthony/webview2runtime"
)
@@ -19,11 +20,11 @@ func Process() (*webview2runtime.Info, error) {
installedVersion := webview2runtime.GetInstalledVersion()
if installedVersion != nil {
installStatus = installed
updateRequired, err := installedVersion.IsOlderThan(MinimumRuntimeVersion)
compareResult, err := webviewloader.CompareBrowserVersions(installedVersion.Version, MinimumRuntimeVersion)
if err != nil {
_ = webview2runtime.Error(err.Error(), "Error")
return installedVersion, err
return nil, err
}
updateRequired := compareResult == -1
// Installed and does not require updating
if !updateRequired {
return installedVersion, nil