- Quick Send — right-click any file/folder -> Quick Send -> get a
BZ://link instantly. - Quick Receive — click a
BZ://codelink (Discord, browser, anywhere) -> auto-download. - Global Hotkey — press Alt+F1 on any highlighted
BZ://codeto download — even when no window is open. - Lightweight Background Process — ~0% CPU idle, minimal RAM, single-instance, event-driven (no polling).
- Auto-Extract — ZIP archives are extracted automatically (optional).
- Dark Mode — light/dark/system theme.
- System Tray — optional tray icon for quick access.
- Add to PATH — use
bzfrom any terminal to send/receive files. - Separate Installer/Updater —
BuzzInstallerInstaller.exeinstalls and updates BuzzInstaller from GitHub Releases.
Download the latest BuzzInstaller.zip from Releases, extract it, and run BuzzInstaller.exe from the extracted folder.
Download BuzzInstallerInstaller.exe from Releases and run it.
It will:
- Check GitHub Releases for the latest version
- Install BuzzInstaller if not present, or update it if a newer version exists
- Launch BuzzInstaller when done
git clone https://github.com/MapleSyrupLover/BuzzInstaller.git
cd BuzzInstaller
pip install PySide6 pyinstaller
python src/BuzzInstaller/build/build_exe.pyThe onedir distribution is produced at dist/BuzzInstaller/:
dist/BuzzInstaller/
BuzzInstaller.exe
_internal/
PySide6/
Qt6*.dll
plugins/
...
A dist/BuzzInstaller.zip is also created for the installer to download
and install the ENTIRE directory.
- A friend sends
BZ://xxxxxxxxxxxxin Discord. - You highlight the text.
- You press Alt+F1 (configurable).
- BuzzInstaller launches automatically (if needed) and the download begins immediately.
No need to open BuzzInstaller beforehand. A dedicated background process owns the hotkey and stays alive even when all windows are closed.
+------------------------------+ +------------------------------+
| Foreground (GUI) | | Background (headless) |
| - Settings / Upload / DL | | - Owns the global hotkey |
| - Tray mode | | - ~0% CPU idle |
+--------------+--------------+ +--------------+---------------+
| |
| spawns if not running |
+-----------------+-------------------+
|
+----------+----------+
| Single-instance |
| mutex (global) |
+---------------------+
RegisterHotKey(native Windows API) — no keyboard polling.QFileSystemWatcher— hotkey changes apply live, no polling.- Single-instance mutex — only one background process ever runs.
Full documentation — source code reference, all CMD commands, configuration, architecture, and troubleshooting:
| Command | Description |
|---|---|
| (no args) | Open Settings |
--send <path> |
Quick Send (upload) |
BZ://code |
Quick Receive (download) |
--install |
Register Windows integration |
--uninstall |
Remove Windows integration |
--background |
Run headless hotkey process |
--tray |
Run in system tray |
--version |
Show version |
:: Upload a file
BuzzInstaller.exe --send "C:\path\to\file.zip"
:: Download a BZ link
BuzzInstaller.exe "BZ://h0l6lgmru052"
:: Register Windows integration
BuzzInstaller.exe --installOnce "Add BuzzInstaller to PATH" is enabled in Settings, you can use the short bz command from any terminal:
:: Upload a file
bz --send "C:\path\to\file.zip"
:: Download a BZ link
bz BZ://h0l6lgmru052
:: Register Windows integration
bz --install
:: Remove Windows integration
bz --uninstall
:: Run the background hotkey process
bz --background
:: Run in system tray
bz --tray
:: Show version
bz --version
:: Show help
bz --helpNote:
bzsimply forwards all arguments toBuzzInstaller.exe— both work identically. After enabling the setting, open a new terminal window forbzto be available.
Releases use the vMAJOR.MINOR.PATCH convention:
v1.0.0— initial releasev1.1.0— minor feature releasev1.2.3— patch release
The GitHub Release tag is the authoritative source for the newest published
version. The installed application's --version output is the authoritative
source for the currently installed version. Version comparisons are done
semantically (numeric component-wise), never as string comparison — so
1.10.0 correctly sorts newer than 1.9.0.
BuzzInstallerInstaller.exe is a separate, lightweight installer/updater for BuzzInstaller:
- Installs BuzzInstaller (if not already installed)
- Checks GitHub Releases for the latest version
- Compares the installed and latest versions (semantic version comparison)
- Updates BuzzInstaller when a newer release exists
- Deletes BuzzInstaller (with confirmation)
- Remembers the installation location for future updates
When BuzzInstaller is not installed, the installer asks where to install it:
- Install to PATH — installs to
%LOCALAPPDATA%\BuzzInstaller\and adds that directory to the user's PATH (no admin required, no duplicates). - Custom directory — use the Browse button to select any folder. Custom directories are NOT added to PATH unless the user explicitly chooses the PATH option.
The selected location is remembered in per-user metadata so future updates and deletion know where BuzzInstaller lives.
The installer automatically checks GitHub Releases on startup — no button click needed. It displays the appropriate state:
| State | Display |
|---|---|
| Not installed | "BuzzInstaller is not installed." + Install button |
| Up to date | "BuzzInstaller is up to date." + Reinstall / Delete |
| Update available | "BuzzInstaller x.x.x is available." + Update / Delete |
| Newer installed | "Installed version is newer than the latest release." |
| Error | "Unable to check for updates." + Retry |
The installer is a separate, disposable process. It is the only component
that ever replaces BuzzInstaller.exe. This ensures BuzzInstaller never
overwrites its own running executable.
The update flow:
- Query the GitHub Releases API for the latest release.
- If installed, run
BuzzInstaller.exe --versionto get the installed version. - Compare versions semantically.
- If
installed == latest→ "Latest version is already installed." and exit. - If
installed > latest→ do not downgrade; exit. - If
installed < latest(or not installed) → download the new executable to a temporary file. - Verify the download completed (non-empty, correct size).
- Wait for / close any running BuzzInstaller process.
- Replace the executable (the download is already complete — never delete the old one first).
- Launch BuzzInstaller.
- Clean up temporary files.
The progress bar becomes visible before downloading begins and shows:
- Percentage (e.g.
68%) - Downloaded size / total size (e.g.
180 MB / 264 MB)
The Cancel button (grey background, white text) safely aborts an in-progress download and cleans up the temporary file.
The "Delete BuzzInstaller" button:
- Confirms with the user.
- Terminates any running BuzzInstaller process.
- Deletes
BuzzInstaller.exe. - Removes the PATH entry (if PATH installation was used).
- Unregisters Windows integration.
- Clears installation metadata.
python src/BuzzInstallerInstaller/build/build_installer.pyProduces src/dist/BuzzInstallerInstaller/BuzzInstallerInstaller.exe.
python src/BuzzInstallerInstaller/tests/test_version.py
python src/BuzzInstallerInstaller/tests/test_installer.py
python src/BuzzInstallerInstaller/tests/test_improvements.pySettings are stored in %LOCALAPPDATA%\BuzzInstaller\config.json.
| Setting | Default | Description |
|---|---|---|
| Global Hotkey | Alt+F1 |
The hotkey combination |
| Download from selected text | true |
Hotkey reads highlighted text |
| Download Folder | user Downloads | Where files are saved |
| Auto-Extract ZIP | true |
Extract ZIPs after download |
| Start with Windows | false |
Launch background at login |
| Add BuzzInstaller to PATH | false |
Add the app folder to your user PATH so bz works |
| Dark Mode | false |
Light / dark / system |
# Run from source
python src/BuzzInstaller/main.py
# Run import tests
python src/BuzzInstaller/test_imports.py
# Build the executable
python src/BuzzInstaller/build/build_exe.pysrc/BuzzInstaller/
├── main.py # Entry point & arg dispatch
├── config/ # Config manager & paths
├── core/ # API, upload, download, protocol
├── system/ # Background, hotkey, clipboard, tray, registry
├── ui/ # Qt windows & theme
├── utils/ # Logging, file helpers, notifications
├── version.py # Single authoritative version source
└── build/ # PyInstaller build script
src/BuzzInstallerInstaller/
├── main.py # Separate installer/updater entry point
├── installer.py # Install/update orchestration & safe replacement
├── github_api.py # GitHub Releases API client
├── downloader.py # Asset download with progress & validation
├── ui.py # Minimal installer window
├── version.py # Semantic version parsing & comparison
├── build/ # PyInstaller build script
└── tests/ # Version & installer tests
MIT — see LICENSE for details.
Made for the BuzzHeavier community