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.

83 lines
2.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package main
import (
"fmt"
"os"
"os/exec"
"strings"
"github.com/towgo/towgo/lib/system"
g "tgk-touch/internal/global"
)
func isFirefoxUsable() bool {
cmd := exec.Command("firefox", "--version")
out, err := cmd.CombinedOutput()
ok := err == nil
kioskInfof("firefox usability check ok=%v output=%q err=%v", ok, strings.TrimSpace(string(out)), err)
return ok
}
func isFirefoxInstalled() bool {
cmd := exec.Command("which", "firefox")
out, err := cmd.CombinedOutput()
ok := err == nil
kioskDebugf("firefox install path check ok=%v output=%q err=%v", ok, strings.TrimSpace(string(out)), err)
return ok
}
func installFirefox() error {
var p struct {
DebPkgPath string `json:"DebPkgPath"`
DebPkgName string `json:"DebPkgName"`
InstallShellPath string `json:"InstallShellPath"`
}
p.DebPkgPath = g.Config().Firefox.DebPkgPath
p.DebPkgName = g.Config().Firefox.DebPkgName
p.InstallShellPath = g.Config().Firefox.InstallShellPath
kioskInfof("firefox install begin programPath=%s debPath=%s debName=%s installShell=%s", system.GetPathOfProgram(), p.DebPkgPath, p.DebPkgName, p.InstallShellPath)
command := exec.Command("sudo", "sh", "-c", fmt.Sprintf(`
echo "=== 当前工作目录 ==="
pwd
echo ""
echo "=== 卸载旧版 Firefox ==="
dpkg -P firefox || echo "警告:卸载旧版 Firefox 失败(可能未安装)"
echo ""
echo "=== 清理残留文件 ==="
rm -rf /opt/firefox* 2>/dev/null
echo ""
echo "=== 开始安装 Firefox ==="
echo "1. 复制安装包到 /opt 目录..."
cp -v %s%s/%s /opt/firefox-deb.tar.gz || { echo "错误:复制安装包失败"; exit 1; }
echo ""
echo "2. 解压安装包..."
cd /opt && tar -xzvf firefox-deb.tar.gz || { echo "错误:解压失败"; exit 1; }
echo ""
echo "3. 安装依赖和主程序..."
cd /opt/firefox-deb && sudo dpkg -i *.deb || { echo "错误:安装 deb 包失败"; exit 1; }
echo ""
echo "4. 验证安装..."
firefox --version || { echo "错误Firefox 未正确安装"; exit 1; }
echo ""
echo "=== Firefox 安装完成 ==="
`, system.GetPathOfProgram(), p.DebPkgPath, p.DebPkgName))
command.Stdout = os.Stdout
command.Stderr = os.Stderr
err := command.Run()
if err != nil {
kioskErrorf("firefox install command failed err=%v", err)
return err
}
kioskInfof("firefox install command finished successfully")
return nil
}