Make launcher a Windows GUI app
This commit is contained in:
56
cmd/vrc_osc_launcher/main.go
Normal file
56
cmd/vrc_osc_launcher/main.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"syscall"
|
||||
|
||||
"vrc_osc_go/internal/buildinfo"
|
||||
"vrc_osc_go/internal/common"
|
||||
"vrc_osc_go/internal/update"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var baseURL string
|
||||
var ownerRepo string
|
||||
var assetName string
|
||||
flag.StringVar(&baseURL, "base-url", "https://git.vrcworldtour.com", "Gitea base URL")
|
||||
flag.StringVar(&ownerRepo, "repo", "every_holiday/VRCWT-OSC", "owner/repo")
|
||||
flag.StringVar(&assetName, "asset", "vrc_osc-windows.zip", "release asset name")
|
||||
flag.Parse()
|
||||
|
||||
client := &update.Client{BaseURL: baseURL}
|
||||
mgr := &update.Manager{
|
||||
Client: client,
|
||||
OwnerRepo: ownerRepo,
|
||||
AssetName: assetName,
|
||||
CurrentLabel: buildinfo.Version,
|
||||
}
|
||||
if _, err := mgr.CheckAndUpdate(); err != nil {
|
||||
log.Printf("auto update skipped: %v", err)
|
||||
}
|
||||
exe := filepath.Join(common.RootDir(), "vrc_osc.exe")
|
||||
if _, err := os.Stat(exe); err != nil {
|
||||
showError("vrc_osc_launcher", "missing exe: "+err.Error())
|
||||
log.Fatalf("missing exe: %v", err)
|
||||
}
|
||||
if err := update.Launch(exe, os.Args[1:]); err != nil {
|
||||
showError("vrc_osc_launcher", "launch failed: "+err.Error())
|
||||
log.Fatalf("launch failed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func showError(title, message string) {
|
||||
user32 := syscall.NewLazyDLL("user32.dll")
|
||||
msgBox := user32.NewProc("MessageBoxW")
|
||||
const mbOK = 0x00000000
|
||||
const mbIconError = 0x00000010
|
||||
_, _, _ = msgBox.Call(
|
||||
0,
|
||||
uintptr(syscall.StringToUTF16Ptr(message)),
|
||||
uintptr(syscall.StringToUTF16Ptr(title)),
|
||||
uintptr(mbOK|mbIconError),
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user