I experienced that after 1.12.17 increased the minimum supported Windows Version. Both the go binary itself and binaries created by it ceased working and Windows only reports “xyz.exe is not a valid win32 application”
I guess this is related to this note in the changelog:
The Windows version specified by internally-linked Windows binaries is **now Windows 7 rather than NT 4.0**. This was already the minimum required version for Go, but can affect the behavior of system calls that have a backwards-compatibility mode. These will now behave as documented. Externally-linked binaries (any program using cgo) have always specified a more recent Windows version.
(Retrieved from https://golang.org/doc/go1.13#windows)
Can someone explain to me what “internally-linked” means AND which information in the binary contains the version relevant parts (is it a PE Header Information) ?
Now for the usual disclaimer
I know that Windows 8.1 is on Extended support and Windows 7 is EOL and that everyone using it and its predecessors Vista and XP should burn in hell. But I need to update software that stills runs on hardware that can’t be easily updated/replaced