package main import ( "embed" "fmt" "io" "log" "net/http" "os" "strings" "github.com/wailsapp/wails/v2" "github.com/wailsapp/wails/v2/pkg/options" "github.com/wailsapp/wails/v2/pkg/options/assetserver" ) //go:embed all:frontend/dist var assets embed.FS type FileLoader struct { http.Handler } func NewFileLoader() *FileLoader { return &FileLoader{} } func (h *FileLoader) ServeHTTP(res http.ResponseWriter, req *http.Request) { var err error requestedFilename := strings.TrimPrefix(req.URL.Path, "/") // println("Requesting file:", requestedFilename) fileData, err := os.ReadFile(requestedFilename) if err != nil { res.WriteHeader(http.StatusBadRequest) res.Write([]byte(fmt.Sprintf("Could not load file %s", requestedFilename))) } res.Write(fileData) } func init() { log.SetFlags(log.Ldate | log.Lmicroseconds | log.Lshortfile) } func main() { file, _ := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) defer file.Close() multiWriter := io.MultiWriter(file, os.Stdout) // 设置日志输出目标为文件 log.SetOutput(multiWriter) log.Println("====================== wechatDataBackup ======================") // Create an instance of the app structure app := NewApp() // Create application with options err := wails.Run(&options.App{ Title: "wechatDataBackup", MinWidth: 800, MinHeight: 600, Width: 1024, Height: 768, AssetServer: &assetserver.Options{ Assets: assets, Handler: NewFileLoader(), }, BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, OnStartup: app.startup, OnBeforeClose: app.beforeClose, Bind: []interface{}{ app, }, Frameless: true, }) if err != nil { println("Error:", err.Error()) } }