Syncthing Windows Setup v1.27.2

Syncthing Windows Setup is a lightweight yet full-featured Windows installer.

Documentation and download: GitHub - Bill-Stewart/SyncthingWindowsSetup: Syncthing Windows Setup

The only big change from the previous version is that Setup now requires Windows 10/Server 2016 or later, due to the fact that executables compiled using Go 1.21 and later (such as Syncthing 1.24.0 and later) require Windows 10/Server 2016 or later.

2 Likes

It’s actually Syncthing v1.27.1 and later :slight_smile:. I think this is because Windows releases specifically were kept being compiled with Go 1.20 longer than releases for other OSs.

According to the Versions & Releases — Syncthing documentation page, Syncthing 1.23.7 was the last version compiled using Go older than 1.21.0 (which requires Windows 10/Server 2016 or later). So even if Syncthing 1.24.0 and newer happens to “work” on a downlevel Windows version, I would maintain it’s definitely not recommended, because Go 1.21.0 and newer is specifically documented as requiring Windows 10/Server 2016.

1 Like

Officially go 1.21.0+ doesn’t support Win 7 anymore, that’s correct. However, in practice that only means “we’ve stopped testing with it”, which isn’t the same as “it won’t work”.

It’s go 1.21.5 (Syncthing crashing after updating to v1.27.1 / Windows 7 / runtime.asmstdcall() - #2 by calmh) that happened to include a code change switching to a CNG function that doesn’t exist in legacy builds of Microsoft’s CryptoAPI. That’s what caused an effective “does not work anymore”. Of course there may be even more incompatibilities that haven’t manifested into something noticeable before things broke.

TL;DR: The last syncthing version that supported Win 7 was 1.23.7. The last version that is known to work for Windows 7 is 1.27.0.

I wouldn’t bet on known to work. It might work, and it might not, depending on which code paths that get exercised and which APIs get called. I’m going to stick to my recommendation. You are free to disagree of course, but I’m going to stick with what’s specifically documented.

For the record, the releases table isn’t entirely precise for all platforms, either. It represents the linux-amd64 situation because that’s what the update script checks, and sometimes different platforms get built with different Go versions in the transition.