๐ ๏ธ GeneralUpdate.Tools
February 12, 2026 ยท View on GitHub
๐ What is GeneralUpdate.Tools?
GeneralUpdate.Tools is a user-friendly desktop application that helps developers create and manage software update packages. It's part of the GeneralUpdate ecosystem - a complete solution for implementing automatic updates in your applications.
Think of it as your "Update Package Workshop" ๐ญ where you can:
- ๐ฆ Create differential update packages (only ship what changed!)
- ๐ Generate version configuration files
- ๐งฉ Package and manage application extensions
โจ Why Use This Tool?
- ๐ก Beginner-Friendly: Simple visual interface - no complex command lines
- โก Save Bandwidth: Create differential packages that only include changed files
- ๐ฏ Cross-Platform: Works on Windows and Linux
- ๐ง All-in-One: Three powerful tools in one application
๐ฏ Core Features
1๏ธโฃ Packet Builder ๐ฆ
Create differential update packages for your applications. Instead of shipping the entire application again, only include the files that changed!
What it does:
- Compares your old version with the new version
- Identifies only the changed files
- Creates a compressed update package (.zip)
- Optionally includes driver files
Perfect for: Reducing download sizes and update times
2๏ธโฃ OSS Packet Builder ๐
Generate version.json configuration files that tell your application where and how to download updates.
What it does:
- Creates version configuration in JSON format
- Specifies update package URLs and metadata
- Manages version history
- Supports hash verification for security
Perfect for: Managing update metadata and version tracking
3๏ธโฃ Extension Manager ๐งฉ
Package your application extensions into distributable packages with proper metadata.
What it does:
- Compresses extension directories into .zip files
- Generates manifest.json with extension metadata
- Supports custom properties and dependencies
- Platform-specific targeting (Windows/Linux/MacOS)
Perfect for: Creating plugin systems and extension marketplaces
๐ Quick Start Guide
Prerequisites
Before you begin, make sure you have:
- โ Operating System: Windows 10+ or Linux (Ubuntu 20.04+)
- โ .NET Runtime: .NET 8.0 SDK or Runtime
- โ Disk Space: At least 200MB free space
๐ฅ Installation
Option 1: Download Pre-built Release (Recommended for Beginners)
- Go to the Releases page
- Download the latest version for your platform
- Extract the ZIP file to a folder
- Run the executable:
- Windows: Double-click
GeneralUpdate.Tool.Avalonia.exe - Linux: Run
./GeneralUpdate.Tool.Avaloniain terminal
- Windows: Double-click
Option 2: Build from Source
# 1. Clone the repository
git clone https://github.com/GeneralLibrary/GeneralUpdate.Tools.git
cd GeneralUpdate.Tools
# 2. Navigate to the source folder
cd src
# 3. Restore dependencies
dotnet restore
# 4. Build the project
dotnet build
# 5. Run the application
dotnet run
๐ Usage Tutorial (Cookbook)
๐ณ Recipe 1: Creating Your First Update Package
Let's create a differential update package step by step!
Scenario: You have version 1.0.0 of your app and want to update it to version 2.0.0
Step 1: Prepare Your Directories
You need three folders:
- App Directory (๐ Old Version): Contains your version 1.0.0 files
- Release Directory (๐ New Version): Contains your version 2.0.0 files
- Patch Directory (๐ Output): Where the differential files will be saved
Example structure:
C:/MyApp/v1.0.0/ โ Old version
C:/MyApp/v2.0.0/ โ New version
C:/MyApp/patch/ โ Temporary output folder
Step 2: Open Packet Builder
- Launch GeneralUpdate.Tools
- Click on the "Packet" tab at the top
- You'll see a form with several fields
Step 3: Configure Your Package
Fill in the fields:
| Field | What to Enter | Example |
|---|---|---|
| Name | Package filename | MyApp_Update_v2.0.0 |
| App Directory | Path to old version | C:/MyApp/v1.0.0/ |
| Release Directory | Path to new version | C:/MyApp/v2.0.0/ |
| Patch Directory | Temp output path | C:/MyApp/patch/ |
| Format | Compression format | .zip (default) |
| Encoding | Text encoding | UTF-8 (recommended) |
Step 4: Optional - Add Driver Files
If your update includes driver files:
- Click "Select" next to "Driver Directory"
- Choose the folder containing your driver files
- They'll be automatically placed in a
drivers/folder inside the package
Step 5: Build the Package!
- Click the "Build" button ๐จ
- Wait for processing (may take a few moments)
- Success! ๐ You'll see a message "Build success"
- Your update package is saved in the parent directory of your Patch Directory
Result: You now have a .zip file containing only the changed files!
๐ณ Recipe 2: Creating Version Configuration (OSS Packet)
Now let's create a version.json file that tells your application about available updates.
Step 1: Open OSS Packet Builder
- Click on the "OSS Packet" tab
- You'll see fields for version information
Step 2: Enter Version Information
Fill in the details for your update:
| Field | What to Enter | Example |
|---|---|---|
| Version | Version number | 2.0.0.0 |
| Packet Name | Name of your .zip file | MyApp_Update_v2.0.0.zip |
| URL | Download URL | https://updates.myapp.com/packages/MyApp_Update_v2.0.0.zip |
| Date | Release date | 2026-02-11 |
| Time | Release time | 16:30:00 |
Step 3: Calculate Hash (Security)
- Click the "Hash" button ๐
- Select your
.zippackage file - The tool will calculate a SHA256 hash
- This ensures the download wasn't corrupted or tampered with
Step 4: Add to Configuration
- Click "Append" โ to add this version to the list
- You can add multiple versions (version history)
- The JSON preview will update automatically
Step 5: Save Configuration
- Click "Build" button ๐พ
- Choose where to save your
version.jsonfile - Success! You can now upload this file to your server
Result: You have a version.json file that looks like this:
[
{
"Version": "2.0.0.0",
"PacketName": "MyApp_Update_v2.0.0.zip",
"Url": "https://updates.myapp.com/packages/MyApp_Update_v2.0.0.zip",
"Hash": "abc123def456...",
"Date": "2026-02-11T16:30:00"
}
]
๐ณ Recipe 3: Packaging an Extension
Create a distributable extension package with metadata.
Step 1: Prepare Your Extension
Make sure you have:
- A folder containing your extension files
- Extension metadata (name, version, description)
Step 2: Open Extension Manager
- Click on the "Extension" tab
- You'll see a comprehensive form
Step 3: Fill Basic Information
| Field | What to Enter | Example |
|---|---|---|
| Name | Extension identifier | MyAwesomePlugin |
| Display Name | User-friendly name | My Awesome Plugin |
| Version | Version number | 1.0.0.0 |
| Description | What it does | Adds awesome features to your app |
| Publisher | Your name/company | Your Company Name |
Step 4: Select Directories
- Extension Directory: Click "Select" and choose your extension folder
- Export Path: Click "Select" and choose where to save the package
Step 5: Configure Platform & Details
- Platform: Select target platform (Windows/Linux/MacOS/All)
- License: Enter license type (e.g., "MIT", "Apache-2.0")
- Categories: Enter categories separated by commas (e.g., "Tools, Productivity")
Step 6: Advanced Options (Optional)
- Dependencies: Enter required extension IDs (comma-separated)
- Min/Max Host Version: Specify compatible app versions
- Custom Properties: Add key-value pairs for extra metadata
Step 7: Generate Package
- Click "Generate" button ๐
- Wait for compression
- Success! Your extension package is created
Result: You get a .zip file like MyAwesomePlugin_1.0.0.0.zip containing:
- All your extension files
- A
manifest.jsonwith all the metadata
๐จ Understanding the Interface
Main Window Layout
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [Packet] [OSS Packet] [Extension] โ โ Tabs
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Feature Content Area โ
โ โ
โ (Forms and controls for selected โ
โ feature appear here) โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Common Buttons
- ๐จ Build/Generate: Creates the package/file
- ๐ Select: Opens folder picker
- โ Append: Adds item to list
- ๐๏ธ Clear: Resets form fields
- ๐ Copy: Copies content to clipboard
- ๐ Hash: Calculates file hash
โ Frequently Asked Questions (FAQ)
Q: What's the difference between "Packet" and "OSS Packet"?
A: Think of it this way:
- Packet Builder creates the actual update files (the .zip package)
- OSS Packet Builder creates the configuration that tells where to download it
You need both! First create the package, then create the configuration file.
Q: Do I need to include all files in the update package?
A: No! That's the beauty of differential updates. The tool automatically:
- Compares old vs. new versions
- Only includes changed/new files
- Removes deleted files during update
This saves bandwidth and speeds up downloads! ๐
Q: What is the Hash field for?
A: The hash is like a fingerprint for your file. It ensures:
- โ File wasn't corrupted during download
- โ File wasn't tampered with
- โ Users get exactly what you published
Always calculate and include the hash for security!
Q: Can I use this for commercial projects?
A: Yes! The project uses Apache 2.0 license, which allows commercial use. See LICENSE for details.
Q: What platforms are supported?
A: The tool runs on:
- โ Windows 10 and later
- โ Linux (Ubuntu, Debian, Fedora, etc.)
Generated packages can target:
- โ Windows
- โ Linux
- โ MacOS (via Extension Manager)
Q: Where can I learn more about GeneralUpdate?
A: Check out the main project:
๐ Troubleshooting
Problem: "Build fail" message appears
Solutions:
- โ Check that all directory paths exist
- โ Ensure you have write permissions
- โ Make sure disk has enough free space
- โ Verify .NET 8.0 is properly installed
Problem: "Access denied" error
Solutions:
- โ Run the application as administrator (Windows)
- โ Check folder permissions
- โ Make sure files aren't locked by another program
Problem: Application won't start
Solutions:
- โ Install .NET 8.0 Runtime
- โ Check system requirements
- โ Try extracting to a different folder
- โ Disable antivirus temporarily (some may block it)
Problem: Hash calculation takes too long
Solutions:
- โ Normal for large files (>500MB)
- โ Be patient - it ensures security!
- โ Consider splitting very large packages
๐ค Contributing
We welcome contributions! Whether you:
- ๐ Found a bug
- ๐ก Have a feature idea
- ๐ Want to improve documentation
- ๐ง Want to submit code
Please:
- Check existing issues
- Open a new issue to discuss
- Fork the repository
- Submit a pull request
๐ License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
You are free to:
- โ Use commercially
- โ Modify
- โ Distribute
- โ Sublicense
๐ Related Projects
- GeneralUpdate - The main update framework
- GeneralUpdate.Core - Core update library
๐ Support & Community
Need help? Have questions?
- ๐ฌ GitHub Discussions
- ๐ Report Issues
- โญ Star this repo if you find it useful!
Made with โค๏ธ by the GeneralUpdate Team
