Skip to content

shellsec/softgitup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SoftGitUp - 日常工具云升级同步系统

English | 中文

一个用于管理本地软件目录并自动同步更新的工具系统,支持GitHub和GitLab云存储,支持Git加速下载。

功能特性

🚀 核心功能

  • 本地软件管理: 扫描本地软件目录,生成文件索引和版本列表
  • 云端同步: 自动推送到GitHub或GitLab,支持Git加速下载
  • 多平台支持: 支持GitHub和GitLab,可灵活切换
  • 智能更新: 基于文件修改时间比较,只下载变更的文件
  • 自动进程管理: 更新前自动关闭相关进程,更新后自动启动指定程序
  • Windows服务支持: 自动识别并启动Windows服务(如NetTime服务)
  • 多程序启动: 支持同时启动多个程序(如主程序和服务程序)
  • 更新顺序控制: 按照配置文件顺序更新软件,确保依赖关系
  • 系统托盘: 后台运行,支持系统托盘图标和静默更新
  • 跨平台: 支持Windows、Linux、macOS
  • 工作流程: 提供便捷的工作流程工具,支持单个软件更新和同步
  • 开箱即用: 所见即所得注册破解版本,日常保持更新版本,已杀毒

📦 支持的软件

  • 文本编辑器: Notepad++、notepad-、SublimeText、EditPlus、EmEditor(大文件16T)、UltraEdit

  • 系统工具: CCleaner、Everything、WinMemoryCleaner、CrystalDiskInfo、NetTime

  • 压缩工具: WinRAR、7-Zip、非常好用看图工具XnViewMP

  • 启动管理: HiBit Startup Manager,查找重复文件 Duplicate Cleaner Pro

  • 系统优化: system_good目录包含多个系统工具

    • 驱动管理: 驱动人生海外版 (DriverTalent)
    • 系统优化: 开始菜单StartBackAIO支持全系win、关闭补丁更新、kms激活、关闭自带杀毒
    • 实用工具: Ditto剪贴板、DuplicateCleaner重复文件清理、Putty、SmartDefrag磁盘整理等
    • 文件服务器: copyparty - 本地自行建站同步、Web文件服务器、开源安全、多平台支持
    • DNS配置工具: 一键配置加密DNS (DoH)
      • Configure_AdGuard_DNS.bat - 配置 AdGuard DNS(免费,拦截广告、跟踪器、恶意网站)
      • Configure_18bit_DNS.bat - 配置 18bit 加密DNS(拦截广告、恶意网站)
      • Restore_Default_DNS.bat - 还原为默认DNS设置(自动获取)
  • 更多软件: 可轻松扩展支持,有其他需要可以发帖

🚀 快速一键同步,无需安装环境,win10-11测试通过,win服务版权限问题

  • **下载 config.json、一键快速同步.bat 或 quick_sync.bat

  • **修改下config.json的路径,启动 bat,即可使用,自动更新所有软件到最新版本

🚀 快速一键同步,安装python环境,win服务器版+win10-11测试通过

  • **下载 config.json、test_complete_sync.py 、 test_complete_sync.bat

  • **修改下config.json的路径,启动 test_complete_sync.bat,即可使用

项目结构

softgitup/
├── config.json              # 配置文件
├── soft_manager.py          # 本地管理工具
├── soft_sync.py            # 同步工具(GUI版本)
├── simple_sync.py          # 简单同步工具(命令行)
├── workflow.py             # 工作流程工具
├── build_exe.py            # 打包脚本
├── generate_and_push.bat   # 一键生成和推送批处理
├── software/               # 本地软件目录
│   ├── CCleaner/
│   ├── EditPlus/
│   ├── everything/
│   ├── notepad++/
│   ├── SublimeText/
│   └── ...
├── logs/                   # 日志目录
└── README.md              # 项目说明

快速开始

1. 环境要求

  • Python 3.7+
  • Git
  • 网络连接

2. 安装依赖

pip install requests PyQt5 gitpython

3. 配置设置

GitHub 配置(默认)

编辑 config.json 文件:

