PulseAudio Builds for Windows

An up-to-date PulseAudio build for Windows with an installer, service, and other improvements.

Full installer PulseAudio binaries only

pulseaudio-win32

An up-to-date PulseAudio build for Windows with an installer, service, and other improvements.

Features

Limitations

Building

mkdir -p ./build &&
docker build --tag pulseaudio-win32 --build-arg "PAW32_VERSION=$(echo "$(git describe --always --tags --dirty || echo unknown)" | sed -e "s/^v//g")" ./src &&
docker save pulseaudio-win32 |
tar -xOf - --wildcards '*/layer.tar' |
tar -xvf - -C ./build

Troubleshooting

Silent installation

The installer uses Inno Setup 6 and supports the usual flags (e.g. /SILENT, /VERYSILENT).

The following components are available (all are selected by default) and can be passed as a comma separated list to /COMPONENTS=:

The following tasks are available when the service component is selected and can be passed as a comma separated list to /TASKS=:

The included configuration files in the installation directory will be overwritten on install and deleted on uninstall. To preserve your changes, place your custom configuration files in *.pa.d\*.pa and *.conf.d\*.conf.

Uninstalling will remove everything except for custom configuration files in the aforementioned folders.

Notes

While this repository is licensed under the MIT license, the icon and build output is licensed under the LGPL like PulseAudio itself (the PulseAudio build isn't linked to GPL libraries).

Patches

The following patches were created for pulseaudio-win32.

Link Patch Description Upstream Status
Patch win32: Fix duplicate definitions in arpa-inet.h, arpa-inet.c, and poll.h Merged
Patch win32: Use __MINGW_PRINTF_FORMAT instead of __printf__ for MinGW builds Merged
Patch win32: Fix format specifiers for DWORD values Merged
Patch win32: Fix privlibdir for running on Windows Merged
Patch waveout: Fix compile warnings Merged
Patch win32: Fix WSAStartup issues Merged
Patch cli: Fix crash when using .include with an empty directory Merged
Patch client: Make auto_connect_localhost respect HAVE_IPv6 and OS_IS_WIN32 Merged
Patch client-conf: Enable auto-connect-localhost by default N/A
Patch system.pa: Tweaks for custom build N/A
Patch cli-command: Replace config dir with toplevel for .include on win32 Merged
Patch win32: Fix minimum Windows version for inet_{ntop,pton} Merged
Patch win32: Fix environment variables set with pa_{unset,set}_env not taking effect Merged
Patch daemon: Add support for running as a service on win32 Merged
Patch build-sys: meson: Merge system_conf config data from default_conf Merged
Patch win32: Misc Unix socket fixes Merged
Patch system.pa: Tweaks for custom build with unix sockets N/A
Patch win32: Use DACLs when setting socket permissions Merged
Patch win32: Add DACLs for directories created by system daemon Merged
Patch build-sys: meson: Fix building without GIO Not Submitted