Files
wails_tools/examples/wails3_init_updater/main.go
2026-03-12 22:16:34 +01:00

79 lines
1.7 KiB
Go

package main
import (
"embed"
_ "embed"
"log"
updatesbootstrap "github.com/Eriyc/rules_wails/pkg/wails3kit/updates/bootstrap"
updateswails "github.com/Eriyc/rules_wails/pkg/wails3kit/updates/wails"
"github.com/wailsapp/wails/v3/pkg/application"
)
//go:embed all:frontend/dist
var assets embed.FS
func init() {
updateswails.RegisterEvents("updates:state")
}
func main() {
handled, err := updatesbootstrap.MaybeRun()
if err != nil {
log.Fatal(err)
}
if handled {
return
}
appDescriptor, err := currentAppDescriptor()
if err != nil {
log.Fatal(err)
}
controller, err := newController(appDescriptor)
if err != nil {
log.Fatal(err)
}
var app *application.App
updateService := NewUpdateService(updateswails.NewService(updateswails.Options{
Controller: controller,
EventName: "updates:state",
Emitter: func(name string, data any) {
if app != nil {
app.Event.Emit(name, data)
}
},
}))
app = application.New(application.Options{
Name: "updater-example",
Description: "A Wails 3 updater example backed by the local update library",
Services: []application.Service{
application.NewService(updateService),
},
Assets: application.AssetOptions{
Handler: application.AssetFileServerFS(assets),
},
Mac: application.MacOptions{
ApplicationShouldTerminateAfterLastWindowClosed: true,
},
})
app.Window.NewWithOptions(application.WebviewWindowOptions{
Title: "Updater Example",
Mac: application.MacWindow{
InvisibleTitleBarHeight: 50,
Backdrop: application.MacBackdropTranslucent,
TitleBar: application.MacTitleBarHiddenInset,
},
BackgroundColour: application.NewRGB(244, 239, 230),
URL: "/",
})
if err := app.Run(); err != nil {
log.Fatal(err)
}
}