{
  "git_platform": "github",
  "github_repo": "https://github.com/shellsec/softgitup",
  "gitlab_repo": "https://gitlab.com/your-username/softgitup",
  "manager_base_path": "./software",
  "sync_base_path": "",
  "sync_time": "07:00",
  "auto_start": true,
  "auto_kill": true,
  "git_mirrors": [
    "https://gh-proxy.com/https://raw.githubusercontent.com/shellsec/softgitup"
  ],
  "process_map": {
    "notepad++": ["notepad++.exe"],
    "NetTime": ["NetTime.exe", "NetTimeService.exe"]
  },
  "start_map": {
    "notepad++": "notepad++.exe",
    "NetTime": ["NetTimeService.exe", "NetTime.exe"]
  },
  "service_map": {
    "NetTimeService.exe": "NetTimeSvc"
  },
  "start_after_update": [
    "NetTime",
    "everything",
    "WinMemoryCleaner"
  ]
}

GitLab 配置

切换到 GitLab 平台:

{
  "git_platform": "gitlab",
  "github_repo": "https://github.com/shellsec/softgitup",
  "gitlab_repo": "https://gitlab.com/your-username/softgitup",
  "manager_base_path": "./software",
  "sync_base_path": "",
  "sync_time": "07:00",
  "auto_start": true,
  "auto_kill": true,
  "git_mirrors": [
    "https://gitlab.com/your-username/softgitup/-/raw/master"
  ],
  "process_map": {
    "notepad++": ["notepad++.exe"],
    "NetTime": ["NetTime.exe", "NetTimeService.exe"]
  },
  "start_map": {
    "notepad++": "notepad++.exe",
    "NetTime": ["NetTimeService.exe", "NetTime.exe"]
  },
  "service_map": {
    "NetTimeService.exe": "NetTimeSvc"
  },
  "start_after_update": [
    "NetTime",
    "everything",
    "WinMemoryCleaner"
  ]
}

配置说明:

  • git_platform: 平台类型,可选 "github""gitlab",默认为 "github"
  • github_repo: GitHub 仓库地址(GitHub 平台使用)
  • gitlab_repo: GitLab 仓库地址(GitLab 平台使用)
  • git_mirrors: 镜像源列表,支持多个镜像源作为备用

4. 使用工作流程工具(推荐)

# 启动工作流程工具
python workflow.py

5. 使用管理工具

# 扫描本地软件并推送到GitHub
python soft_manager.py

# 或使用批处理一键操作
generate_and_push.bat

6. 使用同步工具

# 同步单个软件
python simple_sync.py everything

# 同步所有软件
python simple_sync.py

# 启动GUI同步工具(系统托盘)
python soft_sync.py

打包和编译

编译为可执行文件

使用 build_exe.py 脚本将Python程序打包成可执行文件:

python build_exe.py

打包脚本提供多种选项:

  1. 构建所有程序 (推荐) - 包含GUI和控制台版本
  2. 只构建控制台版本 - 无GUI依赖,避免PyQt5 DLL问题
  3. 只构建GUI版本 - 包含完整的GUI功能
  4. 清理构建文件 - 清理临时文件

解决PyQt5 DLL问题

如果遇到 ImportError: DLL load failed while importing QtWidgets 错误:

方案1: 使用控制台版本

# 选择选项2,构建控制台版本
python build_exe.py
# 使用生成的 SoftGitUp_Sync_Simple.exe

方案2: 使用Python脚本

# 直接运行Python脚本,避免打包问题
python simple_sync.py
python workflow.py

方案3: 安装Visual C++ Redistributable

  • 下载并安装Microsoft Visual C++ Redistributable
  • 重新编译GUI版本

生成的可执行文件

  • SoftGitUp_Workflow.exe - 工作流程工具(控制台)
  • SoftGitUp_Manager.exe - 管理工具(GUI)
  • SoftGitUp_Sync.exe - 同步工具(GUI,系统托盘)
  • SoftGitUp_Sync_Simple.exe - 简化同步工具(控制台)

工作流程

更新软件流程

  1. 更新软件文件: 将新版本的软件放入 software/ 目录
  2. 生成列表: 运行 python soft_manager.py 或使用批处理
  3. 推送到GitHub: 自动提交并推送更新
  4. 同步到其他设备: 在其他设备上运行同步工具

使用工作流程工具

python workflow.py

选择相应的操作:

  • 更新单个软件并生成列表
  • 同步单个软件
  • 同步所有软件
  • 生成完整软件列表

配置说明

配置文件 (config.json)

基础配置

配置项 说明 默认值
github_repo GitHub仓库地址 -
manager_base_path 管理工具扫描目录 ./software
sync_base_path 同步工具下载目录(为空则使用项目根目录) ""(空字符串)
sync_time 自动同步时间 07:00
git_mirrors Git镜像源列表 -
download_timeout 下载超时时间(秒) 30
retry_times 重试次数 3
retry_delay 重试延迟(秒) 5
log_level 日志级别 INFO
check_interval 检查间隔(秒) 3600

