fix: rebuild MES as compilable go-zero+ent backend (renamed bj_power_mes), restore 3 workstation projects from pristine original, align naming; all Go projects go build clean

This commit is contained in:
SunYF
2026-08-27 10:56:41 +08:00
parent 380715f8a9
commit 371b494c54
523 changed files with 67923 additions and 24758 deletions
+50 -10
View File
@@ -1,5 +1,3 @@
//go:build windows
package main
import (
@@ -15,9 +13,24 @@ import (
var keyPath = `Software\Microsoft\Windows\CurrentVersion\Run`
// resolveExePath 优先用 os.Executable(),回退到 os.Args[0]
// 这能正确处理通过快捷方式 / PATH 启动时 os.Args[0] 不是绝对路径的情况
func resolveExePath() string {
if exe, err := os.Executable(); err == nil {
if abs, err := filepath.Abs(exe); err == nil {
return abs
}
return exe
}
abs, _ := filepath.Abs(os.Args[0])
return abs
}
// 设置开机自启动
// exePath 传入会被忽略,内部一律以 os.Executable() 为准
func setAutoStart(appName string, exePath string) error {
// 当前用户注册表 CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
key, _, err := registry.CreateKey(registry.CURRENT_USER, keyPath, registry.ALL_ACCESS)
key, _, err := registry.CreateKey(registry.CURRENT_USER, keyPath, registry.ALL_ACCESS) // 当前用户登录后启动
//key, _, err := registry.CreateKey(registry.LOCAL_MACHINE, keyPath, registry.ALL_ACCESS) // 登录前启动(需要管理员权限)
if err != nil {
if errors.Is(err, windows.ERROR_ACCESS_DENIED) {
return err
@@ -26,14 +39,21 @@ func setAutoStart(appName string, exePath string) error {
}
defer key.Close()
absPath, err := filepath.Abs(exePath)
if err != nil {
return fmt.Errorf("获取绝对路径失败: %v", err)
// 使用真实的 exe 路径而不是 os.Args[0],避免相对路径
absPath := resolveExePath()
if absPath == "" {
return fmt.Errorf("无法确定可执行文件路径")
}
args := getArgs()
err = key.SetStringValue(appName, fmt.Sprintf(`"%s" %s`, absPath, args))
// 路径包含空格时需要加引号
value := fmt.Sprintf(`"%s"`, absPath)
if args != "" {
value = value + " " + args
}
err = key.SetStringValue(appName, value)
if err != nil {
return fmt.Errorf("写入注册表失败: %v", err)
}
@@ -41,8 +61,10 @@ func setAutoStart(appName string, exePath string) error {
return nil
}
// 移除开机自启动
func removeAutoStart(appName string) error {
key, err := registry.OpenKey(registry.CURRENT_USER, keyPath, registry.ALL_ACCESS)
//key, err := registry.OpenKey(registry.LOCAL_MACHINE, keyPath, registry.ALL_ACCESS)
if err != nil {
if errors.Is(err, windows.ERROR_ACCESS_DENIED) {
return err
@@ -59,7 +81,9 @@ func removeAutoStart(appName string) error {
return nil
}
// 检查注册表启动项
func isInRegistry(appName string) (bool, error) {
// 检查当前用户注册表
userKey, err := registry.OpenKey(registry.CURRENT_USER, keyPath, registry.QUERY_VALUE)
if err == nil {
defer userKey.Close()
@@ -69,15 +93,31 @@ func isInRegistry(appName string) (bool, error) {
}
}
// 检查本地机器注册表(需要管理员权限)
//systemKey, err := registry.OpenKey(registry.LOCAL_MACHINE, keyPath, registry.QUERY_VALUE)
//if err == nil {
// defer systemKey.Close()
// _, _, err := systemKey.GetStringValue(appName)
// if err == nil {
// return true, nil
// }
//}
return false, nil
}
// 综合检查开机启动状态
func isAutoStartEnabled(appName string) bool {
reg, _ := isInRegistry(appName)
return reg
// 检查注册表
if reg, _ := isInRegistry(appName); reg {
return true
}
return false
}
func getArgs() string {
// 构建参数字符串(兼容含空格的参数)
var argsBuilder strings.Builder
for _, arg := range os.Args[1:] {
if strings.ContainsAny(arg, " \t") {