streamlink/windows-builds
Windows installer and portable archive builds for Streamlink.
Please see Streamlink's install documentation for more details and different install methods.
The windows-builds changelog can be found here.
Contents
Flavors
- Latest Python, x86_64 (64 bit) - recommended
- Latest Python, x86 (32 bit)
- Python 3.8, x86_64 (64 bit) - for Windows 7
- Python 3.8, x86 (32 bit) - for Windows 7
Python 3.8 is the last Python branch which still supports Windows 7.
Download
Stable releases
Builds of official Streamlink releases.
Download from the releases page.
Nightly builds
Built once each day at midnight UTC from Streamlink's master branch.
This includes the most recent changes, but is not considered "stable".
Download from the build-artifacts of the scheduled nightly build runs (requires a GitHub login).
Notes
Installers
- When installing, the
bin
subdirectory of the installation path gets added to the system'sPATH
environment variable, so thestreamlink.exe
andstreamlinkw.exe
executables can be resolved without having to specify the absolute or relative path to these files. - An entry gets added to the system's list of installed software, and an uninstaller gets generated.
- When installing, the
pkgs
subdirectory gets deleted recursively before unpacking any files, to ensure that old and unsupported python package files of previous installations don't exist when upgrading without uninstalling. - A default config file gets written to
%APPDATA%\streamlink\config
if it doesn't exist. - The
ffmpeg-ffmpeg
argument in the config file always gets updated to the current install-location. - Python modules not part of the standard library will be byte-compiled after installation.
Portable archives
- The
bin
directory with thestreamlink.exe
andstreamlinkw.exe
executables won't be added to thePATH
environment variable. - Since no config file will be generated either, users will need to create one themselves, including the
ffmpeg-ffmpeg
argument. Otherwise,--ffmpeg-ffmpeg
needs to be set on the command line to enable muxed output streams. - Python modules not part of the standard library will be byte-compiled upon first execution.
Additional notes
Both the embedded Python builds and FFmpeg builds are unofficial and unsigned, as we're building them ourselves. Due to this circumstance, certain antivirus programs might trigger false positive alerts. The sources, build instructions and build logs can be read and observed in the repositories linked above.
Developer notes
Build requirements
- GNU/Linux environment
- git
- Python 3.8+ and the most recent version of pip
- virtualenv
- pynsist
==2.8
- distlib
==0.3.6
- freezegun
- NSIS
- jq
- gawk
- Imagemagick
- Inkscape
How to
The build configurations can be found in the config.json
file. Here, the default Streamlink source and version are defined that will be used when building, in addition to assets, and most importantly, the various build flavors.
The installer.cfg
file defines the pynsist configuration, and the installer.nsi
file is used as an extension for pynsist's default NSIS template. portable.json
on the other hand defines the configuration for the portable builds.
Each build flavor includes the source of an embedded Python build and the fixed set of Streamlink's dependency versions plus checksums for that specific build (Streamlink doesn't provide its own dependency lockfile).
In order to get an update for the dependency JSON data of a specific build flavor, run
./get-dependencies.sh "${FLAVOR}" "${GITSOURCE}" "${GITREF}"
with GITSOURCE
and GITREF
being an optional override.
Building the installers and portable archives works the same way, by running
./build-installer.sh "${FLAVOR}" "${GITSOURCE}" "${GITREF}"
./build-portable.sh "${FLAVOR}" "${GITSOURCE}" "${GITREF}"
with GITSOURCE
and GITREF
being once again optional overrides.
Building the installer and portable archives requires an activated virtual Python environment.
Successfully built installers and portable archives can be found in the ./dist
directory. NSIS unfortunately doesn't support reproducible builds, so the checksums of the installers will always vary. The portable archives however are reproducible if the SOURCE_DATE_EPOCH
env var is set.