自动进程管理配置

配置项 说明 默认值
auto_kill 更新前自动关闭相关进程 true
auto_start 更新后自动启动程序 true
process_map 进程映射表,定义每个软件对应的进程名 {}
start_map 启动路径映射表,定义每个软件的启动路径(支持数组) {}
service_map 服务映射表,定义服务程序对应的Windows服务名 {}
start_after_update 更新后需要自动启动的程序列表 []
software_dirs 软件目录映射,控制更新顺序 {}

进程映射配置示例

process_map 用于定义更新时需要关闭的进程,支持多个进程:

{
  "process_map": {
    "notepad++": ["notepad++.exe"],
    "NetTime": ["NetTime.exe", "NetTimeService.exe"],
    "UltraEdit": ["uedit64.exe", "uedit32.exe"],
    "system_good": ["putty.exe", "SmartDefrag-Pro.exe", "Ditto.exe"]
  }
}

启动路径配置示例

start_map 支持单个程序或多个程序启动:

  1. 单个程序(字符串):

    {
      "start_map": {
        "notepad++": "notepad++.exe"
      }
    }
  2. 多个程序(数组):按顺序启动

    {
      "start_map": {
        "NetTime": ["NetTimeService.exe", "NetTime.exe"]
      }
    }
  3. 路径格式

    • 相对路径(推荐):相对于软件目录
      "NetTime": "NetTime.exe"                    // D:\Program Files\NetTime\NetTime.exe
      "NetTime": "bin/NetTime.exe"                // D:\Program Files\NetTime\bin\NetTime.exe
    • 绝对路径:完整路径
      "some_app": "C:/OtherPath/app.exe"          // 完整绝对路径

Windows服务配置示例

service_map 用于将服务程序映射到Windows服务名,系统会自动使用 net start 启动服务:

{
  "service_map": {
    "NetTimeService.exe": "NetTimeSvc",
    "Everything.exe": "Everything"              // 如果Everything安装为服务
  }
}

工作原理

  • 如果程序在 service_map 中,系统会使用 net start [服务名] 启动服务
  • 如果程序不在 service_map 中,系统会直接运行程序文件
  • 支持服务已在运行的情况检测

更新后自动启动配置

start_after_update 定义更新完成后需要自动启动的程序:

{
  "start_after_update": [
    "NetTime",
    "everything",
    "WinMemoryCleaner",
    "notepad++"
  ]
}

注意

  • 如果 start_after_update 为空数组 [],则所有软件更新后都会自动启动(当 auto_start: true 时)
  • 如果 start_after_update 有值,则只有列表中的软件会在更新后自动启动

更新顺序控制

软件更新顺序由 config.jsonsoftware_dirs 的顺序决定:

{
  "software_dirs": {
    "WinMemoryCleaner": "WinMemoryCleaner",      // 第一个更新
    "NetTime": "NetTime",                        // 第二个更新
    "system_good": "system_good"                 // 最后更新
  }
}

工作原理

  • 系统按照 software_dirs 中配置的顺序依次更新软件
  • 如果远程列表中有但 software_dirs 中未配置的软件,会在最后按远程列表顺序更新
  • 可以通过调整 software_dirs 的顺序来控制更新优先级

同步路径配置说明

sync_base_path 支持两种配置方式:

  1. 自动使用项目根目录(推荐):

    "sync_base_path": ""
    • 当配置为空字符串时,软件会下载到项目根目录
    • 例如:E:\GITHUB\softgitup\NetTime\E:\GITHUB\softgitup\everything\
    • 优点:无需管理员权限,便于管理,便于备份和迁移
  2. 指定自定义路径

    "sync_base_path": "D:/Program Files"
    • 软件会下载到指定的目录
    • 例如:D:\Program Files\NetTime\D:\Program Files\everything\
    • 注意:如果目录不存在,系统会自动创建

Git加速源配置

使用 gh-proxy.com 作为Git加速下载源:

"git_mirrors": [
  "https://gh-proxy.com/https://raw.githubusercontent.com/shellsec/softgitup"
]

GitLab 部署说明

为什么选择 GitLab?

  1. 企业级部署: 支持私有化部署,适合内网环境
  2. 国内访问: GitLab.com 或自建实例,访问更稳定
  3. 功能丰富: 内置 CI/CD、项目管理等企业级功能
  4. 数据安全: 可完全控制数据存储位置

