Skip to content

About

Official installer for BlockTheSpot written in Golang for blocking Spotify ads

Topics

Resources

Stars

178 stars

Watchers

1 watching

Forks

Latest commit

 

History

17 Commits

Folders and files

Repository files navigation

BlockTheSpot Installer

Official installer for a multi-purpose adblocker and skip-bypass for the Spotify for Windows (64 bit)

Please support Spotify by purchasing premium

Build status Discord

Official installer for BlockTheSpot.

Install

  1. Download BlockTheSpotInstaller.exe and run it.
  2. Keep the recommended Spotify Windows x64 version selected. Downloads come from Loadspot.
  3. Click Install / Patch. Spotify is closed automatically. If the selected version differs from your installed version, the installer reinstalls Spotify before applying the patch.
  4. Leave Launch Spotify and close installer after completion enabled to start Spotify when finished.

Use Update or reinstall Spotify before patching to repair the selected Spotify version, even when it is already installed. Use Uninstall / Restore to remove the patch and restore Spotify's matching original DLL. Your settings and diagnostic logs are kept.

Preferences

config.ini contains the release's signatures. Your preferences live in %APPDATA%\Spotify\settings.ini; restart Spotify after editing them. See settings.example.ini for supported options.

  • Updates preserve an existing settings.ini byte for byte, including comments.
  • On the first upgrade, supported preferences in an older config.ini migrate into settings.ini. Signatures and offsets never migrate.
  • Fresh installations create settings.ini from the release's defaults and include settings.example.ini for reference.
  • Reset BlockTheSpot settings to defaults is off by default and only applies when installing. Uninstall always keeps settings.
  • Spotify reinstalls protect both settings and legacy preferences, including if setup fails. If restoration is blocked, the activity log identifies the saved backup.

Compatibility and recovery

New packs declare an exact [Compatibility] Spotify version. Only that version is offered; a newer version is never substituted. Older releases that only carry a version comment retain their original minimum-version rule and do not create or reset settings they cannot read.

If the catalog is unavailable, use Retry. You can still patch an already compatible installation, but the installer will not fall back to an unsupported latest Spotify download. If the patch release itself cannot be loaded, installation stays disabled until Retry succeeds. Uninstall remains available offline.

Spotify downloads use Windows' curl.exe when available, retry once after a five-second delay, then try Go's HTTP client if curl still fails. Without curl, the HTTP client gets two attempts. Every attempt uses the same selected version's URL. HTTP 429 stops client fallback; Retry-After is respected, with longer waits reported for a later manual retry. The activity log includes the URL, download method, HTTP status, and available network/server details. The version-list Retry button remains available after a download failure so you can refresh a stale catalog without restarting the installer.

Partial downloads are discarded between attempts. Downloads must match the catalog's size when provided and parse as a Windows executable before setup runs. Retries can recover temporary failures, but a missing file, persistent server outage, or DNS/network block may still require a later retry or manual installation of the exact required Spotify version. TLS certificate validation stays enabled for both download clients.

Both DLLs, the signature pack, and the settings template come from one pinned BlockTheSpot release. New releases require SHA256SUMS.txt; downloads are checked before installed files change. Spotify's executable version and original Chromium DLL are checked before patching. A fresh stock DLL replaces an outdated backup left behind by a Spotify update. Failed file replacements roll back earlier writes.

Use Copy log when reporting an installer error. After Spotify starts, runtime results are in %APPDATA%\Spotify\blockthespot-status.txt and blockthespot.log. The status report is created by the patch, so check its timestamp when diagnosing a new launch.

Development

Prerequisite (before local build)

Generate the Windows app resources object (required for walk):

go run github.com/akavel/rsrc@v0.10.2 -manifest assets/app.manifest -ico assets/blockthespot.ico -arch amd64 -o app_resources_windows_amd64.syso

Build locally (on Windows)

go build -trimpath -ldflags="-H=windowsgui -X main.installerVersion=v1.0.0" -o BlockTheSpotInstaller.exe .

Cross-build from Linux/macOS

GOOS=windows GOARCH=amd64 go build -trimpath -ldflags="-H=windowsgui -X main.installerVersion=v1.0.0" -o BlockTheSpotInstaller.exe .

If you update the icon PNG

Rebuild the .ico, then regenerate app resources:

convert assets/blockthespot.png -define icon:auto-resize=256,128,64,48,32,16 assets/blockthespot.ico
go run github.com/akavel/rsrc@v0.10.2 -manifest assets/app.manifest -ico assets/blockthespot.ico -arch amd64 -o app_resources_windows_amd64.syso

Tests

go test ./...
go vet ./...

Release pinning/checksums, version selection, preference migration, and installation file tests run on Linux/macOS. Windows CI also exercises rollback with a locked DLL, builds the installer, and runs the full package checks. Fixtures need no Spotify files or network access.

For an optional read-only check against a local patched installation on Windows:

$env:BTS_SPOTIFY_TEST_DIR = "$env:APPDATA\Spotify"
go test -run TestInstalledSpotifyCompatibility -v .

To check release downloads and the live version catalog without installing anything:

$env:BTS_LIVE_DOWNLOAD_TEST = '1'
go test -run TestLiveReleaseAndCatalog -v .

To also download and validate the selected Spotify installer without running it (roughly 150 MB, removed when the test finishes):

$env:BTS_LIVE_INSTALLER_DOWNLOAD_TEST = '1'
go test -run TestLiveSpotifyInstallerDownload -v .

The settings allowlist in settings.go must stay aligned with BlockTheSpot's runtime parser. Add new user preferences there when the patch introduces them; keep signature fields in config.ini.

About

Official installer for BlockTheSpot written in Golang for blocking Spotify ads

Topics

Resources

Stars

178 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages