Skip to content

Commit 27475af

Browse files
committed
docs: add README.md
1 parent 2e3b295 commit 27475af

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

README.md

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
streamlink/windows-installer
2+
====
3+
4+
Windows installer builds for [Streamlink](https://github.com/streamlink/streamlink).
5+
6+
Please see [Streamlink's install documentation](https://streamlink.github.io/install.html) for more details and different install methods.
7+
8+
9+
## Installer contents
10+
11+
- [an embedded Python environment](https://github.com/streamlink/python-windows-embed)
12+
- [Streamlink and its dependencies](https://github.com/streamlink/streamlink)
13+
- [FFmpeg, for muxing streams](https://github.com/streamlink/FFmpeg-Builds)
14+
15+
16+
## Flavors
17+
18+
- Python 3.10, x86_64
19+
- Python 3.10, x86
20+
- Python 3.8, x86_64
21+
- Python 3.8, x86
22+
23+
[Python 3.8](https://endoflife.date/python) is the last Python branch which still supports [Windows 7](https://endoflife.date/windows).
24+
25+
26+
## Download
27+
28+
### Stable releases
29+
30+
Builds of official Streamlink releases.
31+
Download from the [releases page](https://github.com/streamlink/windows-installer/releases).
32+
33+
### Nightly builds
34+
35+
Built once each day at midnight UTC from Streamlink's master branch.
36+
This includes the most recent changes, but is not considered "stable".
37+
Download from the build-artifacts of the [scheduled nightly build runs](https://github.com/streamlink/windows-installer/actions?query=event%3Aschedule+is%3Asuccess+branch%3Amaster) (requires a GitHub login).
38+
39+
40+
## Notes
41+
42+
The installers perform the following tasks:
43+
44+
- The `bin` subdirectory of the installation path gets added to the system's `PATH` environment variable, so the `streamlink.exe` and `streamlinkw.exe` executables can be resolved without having to specify the absolute or relative path to these files.
45+
- An entry gets added to the system's list of installed software, and an uninstaller gets generated.
46+
- 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.
47+
48+
49+
## Additional notes
50+
51+
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.
52+
53+
54+
## Developer notes
55+
56+
### Build requirements
57+
58+
- GNU/Linux environment
59+
- [git](https://git-scm.com/)
60+
- [Python 3.7+](https://www.python.org/) and the most recent version of [pip](https://pip.pypa.io/en/stable/)
61+
- [virtualenv](https://pypi.org/project/virtualenv/)
62+
- [pynsist](https://pypi.org/project/pynsist/) >=2.8
63+
- [distlib](https://pypi.org/project/distlib/) >=0.3.3, !=0.3.4
64+
- [NSIS](https://nsis.sourceforge.io/Main_Page)
65+
- [jq](https://stedolan.github.io/jq/)
66+
- [gawk](https://www.gnu.org/software/gawk/)
67+
- [Imagemagick](https://imagemagick.org/index.php)
68+
- [Inkscape](https://inkscape.org/)
69+
70+
### How to
71+
72+
The installer 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 installer assets, and most importantly, the various build flavors.
73+
74+
The `installer.cfg` file defines the pynsist configuration, and the `installer.nsi` file is used as an extension for pynsist's default NSIS template.
75+
76+
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).
77+
78+
In order to get an update for the dependency JSON data of a specific build flavor, run
79+
80+
```sh
81+
./get-dependencies.sh "${FLAVOR}" "${GITSOURCE}" "${GITREF}"
82+
```
83+
84+
with `GITSOURCE` and `GITREF` being an optional override.
85+
86+
Building the installer works the same way, by running
87+
88+
```sh
89+
./build.sh "${FLAVOR}" "${GITSOURCE}" "${GITREF}"
90+
```
91+
92+
with `GITSOURCE` and `GITREF` being once again optional overrides.
93+
Building the installer requires an activated virtual Python environment.
94+
95+
Successfully built installers can be found in the `./dist` directory. NSIS unfortunately doesn't support reproducible builds, so the checksums will always vary.

0 commit comments

Comments
 (0)