Repository navigation
Build from Source
Want to build the EXE yourself, contribute to the code, or customize the app? This guide walks you through every step.
💡 Just want to use the app? Skip this and download the ready-made EXE from the Releases page.
| Requirement | |
|---|---|
| 🐍 | Python 3.8 or newer — python.org |
| 🪟 | Windows 10 / 11 (64-bit) |
| 📦 | Git — git-scm.com |
| 💻 | VS Code (recommended) or any code editor |
python --versionShould output something like Python 3.11.5.
git clone https://github.com/ZvanTors/GoodByeDPI-GUI.git
cd GoodByeDPI-GUIOption A — From requirements file (recommended):
pip install -r requirements.txtOption B — Manually:
pip install pyside6 pyinstaller💡 Using a virtual environment is recommended:
python -m venv .venv .venv\Scripts\activate pip install -r requirements.txt
The GUI doesn't ship the engine — you need to provide it. Download the latest
GoodbyeDPI release
and place these three files inside the bin/ folder:
| File | Source |
|---|---|
bin/goodbyedpi.exe |
From GoodbyeDPI release |
bin/WinDivert.dll |
From GoodbyeDPI release (x86_64 folder) |
bin/WinDivert64.sys |
From GoodbyeDPI release (x86_64 folder) |
Final structure should look like:
GoodByeDPI-GUI/
├── main.py
├── requirements.txt
├── assets/
│ └── logo.ico
├── bin/
│ ├── goodbyedpi.exe
│ ├── WinDivert.dll
│ └── WinDivert64.sys
└── app/
└── ...
⚠️ Make sure you use the 64-bit versions of the DLL and SYS files.
If you want a custom icon, place logo.ico inside the assets/ folder.
If you don't have one, skip this step — the app will run fine without it.
Always run the app from source first to catch errors early:
python main.pyRun it as Administrator — the app requires it and will refuse to start otherwise.
💡 Tip: In VS Code, open a Terminal (Ctrl+`) and make sure it's running as admin, or use an elevated PowerShell window.
If everything works (window opens, mode cards appear, Start button works), you're ready to build.
pyinstaller --onefile --windowed --uac-admin --name "GoodByeDPI GUI" --add-data "assets;assets" --add-data "bin;bin" --icon=assets/logo.ico main.pypyinstaller --onefile --windowed --uac-admin --name "GoodByeDPI GUI" ^
--add-data "assets;assets" ^
--add-data "bin;bin" ^
--icon=assets/logo.ico ^
main.pypyinstaller --onefile --windowed --uac-admin --name "GoodByeDPI GUI" `
--add-data "assets;assets" `
--add-data "bin;bin" `
--icon=assets/logo.ico `
main.py| Flag | Purpose |
|---|---|
--onefile |
Bundle everything into a single EXE |
--windowed |
Hide the console window |
--uac-admin |
Request admin privileges on launch |
--name |
Name of the output EXE |
--add-data |
Include assets/ and bin/ folders |
--icon |
Set the EXE icon |
⚠️ On Windows, the separator in--add-datais;— not:. Using:will silently fail.
After the build completes, PyInstaller creates a dist/ folder:
dist/
└── GoodByeDPI GUI.exeRename it to match the release convention used by the updater:
dist/GoodByeDPI.GUI.exe💡 This name matters — the in-app updater looks for exactly
GoodByeDPI.GUI.exein GitHub releases.
- Move the EXE to a different folder (e.g., Desktop) to test portability
- Right-click → Run as administrator
- Verify:
- ✅ Window opens
- ✅ Icons and theme render correctly
- ✅ Mode cards appear
- ✅ Start/Stop works
- ✅ Toasts appear at bottom-right
After a successful build, you can safely delete:
build/
*.specOnly dist/ and your source files matter.
Whenever you modify the source, just run the build command again. PyInstaller overwrites the old EXE.
💡 To keep builds clean, delete
build/anddist/first:rmdir /s /q build dist
PyInstaller isn't installed or isn't on your PATH.
pip install pyinstaller
python -m PyInstaller --versionIf that works, use python -m PyInstaller instead of pyinstaller.
You're building from the wrong directory. Make sure you're in the project root:
cd GoodByeDPI-GUI
pyinstaller ...Check your --add-data flags. The separator must be ; on Windows.
Also verify the source folders actually exist:
dir assets
dir binRun it from CMD to see the error:
"dist\GoodByeDPI.GUI.exe"Common causes:
- Missing
bin/goodbyedpi.exe - Not running as admin
- Antivirus quarantined a bundled file
PyInstaller EXEs are sometimes flagged as suspicious — a known false positive. Add the folder to your antivirus exclusions.
Normal — first build can take 1-3 minutes. Subsequent builds are faster.
- 🎯 Use a virtual environment — avoids polluting your global Python install
- 🧹 Clean before rebuild — deletes stale artifacts
- 📏 Check EXE size — a healthy build is ~40-60 MB
- 🔒 Sign your EXE (optional) — reduces antivirus false positives (requires a code-signing certificate)
- 📝 Version your build — bump
APP_VERSIONinapp/constants.pybefore release
Next: Understand the codebase in Architecture 🏗
This wiki is the complete documentation for GoodByeDPI GUI — a clean, powerful graphical interface for GoodbyeDPI.
If you're new here, start with Getting Started. If you're looking for something specific, use the navigation below.
|
|
GoodByeDPI GUI wraps the powerful GoodbyeDPI command-line tool in a modern, easy-to-use desktop application for Windows.
It helps you bypass Deep Packet Inspection (DPI) — the technology some ISPs use to block or throttle websites.
💡 No terminal. No config files. Just click and browse.
| Feature | What it does | |
|---|---|---|
| 🎛 | Mode Cards | Pick Fast, Compatible, or Custom visually |
| ⚡ | One-Click Start/Stop | Toggle DPI circumvention instantly |
| 🍞 | Toast Notifications | Friendly, non-intrusive feedback |
| 📖 | Arguments Guide | Built-in reference for every GoodbyeDPI flag |
| ✅ | Live Validator | Catches typos before you start |
| 🔔 | System Tray | Runs quietly in the background |
| 🎨 | Modern Dark UI | Catppuccin-inspired design |
| 🌐 | Auto Update Checker | Knows when a new version is out |
📖 Documentation
🩺 Support
🛠 Development
🔗 Links