GitLab 部署步骤

1. 创建 GitLab 仓库

  1. 登录 GitLab(GitLab.com 或自建实例)
  2. 创建新项目(Project)
  3. 将代码推送到 GitLab 仓库
git remote add gitlab https://gitlab.com/your-username/softgitup.git
git push gitlab master

2. 配置 config.json

修改 config.json 文件:

{
  "git_platform": "gitlab",
  "gitlab_repo": "https://gitlab.com/your-username/softgitup",
  "git_mirrors": [
    "https://gitlab.com/your-username/softgitup/-/raw/master"
  ]
}

重要配置项:

  • git_platform: 设置为 "gitlab"
  • gitlab_repo: 填写你的 GitLab 仓库地址
  • git_mirrors: GitLab 的 Raw 文件 URL 格式为 https://gitlab.com/user/repo/-/raw/branch

3. 验证配置

运行同步测试:

python test_complete_sync.py

或使用批处理文件:

一键快速同步.bat

4. 切换回 GitHub

如果需要切换回 GitHub,只需修改 git_platform

{
  "git_platform": "github",
  "github_repo": "https://github.com/shellsec/softgitup",
  "git_mirrors": [
    "https://gh-proxy.com/https://raw.githubusercontent.com/shellsec/softgitup"
  ]
}

GitLab 自建实例部署

如果你有自建 GitLab 实例:

  1. 配置仓库地址
{
  "git_platform": "gitlab",
  "gitlab_repo": "https://your-gitlab-instance.com/your-username/softgitup",
  "git_mirrors": [
    "https://your-gitlab-instance.com/your-username/softgitup/-/raw/master"
  ]
}
  1. 私有仓库访问

    • 如果仓库是私有的,需要在 GitLab 中创建 Personal Access Token
    • 在 URL 中包含 token:https://oauth2:YOUR_TOKEN@your-gitlab-instance.com/user/repo/-/raw/master
  2. 分支配置

    • GitLab 默认分支可能是 mastermain
    • 确保 git_mirrors 中的分支名与实际分支名一致

常见问题

Q: GitLab 和 GitHub 可以同时使用吗? A: 可以,在 git_mirrors 中同时配置两个平台的镜像源,系统会按顺序尝试。

Q: 如何知道当前使用的是哪个平台? A: 查看日志文件,会显示使用的镜像源 URL。

Q: GitLab 私有仓库如何配置? A: 在 URL 中包含访问令牌,或使用 GitLab 的 Deploy Token。

使用场景

个人用户

  • 在多台设备间同步常用软件
  • 自动更新软件到最新版本
  • 备份软件配置和设置

企业环境

  • 统一管理员工常用软件
  • 批量部署和更新软件
  • 软件版本控制和回滚

开发者

  • 管理开发环境工具
  • 快速搭建开发环境
  • 工具链版本管理

高级功能

自动进程管理

系统支持在更新前自动关闭相关进程,更新后自动启动程序:

  1. 更新前关闭进程

    • auto_kill: true 时,系统会在下载文件前自动关闭 process_map 中定义的进程
    • 支持关闭多个进程(如 NetTime 的主程序和服务程序)
    • 使用 Windows taskkill 命令强制关闭进程
  2. 更新后启动程序

    • auto_start: true 时,系统会在文件更新完成后自动启动程序
    • 根据 start_after_update 列表决定启动哪些程序
    • 支持单个程序或多个程序启动(数组配置)
    • 支持相对路径和绝对路径配置
    • 自动识别Windows服务并使用 net start 启动
  3. Windows服务支持

    • 自动检测程序是否在 service_map
    • 如果是服务,使用 net start [服务名] 启动
    • 如果是普通程序,直接运行可执行文件
    • 支持服务已在运行的情况检测
  4. 更新顺序控制

    • 按照 config.jsonsoftware_dirs 的顺序更新
    • 确保依赖关系正确的软件按正确顺序更新
  5. 工作流程

    开始同步 → 按 software_dirs 顺序 → 检查 auto_kill → 关闭相关进程 → 
    下载更新文件 → 检查 auto_start → 检查 start_after_update → 
    检查 service_map → 启动服务或程序
    

单个软件更新

# 只更新特定软件
python -c "from soft_manager import SoftManager; SoftManager().generate_list_file('everything')"

定时同步

  • 支持自定义同步时间
  • 后台静默更新
  • 系统托盘通知
  • 自动进程管理

