一键打包生成oem项目exe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

147 lines
3.5 KiB

package main
import (
"changeme/initFunc"
"context"
"embed"
"strings"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"github.com/wailsapp/wails/v2"
"github.com/wailsapp/wails/v2/pkg/menu"
"github.com/wailsapp/wails/v2/pkg/menu/keys"
"github.com/wailsapp/wails/v2/pkg/options"
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
"github.com/wailsapp/wails/v2/pkg/runtime"
)
//go:embed all:frontend/dist
var assets embed.FS
//go:embed wails.json
var wailsjson embed.FS
var wailsConfig map[string]interface{}
func init() {
wailsConfig = make(map[string]interface{})
}
type App struct {
ctx context.Context
}
func main() {
// Create an instance of the app structure
app := NewApp()
//开启视频监控的exe
go initFunc.RunPiServerExe()
go initFunc.SetupCert()
wilsJon, _ := wailsjson.ReadFile("wails.json")
wailsConfig = gconv.Map(wilsJon)
//读取wails.json配置文件
wailsConfigOem := initFunc.RequestOemSettingInfo(gconv.Map(wilsJon))
//将 wailsConfig 保存起来
if wailsConfigOem == nil {
wailsConfigOem = g.Map{
"brand_name": "Error-config",
"website_url": "https://www.baidu.com",
}
}
//增加菜单
AppMenu := menu.NewMenu()
SubMenu := AppMenu.AddSubmenu("工具")
SubMenu.AddText("刷新", keys.CmdOrCtrl("F5"), func(_ *menu.CallbackData) {
runtime.WindowReloadApp(app.ctx)
})
SubMenu.AddText("检查", keys.CmdOrCtrl("F12"), func(_ *menu.CallbackData) {
runtime.WindowExecJS(app.ctx, `
(function(){
// 检查 vConsole 是否已经初始化
function isVConsoleInitialized() {
return typeof window.VConsole !== 'undefined';
}
window.vConsole = null;
function loadVConsole() {
console.log('loadVConsole');
// 创建一个新的 script 元素
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://3dview.suwa3d.com/libs/vConsole/3.15.1/vconsole.min.js'; // 请替换为 vConsole 的实际路径
// 将 script 元素添加到文档头部
document.head.appendChild(script);
script.onload = function() {
window.vConsole = new VConsole();
}
}
// 初始化 vConsole
function initVConsole() {
console.log('isVConsoleInitialized()', isVConsoleInitialized());
if (!isVConsoleInitialized()) {
// 如果 vConsole 未初始化,加载 vConsole
loadVConsole();
} else {
// 如果 vConsole 已经初始化,直接打开
window.vConsole.show();
}
}
try {
initVConsole();
} catch(e) {
console.log('e', e);
}
})()
`)
})
// Create application with options
err := wails.Run(&options.App{
Title: wailsConfigOem["brand_name"].(string),
Width: 1024,
Height: 768,
AssetServer: &assetserver.Options{
Assets: assets,
},
BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1},
OnStartup: app.startup,
Menu: AppMenu,
Bind: []interface{}{
app,
},
})
if err != nil {
println("Error:", err.Error())
}
}
// NewApp creates a new App application struct
func NewApp() *App {
return &App{}
}
// startup is called when the app starts. The context is saved
// so we can call the runtime methods
func (a *App) startup(ctx context.Context) {
a.ctx = ctx
}
// oem的门店管理地址
func (a *App) ShopUrl() string {
wailsConfigOem := initFunc.RequestOemSettingInfo(wailsConfig)
if wailsConfigOem == nil {
return "https://www.baidu.com"
}
domain := wailsConfigOem["domain"].(string)
if !strings.Contains(domain, "http") {
domain = "https://" + domain
}
return domain + "?oem_id=" + gconv.String(wailsConfigOem["id"])
}