中文 | English
A tool system for managing local software directories and automatically syncing updates, supporting GitHub and GitLab cloud storage, with Git accelerated downloads.
- Local Software Management: Scan local software directories, generate file indexes and version lists
- Cloud Sync: Automatically push to GitHub or GitLab, support Git accelerated downloads
- Multi-Platform Support: Support GitHub and GitLab, flexible switching
- Smart Updates: Compare based on file modification time, only download changed files
- Automatic Process Management: Automatically close related processes before update, automatically start specified programs after update
- Windows Service Support: Automatically identify and start Windows services (e.g., NetTime service)
- Multi-Program Launch: Support launching multiple programs simultaneously (e.g., main program and service program)
- Update Order Control: Update software according to configuration file order, ensuring dependency relationships
- System Tray: Run in background, support system tray icon and silent updates
- Cross-Platform: Support Windows, Linux, macOS
- Complete Sync: Full-featured sync tool with automatic process management
- Out-of-the-Box: Ready-to-use registered/cracked versions, keep updated versions daily, virus-scanned
-
Text Editors: Notepad++, notepad-, SublimeText, EditPlus, EmEditor (large files 16T), UltraEdit
-
System Tools: CCleaner, Everything, WinMemoryCleaner, CrystalDiskInfo, NetTime
-
Compression Tools: WinRAR, 7-Zip, excellent image viewer XnViewMP
-
Startup Management: HiBit Startup Manager, duplicate file finder Duplicate Cleaner Pro
-
System Optimization: system_good directory contains multiple system tools
- Driver Management: Driver Talent (overseas version)
- System Optimization: Start menu StartBackAIO supports all Windows versions, disable patch updates, KMS activation, disable built-in antivirus
- Utility Tools: Ditto clipboard, DuplicateCleaner duplicate file cleanup, Putty, SmartDefrag disk defragmentation, etc.
- File Server: copyparty - Local self-hosted sync, Web file server, open source secure, multi-platform support
- DNS Configuration Tools: One-click encrypted DNS (DoH) configuration
Configure_AdGuard_DNS.bat- Configure AdGuard DNS (free, blocks ads, trackers, malicious websites)Configure_18bit_DNS.bat- Configure 18bit encrypted DNS (blocks ads, malicious websites)Restore_Default_DNS.bat- Restore default DNS settings (automatic)
-
More Software: Easy to extend support, post if you need others
Tested on Windows 10-11, Windows Server permission issues
-
Download config.json, sync_software.exe
-
**Modify the path in config.json, run sync_software.exe, and you can use it to automatically update all software to the latest version
Tested on Windows Server + Windows 10-11
-
**Download config.json, sync_software.py, sync_software.bat
-
**Modify the path in config.json, run sync_software.bat, and you can use it
softgitup/
├── config.json # Configuration file
├── soft_manager.py # Local management tool
├── soft_sync.py # Sync tool (GUI version)
├── sync_software.py # Complete sync tool (command line, recommended)
├── build_exe.py # Build script
├── generate_and_push.bat # One-click generate and push batch
├── software/ # Local software directory
│ ├── CCleaner/
│ ├── EditPlus/
│ ├── everything/
│ ├── notepad++/
│ ├── SublimeText/
│ └── ...
├── logs/ # Log directory
└── README.md # Project documentation
- Python 3.7+
- Git
- Network connection
pip install requests PyQt5 gitpythonEdit the config.json file:
{
"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"
]
}Method 1: Use Compiled Executable (No Python Environment) ⭐⭐⭐⭐⭐
# Run the compiled exe file directly
sync_software.exeAdvantages:
- ✅ No Python installation required
- ✅ Small file size (5-15 MB)
- ✅ Fast startup
- ✅ Better performance
- ✅ Single file deployment
Method 2: Use Python Script
# Use complete sync tool (command line)
python sync_software.py
# Or use batch file (no Python environment required)
一键快速同步.bat# Scan local software and push to GitHub
python soft_manager.py
# Or use batch file for one-click operation
generate_and_push.bat# Start GUI sync tool (system tray)
python soft_sync.pyUse PyInstaller to package Python programs into executable files:
# Use build_exe.py script to package
python build_exe.pyBuild script provides multiple options:
- Build All Programs (Recommended) - Includes GUI and console versions
- Build Console Version Only - No GUI dependencies, avoid PyQt5 DLL issues
- Build GUI Version Only - Includes complete GUI functionality
- Clean Build Files - Clean temporary files
You can also use PyInstaller directly to compile sync_software.py:
# Basic compilation
pyinstaller --onefile --name=sync_software sync_software.py
# Optimized compilation (recommended)
pyinstaller --onefile --name=sync_software --clean --noconfirm sync_software.pyGenerated Files:
dist/sync_software.exe- Compiled executable file
sync_software.exe- Complete sync tool (console, recommended)SoftGitUp_Workflow.exe- Workflow tool (console)SoftGitUp_Manager.exe- Management tool (GUI)SoftGitUp_Sync.exe- Sync tool (GUI, system tray)SoftGitUp_Sync_Simple.exe- Simplified sync tool (console)
If you encounter ImportError: DLL load failed while importing QtWidgets error:
Solution 1: Use Nuitka Compilation (Recommended) ⭐⭐⭐⭐⭐
# Compile to native C++ code, no Python or DLL needed
python -m nuitka --standalone --onefile --windows-console-mode=disable --output-dir=dist sync_software.pyAdvantages:
- Smaller file size (5-15 MB)
- No DLL dependencies
- Fast startup
- Better performance
Solution 2: Use Console Version
# Select option 2, build console version
python build_exe.py
# Use the generated SoftGitUp_Sync_Simple.exeSolution 3: Use Python Script
# Run Python scripts directly to avoid packaging issues
python sync_software.pySolution 4: Install Visual C++ Redistributable
- Download and install Microsoft Visual C++ Redistributable
- Recompile GUI version
SoftGitUp_Workflow.exe- Workflow tool (console)SoftGitUp_Manager.exe- Management tool (GUI)SoftGitUp_Sync.exe- Sync tool (GUI, system tray)SoftGitUp_Sync_Simple.exe- Simplified sync tool (console)
- Update Software Files: Place new version software into
software/directory - Generate List: Run
python soft_manager.pyor use batch file - Push to GitHub: Automatically commit and push updates
- Sync to Other Devices: Run sync tool on other devices
# Use complete sync tool (recommended)
python sync_software.py
# Or use batch file (no Python environment required)
一键快速同步.batFeatures include:
- Automatic sync of all software
- Smart update detection
- Automatic process management
- Detailed logging
| Configuration Item | Description | Default Value |
|---|---|---|
git_platform |
Git platform type | "github" or "gitlab" |
github_repo |
GitHub repository address | - |
gitlab_repo |
GitLab repository address | - |
manager_base_path |
Management tool scan directory | ./software |
sync_base_path |
Sync tool download directory (empty uses project root) | "" (empty string) |
sync_time |
Auto sync time | 07:00 |
git_mirrors |
Git mirror source list | - |
download_timeout |
Download timeout (seconds) | 30 |
retry_times |
Retry times | 3 |
retry_delay |
Retry delay (seconds) | 5 |
log_level |
Log level | INFO |
check_interval |
Check interval (seconds) | 3600 |
| Configuration Item | Description | Default Value |
|---|---|---|
auto_kill |
Automatically close related processes before update | true |
auto_start |
Automatically start programs after update | true |
process_map |
Process mapping table, defines process names for each software | {} |
start_map |
Startup path mapping table, defines startup paths for each software (supports arrays) | {} |
service_map |
Service mapping table, maps service programs to Windows service names | {} |
start_after_update |
List of programs to automatically start after update | [] |
software_dirs |
Software directory mapping, controls update order | {} |
process_map is used to define processes that need to be closed during update, supports multiple processes:
{
"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 supports single program or multiple program startup:
-
Single Program (string):
{ "start_map": { "notepad++": "notepad++.exe" } } -
Multiple Programs (array): Start in order
{ "start_map": { "NetTime": ["NetTimeService.exe", "NetTime.exe"] } } -
Path Format:
- Relative Path (recommended): Relative to software directory
"NetTime": "NetTime.exe" // D:\Program Files\NetTime\NetTime.exe "NetTime": "bin/NetTime.exe" // D:\Program Files\NetTime\bin\NetTime.exe
- Absolute Path: Full path
"some_app": "C:/OtherPath/app.exe" // Full absolute path
- Relative Path (recommended): Relative to software directory
service_map is used to map service programs to Windows service names. The system will automatically use net start to start services:
{
"service_map": {
"NetTimeService.exe": "NetTimeSvc",
"Everything.exe": "Everything" // If Everything is installed as a service
}
}How it works:
- If a program is in
service_map, the system will usenet start [service name]to start the service - If a program is not in
service_map, the system will directly run the program file - Supports detection of services already running
start_after_update defines programs that need to be automatically started after update completion:
{
"start_after_update": [
"NetTime",
"everything",
"WinMemoryCleaner",
"notepad++"
]
}Note:
- If
start_after_updateis an empty array[], all software will automatically start after update (whenauto_start: true) - If
start_after_updatehas values, only software in the list will automatically start after update
Software update order is determined by the order in software_dirs in config.json:
{
"software_dirs": {
"WinMemoryCleaner": "WinMemoryCleaner", // First update
"NetTime": "NetTime", // Second update
"system_good": "system_good" // Last update
}
}How it works:
- System updates software sequentially according to the order configured in
software_dirs - If software exists in remote list but not configured in
software_dirs, it will be updated last according to remote list order - You can control update priority by adjusting the order in
software_dirs
sync_base_path supports two configuration methods:
-
Auto-use project root directory (Recommended):
"sync_base_path": ""
- When configured as empty string, software will be downloaded to project root directory
- Example:
E:\GITHUB\softgitup\NetTime\,E:\GITHUB\softgitup\everything\ - Advantages: No administrator privileges required, easy to manage, easy to backup and migrate
-
Specify custom path:
"sync_base_path": "D:/Program Files"
- Software will be downloaded to specified directory
- Example:
D:\Program Files\NetTime\,D:\Program Files\everything\ - Note: If directory doesn't exist, system will automatically create it
Use gh-proxy.com as Git accelerated download source:
"git_mirrors": [
"https://gh-proxy.com/https://raw.githubusercontent.com/shellsec/softgitup"
]- Enterprise Deployment: Supports private deployment, suitable for intranet environments
- Domestic Access: GitLab.com or self-hosted instances, more stable access
- Rich Features: Built-in CI/CD, project management and other enterprise features
- Data Security: Complete control over data storage location
- Log in to GitLab (GitLab.com or self-hosted instance)
- Create a new project
- Push code to GitLab repository
git remote add gitlab https://gitlab.com/your-username/softgitup.git
git push gitlab masterEdit config.json file:
{
"git_platform": "gitlab",
"gitlab_repo": "https://gitlab.com/your-username/softgitup",
"git_mirrors": [
"https://gitlab.com/your-username/softgitup/-/raw/master"
]
}Important Configuration Items:
git_platform: Set to"gitlab"gitlab_repo: Fill in your GitLab repository addressgit_mirrors: GitLab Raw file URL format:https://gitlab.com/user/repo/-/raw/branch
Run sync test:
python sync_software.pyOr use batch file:
一键快速同步.batIf you need to switch back to GitHub, just modify git_platform:
{
"git_platform": "github",
"github_repo": "https://github.com/shellsec/softgitup",
"git_mirrors": [
"https://gh-proxy.com/https://raw.githubusercontent.com/shellsec/softgitup"
]
}If you have a self-hosted GitLab instance:
- Configure Repository Address:
{
"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"
]
}-
Private Repository Access:
- If the repository is private, you need to create a Personal Access Token in GitLab
- Include token in URL:
https://oauth2:YOUR_TOKEN@your-gitlab-instance.com/user/repo/-/raw/master
-
Branch Configuration:
- GitLab default branch may be
masterormain - Ensure branch name in
git_mirrorsmatches actual branch name
- GitLab default branch may be
Q: Can GitLab and GitHub be used simultaneously?
A: Yes, configure mirror sources for both platforms in git_mirrors, system will try in order.
Q: How to know which platform is currently being used? A: Check log files, they will show the mirror source URL being used.
Q: How to configure GitLab private repository? A: Include access token in URL, or use GitLab's Deploy Token.
- Sync common software across multiple devices
- Automatically update software to latest version
- Backup software configurations and settings
- Unified management of employee common software
- Batch deployment and software updates
- Software version control and rollback
- Manage development environment tools
- Quickly set up development environment
- Toolchain version management
The system supports automatically closing related processes before update and automatically starting programs after update:
-
Close Processes Before Update:
- When
auto_kill: true, the system will automatically close processes defined inprocess_mapbefore downloading files - Supports closing multiple processes (e.g., NetTime main program and service program)
- Uses Windows
taskkillcommand to force close processes
- When
-
Start Programs After Update:
- When
auto_start: true, the system will automatically start programs after file update completion - Determines which programs to start based on
start_after_updatelist - Supports single program or multiple program startup (array configuration)
- Supports relative path and absolute path configuration
- Automatically identifies Windows services and uses
net startto start
- When
-
Windows Service Support:
- Automatically detects if a program is in
service_map - If it's a service, uses
net start [service name]to start - If it's a regular program, directly runs the executable file
- Supports detection of services already running
- Automatically detects if a program is in
-
Update Order Control:
- Updates according to the order in
config.jsonsoftware_dirs - Ensures software with dependency relationships are updated in correct order
- Updates according to the order in
-
Workflow:
Start sync → In order of software_dirs → Check auto_kill → Close related processes → Download update files → Check auto_start → Check start_after_update → Check service_map → Start service or program
# Update only specific software
python -c "from soft_manager import SoftManager; SoftManager().generate_list_file('everything')"- Support custom sync time
- Background silent updates
- System tray notifications
- Automatic process management
- Detailed sync logs
- Error tracking and debugging
- Configurable log levels
- Process close and startup log records
Q: How to use the version without Python environment?
A: Use the PyInstaller compiled sync_software.exe:
- Run directly:
sync_software.exe - Advantages: No Python installation, single file deployment, easy to use
- Download: Get the compiled exe file from the project release page
Q: How to compile sync_software.exe? A: Use PyInstaller compilation:
# Use build_exe.py script to package
python build_exe.py
# Select option 2: Build console version only
# Or use PyInstaller directly
pyinstaller --onefile --name=sync_software --clean --noconfirm sync_software.pyQ: After compilation, running reports error "DLL load failed while importing QtWidgets"? A: This is a PyQt5 DLL dependency issue. Suggestions:
- Use console version:
python build_exe.pyselect option 2 - Run Python scripts directly:
python sync_software.py - Or use batch file:
一键快速同步.bat(no Python environment required) - Install Visual C++ Redistributable and recompile
Q: What to do if sync fails? A: Check network connection and GitHub repository permissions, ensure using correct Git acceleration source.
Q: File modification time doesn't match? A: This is usually because file content has changed. The system will automatically download the latest version.
Q: How to add new software? A: Place software in software directory, add software name in config.json, then run management tool.
Q: How to configure automatic process closing and program startup? A: Configure in config.json:
- Set
auto_kill: trueandauto_start: true - Add process names corresponding to software in
process_map - Add software startup paths in
start_map(supports relative and absolute paths) - Add program names that need automatic startup in
start_after_update
Q: How to configure startup paths? A: Supports two methods:
- Relative path:
"NetTime": "NetTime.exe"or"NetTime": "bin/NetTime.exe" - Absolute path:
"some_app": "C:/Path/app.exe"
Q: system_good contains multiple programs, how to configure?
A: Add all process names that need to be closed in the system_good array in process_map:
"system_good": ["putty.exe", "SmartDefrag-Pro.exe", "Ditto.exe", ...]Q: How to start multiple programs?
A: Use array configuration in start_map:
"NetTime": ["NetTimeService.exe", "NetTime.exe"]The system will start programs sequentially in array order.
Q: How to configure Windows services?
A: Configure service program to service name mapping in service_map:
"service_map": {
"NetTimeService.exe": "NetTimeSvc"
}The system will automatically use net start command to start the service.
Q: How to control software update order?
A: Adjust the order in software_dirs in config.json. The system will update software sequentially according to the configured order.
Q: What to do if service startup fails? A: Ensure the service is installed. You can install the service through:
- Use the installation script provided by the software (e.g., NetTime's
ChangeNetTimePath.bat) - Or manually use
sc createcommand to install the service
Q: How to use DNS configuration scripts? A: Three DNS configuration scripts are provided in the system_good directory:
Configure_18bit_DNS.bat- Configure 18bit encrypted DNS (blocks ads, malicious websites)Configure_AdGuard_DNS.bat- Configure AdGuard DNS (free, blocks ads, trackers)Restore_Default_DNS.bat- Restore default DNS settings Usage: Right-click the script and select "Run as administrator". After configuration, verify in system settings that DNS shows "Encrypted".
Q: DoH not effective after DNS configuration? A: If DoH is not effective after configuration, try:
- Restart network adapter (disable and re-enable)
- Manually enable DoH in system settings:
- Settings → Network & Internet → Ethernet (or WLAN) → Hardware properties → DNS server assignment
- Set "Preferred DNS encryption" and "Alternate DNS encryption" to "On (manual template)"
- Restart computer
- Some Windows 11 versions may require manual DoH configuration through system settings
Q: Where are software downloaded when sync_base_path is empty?
A: When sync_base_path is configured as empty string "", software will be downloaded to project root directory (script location). For example:
- Project is at
E:\GITHUB\softgitup\ - Software will be downloaded to
E:\GITHUB\softgitup\NetTime\,E:\GITHUB\softgitup\everything\, etc. - Advantages: No administrator privileges required, easy to manage
Q: How to specify software download to other directory?
A: Configure sync_base_path in config.json:
"sync_base_path": "D:/Program Files"Software will be downloaded to specified directory, and the directory will be created automatically if it doesn't exist.
# View management tool logs
tail -f logs/manager.log
# View sync tool logs
tail -f logs/sync.log
# View complete sync logs
tail -f logs/complete_sync.logIf you encounter problems, please:
- Check log files for detailed error information
- Check network connection and GitHub repository permissions
- Try using console version to avoid GUI dependency issues
- Submit Issue to GitHub repository
- Support more cloud storage platforms (Gitee, GitLab, etc.)
- Add software version management functionality
- Support incremental updates and compressed transmission
- Add Web management interface
- Support plugin system
Welcome to submit Issues and Pull Requests!
- Fork the project
- Create feature branch
- Commit changes
- Push to branch
- Create Pull Request
MIT License
- Configuration Guide - Detailed configuration parameters (Chinese)
- Local Server Guide - Local file server setup guide (Chinese)
- 手机隐私安全配置指南 - Complete mobile privacy configuration guide (Chinese)
- Mobile Privacy & Security Guide - Complete mobile privacy configuration guide (English)
Note: Please ensure compliance with relevant software usage license agreements. This tool is only for personal learning and legal purposes.