Ver código fonte

开机自启脚本

dukuisong 2 semanas atrás
pai
commit
9ac354d990

+ 0 - 8
script/install.bat

@@ -1,8 +0,0 @@
-@echo off
-set "APP_NAME=OfficeHelper"
-set "APP_EXE=office_helper.exe"
-set "SCRIPT_DIR=%~dp0"
-set "FULL_PATH=%SCRIPT_DIR%%APP_EXE%"
-
-rem 添加开机启动项到当前用户(免管理员)
-reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "%APP_NAME%" /d "\"%FULL_PATH%\"" /f >nul 2>&1

+ 87 - 0
script/install_autostart.sh

@@ -0,0 +1,87 @@
+#!/bin/bash
+
+# 显示帮助信息
+show_help() {
+    echo "用法: sudo ./install_autostart.sh [可执行文件绝对路径] [可选:服务名称]"
+    echo "示例: sudo ./install_autostart.sh /home/user/apps/myapp myapp_service"
+    echo "说明:"
+    echo "  第一个参数: 必须是可执行文件的绝对路径(如 /opt/myprogram)"
+    echo "  第二个参数: 可选,自定义服务名称(默认使用文件名)"
+}
+
+# 检查参数是否正确
+if [ $# -lt 1 ]; then
+    echo "错误:请提供可执行文件的绝对路径!"
+    show_help
+    exit 1
+fi
+
+# 解析参数
+EXECUTABLE_PATH="$1"
+APP_NAME="${2:-$(basename "$EXECUTABLE_PATH")}"  # 服务名默认使用文件名
+
+# 检查可执行文件是否存在且可执行
+if [ ! -f "$EXECUTABLE_PATH" ]; then
+    echo "错误:文件 $EXECUTABLE_PATH 不存在!"
+    exit 1
+fi
+
+if [ ! -x "$EXECUTABLE_PATH" ]; then
+    echo "警告:文件 $EXECUTABLE_PATH 没有执行权限,正在添加..."
+    chmod +x "$EXECUTABLE_PATH" || {
+        echo "错误:无法为 $EXECUTABLE_PATH 添加执行权限!"
+        exit 1
+    }
+fi
+
+# 配置服务参数
+APP_DESCRIPTION="Auto-start service for $APP_NAME"
+RUN_USER=$(whoami)
+WORKING_DIR=$(dirname "$EXECUTABLE_PATH")  # 工作目录为可执行文件所在目录
+SERVICE_FILE="/etc/systemd/system/$APP_NAME.service"
+
+# 创建 systemd 服务文件
+echo "正在创建服务文件: $SERVICE_FILE"
+sudo tee "$SERVICE_FILE" > /dev/null << EOF
+[Unit]
+Description=$APP_DESCRIPTION
+After=network.target
+
+[Service]
+User=$RUN_USER
+WorkingDirectory=$WORKING_DIR
+ExecStart=$EXECUTABLE_PATH  # 直接运行可执行文件(无需Python)
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target
+EOF
+
+# 设置服务文件权限
+sudo chmod 644 "$SERVICE_FILE"
+
+# 启用并启动服务
+echo "重新加载系统服务配置..."
+sudo systemctl daemon-reload
+
+echo "启用开机自启..."
+sudo systemctl enable "$APP_NAME.service"
+
+echo "启动服务..."
+sudo systemctl start "$APP_NAME.service"
+
+# 验证服务状态
+echo -e "\n服务状态验证:"
+sudo systemctl status "$APP_NAME.service" --no-pager
+
+echo -e "\n----------------------------------------"
+echo "操作完成!程序已配置为开机自启。"
+echo "服务名称: $APP_NAME"
+echo "可执行文件路径: $EXECUTABLE_PATH"
+echo "管理命令:"
+echo "  启动: sudo systemctl start $APP_NAME.service"
+echo "  停止: sudo systemctl stop $APP_NAME.service"
+echo "  重启: sudo systemctl restart $APP_NAME.service"
+echo "  查看日志: sudo journalctl -u $APP_NAME.service -f"
+echo "  移除自启: sudo systemctl disable $APP_NAME.service"

+ 0 - 2
script/install_silent.vbs

@@ -1,2 +0,0 @@
-Set WshShell = CreateObject("WScript.Shell")
-WshShell.Run """" & "install.bat" & """", 0, False

+ 0 - 8
script/uninstall.bat

@@ -1,8 +0,0 @@
-@echo off
-set "APP_NAME=OfficeHelper"
-
-rem 删除注册表中的开机启动项(当前用户)
-reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "%APP_NAME%" /f >nul 2>&1
-
-echo 开机启动项已删除。
-pause

+ 0 - 2
script/uninstall_silent.vbs

@@ -1,2 +0,0 @@
-Set WshShell = CreateObject("WScript.Shell")
-WshShell.Run """" & "uninstall.bat" & """", 0, False