Switch remote deploy to vendored source builds

Move remote deployment to a vendored source bundle built on the target host via Docker so redeploys no longer require local cross-compilation or host Go installation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
GitHub Actions
2026-05-08 12:19:18 +08:00
parent bb27566e38
commit c1a0fe2949
1320 changed files with 497125 additions and 11 deletions

View File

@@ -0,0 +1,25 @@
//go:build windows && wv2runtime.browser
// +build windows,wv2runtime.browser
package wv2installer
import (
"fmt"
"github.com/wailsapp/wails/v2/internal/webview2runtime"
"github.com/wailsapp/wails/v2/pkg/options/windows"
)
func doInstallationStrategy(installStatus installationStatus, messages *windows.Messages) error {
confirmed, err := webview2runtime.Confirm(messages.DownloadPage+MinimumRuntimeVersion, messages.MissingRequirements)
if err != nil {
return err
}
if confirmed {
err = webview2runtime.OpenInstallerDownloadWebpage()
if err != nil {
return err
}
}
return fmt.Errorf(messages.FailedToInstall)
}

View File

@@ -0,0 +1,35 @@
//go:build windows && !wv2runtime.error && !wv2runtime.browser && !wv2runtime.embed
// +build windows,!wv2runtime.error,!wv2runtime.browser,!wv2runtime.embed
package wv2installer
import (
"fmt"
"github.com/wailsapp/wails/v2/internal/webview2runtime"
"github.com/wailsapp/wails/v2/pkg/options/windows"
)
func doInstallationStrategy(installStatus installationStatus, messages *windows.Messages) error {
message := messages.InstallationRequired
if installStatus == needsUpdating {
message = messages.UpdateRequired
}
confirmed, err := webview2runtime.Confirm(message, messages.MissingRequirements)
if err != nil {
return err
}
if !confirmed {
return fmt.Errorf(messages.Webview2NotInstalled)
}
installedCorrectly, err := webview2runtime.InstallUsingBootstrapper()
if err != nil {
_ = webview2runtime.Error(err.Error(), messages.Error)
return err
}
if !installedCorrectly {
err = webview2runtime.Error(messages.FailedToInstall, messages.Error)
return err
}
return nil
}

View File

@@ -0,0 +1,35 @@
//go:build windows && wv2runtime.embed
// +build windows,wv2runtime.embed
package wv2installer
import (
"fmt"
"github.com/wailsapp/wails/v2/internal/webview2runtime"
"github.com/wailsapp/wails/v2/pkg/options/windows"
)
func doInstallationStrategy(installStatus installationStatus, messages *windows.Messages) error {
message := messages.InstallationRequired
if installStatus == needsUpdating {
message = messages.UpdateRequired
}
message += messages.PressOKToInstall
confirmed, err := webview2runtime.Confirm(message, messages.MissingRequirements)
if err != nil {
return err
}
if !confirmed {
return fmt.Errorf(messages.Webview2NotInstalled)
}
installedCorrectly, err := webview2runtime.InstallUsingEmbeddedBootstrapper()
if err != nil {
_ = webview2runtime.Error(err.Error(), messages.Error)
return err
}
if !installedCorrectly {
err = webview2runtime.Error(messages.FailedToInstall, messages.Error)
return err
}
return nil
}

View File

@@ -0,0 +1,15 @@
//go:build windows && wv2runtime.error
// +build windows,wv2runtime.error
package wv2installer
import (
"fmt"
"github.com/wailsapp/wails/v2/internal/webview2runtime"
"github.com/wailsapp/wails/v2/pkg/options/windows"
)
func doInstallationStrategy(installStatus installationStatus, messages *windows.Messages) error {
_ = webview2runtime.Error(messages.ContactAdmin, messages.Error)
return fmt.Errorf(messages.Webview2NotInstalled)
}

View File

@@ -0,0 +1,60 @@
//go:build windows
package wv2installer
import (
"fmt"
"github.com/wailsapp/go-webview2/webviewloader"
"github.com/wailsapp/wails/v2/pkg/options"
"github.com/wailsapp/wails/v2/pkg/options/windows"
)
const MinimumRuntimeVersion string = "94.0.992.31" // WebView2 SDK 1.0.992.28
type installationStatus int
const (
needsInstalling installationStatus = iota
needsUpdating
)
func Process(appoptions *options.App) (string, error) {
messages := windows.DefaultMessages()
if appoptions.Windows != nil && appoptions.Windows.Messages != nil {
messages = appoptions.Windows.Messages
}
installStatus := needsInstalling
// Override version check for manually specified webview path if present
var webviewPath = ""
if opts := appoptions.Windows; opts != nil && opts.WebviewBrowserPath != "" {
webviewPath = opts.WebviewBrowserPath
}
installedVersion, err := webviewloader.GetAvailableCoreWebView2BrowserVersionString(webviewPath)
if err != nil {
return "", err
}
if installedVersion != "" {
installStatus = needsUpdating
compareResult, err := webviewloader.CompareBrowserVersions(installedVersion, MinimumRuntimeVersion)
if err != nil {
return "", err
}
updateRequired := compareResult < 0
// Installed and does not require updating
if !updateRequired {
return installedVersion, nil
}
}
// Force error strategy if webview is manually specified
if webviewPath != "" {
return installedVersion, fmt.Errorf(messages.InvalidFixedWebview2)
}
return installedVersion, doInstallationStrategy(installStatus, messages)
}