日志管理

  • 详细的同步日志
  • 错误追踪和调试
  • 可配置日志级别
  • 进程关闭和启动日志记录

故障排除

常见问题

Q: 编译后运行报错 "DLL load failed while importing QtWidgets"? A: 这是PyQt5 DLL依赖问题,建议:

  1. 使用控制台版本:python build_exe.py 选择选项2
  2. 直接运行Python脚本:python simple_sync.py
  3. 安装Visual C++ Redistributable后重新编译

Q: 同步失败怎么办? A: 检查网络连接和GitHub仓库权限,确保使用正确的Git加速源。

Q: 文件修改时间不匹配? A: 这通常是因为文件内容发生了变化,系统会自动下载最新版本。

Q: 如何添加新的软件? A: 将软件放入software目录,在config.json中添加软件名称,然后运行管理工具。

Q: 如何配置自动关闭进程和启动程序? A: 在config.json中配置:

  1. 设置 auto_kill: trueauto_start: true
  2. process_map 中添加软件对应的进程名
  3. start_map 中添加软件的启动路径(支持相对路径和绝对路径)
  4. start_after_update 中添加需要自动启动的程序名称

Q: 启动路径如何配置? A: 支持两种方式:

  • 相对路径:"NetTime": "NetTime.exe""NetTime": "bin/NetTime.exe"
  • 绝对路径:"some_app": "C:/Path/app.exe"

Q: system_good 包含多个程序,如何配置? A: 在 process_mapsystem_good 数组中添加所有需要关闭的进程名:

"system_good": ["putty.exe", "SmartDefrag-Pro.exe", "Ditto.exe", ...]

Q: 如何启动多个程序? A: 在 start_map 中使用数组配置:

"NetTime": ["NetTimeService.exe", "NetTime.exe"]

系统会按数组顺序依次启动程序。

Q: 如何配置Windows服务? A: 在 service_map 中配置服务程序到服务名的映射:

"service_map": {
  "NetTimeService.exe": "NetTimeSvc"
}

系统会自动使用 net start 命令启动服务。

Q: 如何控制软件更新顺序? A: 调整 config.jsonsoftware_dirs 的顺序即可。系统会按照配置的顺序依次更新软件。

Q: 服务启动失败怎么办? A: 确保服务已安装。可以通过以下方式安装服务:

  • 使用软件提供的安装脚本(如 NetTime 的 ChangeNetTimePath.bat
  • 或手动使用 sc create 命令安装服务

Q: DNS 配置脚本如何使用? A: system_good 目录下提供了三个 DNS 配置脚本:

  • Configure_18bit_DNS.bat - 配置 18bit 加密 DNS(拦截广告、恶意网站)
  • Configure_AdGuard_DNS.bat - 配置 AdGuard DNS(免费,拦截广告、跟踪器)
  • Restore_Default_DNS.bat - 还原为默认 DNS 设置 使用方法:右键点击脚本,选择"以管理员身份运行"。配置完成后,可在系统设置中验证 DNS 是否显示"已加密"。

Q: DNS 配置后 DoH 未生效怎么办? A: 如果配置后 DoH 未生效,可以尝试:

  1. 重启网络适配器(禁用后重新启用)
  2. 在系统设置中手动启用 DoH:
    • 设置 → 网络和 Internet → 以太网(或 WLAN)→ 硬件属性 → DNS 服务器分配
    • 将"首选 DNS 加密"和"备用 DNS 加密"设置为"开(手动模板)"
  3. 重启计算机
  4. 某些 Windows 11 版本可能需要通过系统设置手动配置 DoH

日志查看

# 查看管理工具日志
tail -f logs/manager.log

# 查看同步工具日志
tail -f logs/sync.log

# 查看简单同步日志
tail -f logs/simple_sync.log

技术支持

如果遇到问题,请:

  1. 查看日志文件获取详细错误信息
  2. 检查网络连接和GitHub仓库权限
  3. 尝试使用控制台版本避免GUI依赖问题
  4. 提交Issue到GitHub仓库

开发计划

  • 支持更多云存储平台(Gitee、GitLab等)
  • 添加软件版本管理功能
  • 支持增量更新和压缩传输
  • 添加Web管理界面
  • 支持插件系统

贡献指南

欢迎提交Issue和Pull Request!

  1. Fork项目
  2. 创建功能分支
  3. 提交更改
  4. 推送到分支
  5. 创建Pull Request

许可证

MIT License

联系方式


注意: 请确保遵守相关软件的使用许可协议,本工具仅用于个人学习和合法用途。