fgv2.0 平台 electron 打包桌面应用
c677a993d86c70de9c093209f1d0a0cd9bdea67d..c3f4ce9d1789c62fead2f4ea1383829574d809f5
2026-03-19 whychw
UA 脚本优化
c3f4ce 对比 | 目录
2026-03-19 whychw
UA 脚本调整
28a82d 对比 | 目录
1 文件已重命名
4个文件已修改
3个文件已添加
121 ■■■■ 已修改文件
build/icons/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
dependent_linux/fgv2.service 补丁 | 查看 | 原始文档 | blame | 历史
dependent_linux/install.sh 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dependent_linux/setup_service.sh 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
dependent_linux/update.sh 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
setup_service.sh 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
build/icons/icon.png
dependent_linux/fgv2.service
dependent_linux/install.sh
New file
@@ -0,0 +1,62 @@
#!/bin/bash
# 定义函数 获取用户家目录 支持sudo 执行
get_home_dir() {
    if [ -n "$SUDO_USER" ]; then
        #  echo "$(eval echo ~"$SUDO_USER")"
        USER_HOME=$(getent passwd "$SUDO_USER" | cut -d: -f6)
    else
        # echo "$(eval echo ~"$USER")"
        USER_HOME="$HOME"
    fi
    echo "$USER_HOME"
}
USER_HOME=$(get_home_dir)
SH_DIR=$(cd "$(dirname "$0")" && pwd)
chown root:root $SH_DIR/chrome-sandbox
chmod 4755 $SH_DIR/chrome-sandbox
# 安装jdk
mkdir -p $USER_HOME/jdk8/ && cp $SH_DIR/jdk-8u271-linux-x64.tar.gz $USER_HOME/jdk8/
tar -zxvf $USER_HOME/jdk8/jdk-8u271-linux-x64.tar.gz -C $USER_HOME/jdk8/
mkdir -p $USER_HOME/.config/electron-fg/ && cp $SH_DIR/fg_v2.0-1.0.jar $USER_HOME/.config/electron-fg/fgv2.jar
mkdir -p $USER_HOME/.config/systemd/user/ && cp $SH_DIR/fgv2.service $USER_HOME/.config/systemd/user/fgv2.service
systemctl --user daemon-reload
systemctl --user enable fgv2.service
systemctl --user start fgv2.service
# 配置参数(用户可根据需要修改)
APP_NAME="electron-fg"
EXEC_PATH="$SH_DIR/$APP_NAME"      # 可执行程序路径
ICON_PATH="$SH_DIR/resources/build/icons/icon.png"   # 图标路径
# DESKTOP_FILE="$USER_HOME/.local/share/applications/$APP_NAME.desktop"
DESKTOP_FILE="$USER_HOME/Desktop/$APP_NAME.desktop"
# 生成 .desktop 文件
cat << EOF > "$DESKTOP_FILE"
[Desktop Entry]
Version=1.0
Type=Application
Name=$APP_NAME
Comment=Launch $APP_NAME
Exec=$EXEC_PATH
Icon=$ICON_PATH
Terminal=false
Categories=Application;Utility;
Encoding=UTF-8
EOF
# 添加可执行权限
chmod +x "$DESKTOP_FILE"
echo "✅ 桌面快捷方式已生成: $DESKTOP_FILE"
echo "请右键点击图标,选择 '允许启动' 或 'Trust and Launch'"
dependent_linux/setup_service.sh
@@ -4,7 +4,7 @@
mkdir -p ~/jdk8/ && cp ./jdk-8u271-linux-x64.tar.gz ~/jdk8/
tar -zxvf ~/jdk8/jdk-8u271-linux-x64.tar.gz -C ~/jdk8/
mkdir -p ~/.config/electron-fg/ && cp ./dependent/fg_v2.0-1.0.jar ~/.config/electron-fg/fgv2.jar
mkdir -p ~/.config/electron-fg/ && cp ./fg_v2.0-1.0.jar ~/.config/electron-fg/fgv2.jar
mkdir -p ~/.config/systemd/user/ && cp ./fgv2.service ~/.config/systemd/user/fgv2.service
dependent_linux/update.sh
New file
@@ -0,0 +1,6 @@
#!/bin/bash
systemctl --user stop fgv2.service
cp ./fg_v2.0-1.0.jar ~/.config/electron-fg/fgv2.jar
systemctl --user start fgv2.service
main.js
@@ -155,7 +155,10 @@
// 终止java进程 并重启服务 linux平台
function stopForLinux() {
  let dir = path.join(__dirname, './stop.sh');
  // 获取应用的真实根目录(ASAR 包外的路径)
  const appPath = app.getAppPath();
  log.info(`appPath: ====${appPath}====`);
  let dir = path.join(appPath, '../../stop.sh');
  let stop = child_process.spawn('bash', [dir]);
  // 监听脚本执行
@@ -178,7 +181,7 @@
      log.info(stde);
      if (err) {
        log.error('重启服务失败:' + err);
        let dir = path.join(__dirname, './setup_service.sh');
        let dir = path.join(appPath, '../../setup_service.sh');
        child_process.exec(`bash "${dir}"`, (error, stdout, stderr) => {
          if (error) {
            log.error('执行失败:' + error);
@@ -192,9 +195,9 @@
      }
      if (stde) {
        log.error(`重启服务错误: ${stde}`);
        let dir = path.join(__dirname, './setup_service.sh');
        let dir = path.join(appPath, '../../setup_service.sh');
        child_process.exec(`bash "${dir}"`, (error, stdout, stderr) => {
          log.info('0000000');
          // log.info('0000000');
          if (error) {
            log.error('执行失败:' + error);
          }
package.json
@@ -17,6 +17,7 @@
    "asar": true,
    "files": [
      "!dependent/**",
      "!dependent_linux/**",
      "getConfig.js",
      "config.json",
      "main.js",
@@ -40,11 +41,9 @@
      "shortcutName": "electronFg"
    },
    "linux": {
      "icon": "build/icons/512x512.png",
      "icon": "./build/icons",
      "artifactName": "${productName}-${version}-linux.${ext}",
      "target": {
        "target": "dir"
      }
      "target": ["dir", "tar.gz"]
    },
    "extraResources": [
      {
@@ -52,8 +51,8 @@
        "to": "../"
      },
      {
        "from": "./dependent/elevate.exe",
        "to": "../resources/elevate.exe"
        "from": "./build/",
        "to": "build"
      }
    ]
  },
setup_service.sh
@@ -1,13 +1,30 @@
#!/bin/bash
#mkdir -p /opt/electron-fg/ && cp ./dependent/fg_v2.0-1.0.jar /opt/electron-ft/fgv2.jar
mkdir -p ~/jdk8/ && cp ./jdk-8u271-linux-x64.tar.gz ~/jdk8/
tar -zxvf ~/jdk8/jdk-8u271-linux-x64.tar.gz -C ~/jdk8/
# 定义函数 获取用户家目录 支持sudo 执行
get_home_dir() {
    if [ -n "$SUDO_USER" ]; then
        #  echo "$(eval echo ~"$SUDO_USER")"
        USER_HOME=$(getent passwd "$SUDO_USER" | cut -d: -f6)
    else
        # echo "$(eval echo ~"$USER")"
        USER_HOME="$HOME"
    fi
    echo "$USER_HOME"
}
mkdir -p ~/.config/electron-fg/ && cp ./dependent/fg_v2.0-1.0.jar ~/.config/electron-fg/fgv2.jar
USER_HOME=$(get_home_dir)
mkdir -p ~/.config/systemd/user/ && cp ./fgv2.service ~/.config/systemd/user/fgv2.service
SH_DIR=$(cd "$(dirname "$0")" && pwd)
# 安装jdk
mkdir -p $USER_HOME/jdk8/ && cp $SH_DIR/jdk-8u271-linux-x64.tar.gz $USER_HOME/jdk8/
tar -zxvf $USER_HOME/jdk8/jdk-8u271-linux-x64.tar.gz -C $USER_HOME/jdk8/
mkdir -p $USER_HOME/.config/electron-fg/ && cp $SH_DIR/fg_v2.0-1.0.jar $USER_HOME/.config/electron-fg/fgv2.jar
mkdir -p $USER_HOME/.config/systemd/user/ && cp $SH_DIR/fgv2.service $USER_HOME/.config/systemd/user/fgv2.service
systemctl --user daemon-reload
systemctl --user enable fgv2.service
systemctl --user start fgv2.service
systemctl --user start fgv2.service