mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-19 18:39:30 +08:00
export config from app
This commit is contained in:
parent
60c1a866f3
commit
10ae1f6029
@ -345,6 +345,10 @@ type App struct {
|
|||||||
singleInstanceManager *singleInstanceManager
|
singleInstanceManager *singleInstanceManager
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *App) Config() Options {
|
||||||
|
return a.options
|
||||||
|
}
|
||||||
|
|
||||||
func (a *App) handleWarning(msg string) {
|
func (a *App) handleWarning(msg string) {
|
||||||
if a.options.WarningHandler != nil {
|
if a.options.WarningHandler != nil {
|
||||||
a.options.WarningHandler(msg)
|
a.options.WarningHandler(msg)
|
||||||
|
@ -13,6 +13,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"git.sr.ht/~jackmordaunt/go-toast/v2"
|
"git.sr.ht/~jackmordaunt/go-toast/v2"
|
||||||
|
"github.com/google/uuid"
|
||||||
"github.com/wailsapp/wails/v3/pkg/application"
|
"github.com/wailsapp/wails/v3/pkg/application"
|
||||||
"golang.org/x/sys/windows/registry"
|
"golang.org/x/sys/windows/registry"
|
||||||
)
|
)
|
||||||
@ -37,13 +38,20 @@ func New() *Service {
|
|||||||
// ServiceStartup is called when the service is loaded
|
// ServiceStartup is called when the service is loaded
|
||||||
// Sets an activation callback to emit an event when notifications are interacted with.
|
// Sets an activation callback to emit an event when notifications are interacted with.
|
||||||
func (ns *Service) ServiceStartup(ctx context.Context, options application.ServiceOptions) error {
|
func (ns *Service) ServiceStartup(ctx context.Context, options application.ServiceOptions) error {
|
||||||
// Need to get App Name and generate a UUID on first launch
|
appName := application.Get().Config().Name
|
||||||
// How do we grab the app icon properly?
|
icon := application.Get().Config().Icon
|
||||||
|
|
||||||
|
println(icon)
|
||||||
|
|
||||||
|
guid, err := getGUID(appName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
toast.SetAppData(toast.AppData{
|
toast.SetAppData(toast.AppData{
|
||||||
AppID: "Notifications",
|
AppID: appName,
|
||||||
GUID: "{8F2E1A3D-C497-42B6-9E5D-72F8A169B051}",
|
GUID: guid,
|
||||||
IconPath: "C:\\Users\\Zach\\Development\\notifications_demo\\build\\appicon.ico",
|
IconPath: "C:\\Users\\Zach\\Development\\notifications_demo\\build\\appicon.ico",
|
||||||
ActivationExe: "C:\\Users\\Zach\\Development\\notifications_demo\\bin\\Notifications.exe",
|
|
||||||
})
|
})
|
||||||
|
|
||||||
toast.SetActivationCallback(func(args string, data []toast.UserData) {
|
toast.SetActivationCallback(func(args string, data []toast.UserData) {
|
||||||
@ -348,3 +356,35 @@ func getUserText(data []toast.UserData) (string, bool) {
|
|||||||
}
|
}
|
||||||
return "", false
|
return "", false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getGUID(name string) (string, error) {
|
||||||
|
keyPath := `Software\Classes\AppUserModelId\` + name
|
||||||
|
|
||||||
|
k, err := registry.OpenKey(registry.CURRENT_USER, keyPath, registry.QUERY_VALUE)
|
||||||
|
if err == nil {
|
||||||
|
guid, _, err := k.GetStringValue("CustomActivator")
|
||||||
|
k.Close()
|
||||||
|
if err == nil && guid != "" {
|
||||||
|
return guid, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
guid := generateGUID()
|
||||||
|
|
||||||
|
k, _, err = registry.CreateKey(registry.CURRENT_USER, keyPath, registry.WRITE)
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("failed to create registry key: %w", err)
|
||||||
|
}
|
||||||
|
defer k.Close()
|
||||||
|
|
||||||
|
if err := k.SetStringValue("CustomActivator", guid); err != nil {
|
||||||
|
return "", fmt.Errorf("failed to write GUID to registry: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return guid, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateGUID() string {
|
||||||
|
guid := uuid.New()
|
||||||
|
return fmt.Sprintf("{%s}", guid.String())
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user