General
With .NET Core 3.0-preview8 -- I compiled a standalone exe for Windows 7 (x86) RID using the following command:
dotnet publish -c Release -r win7-x86 -o .\bin\Redist\windows /p:PublishSingleFile=true /p:PublishTrimmed=true /p:DebugType=None
This produces a single .exe file output that runs fine on Windows 10 (x64).
But when I copy this .exe file to a Windows 7 Home Basic (x86) machine, I get the following error message when trying to run it:
The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing from your computer. Try reinstalling the program to fix this problem.
According to this issue: https://github.com/dotnet/core-setup/issues/3220 it looks like this external dependency is possibly the "Windows Universal C Runtime", which can be found at this location: https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows
There does appear to be a download link for Windows 7 (x86), but when you try to install it on said operating system, you get the following message: The update is not applicable to your computer. -- This leads me to believe that it is impossible to run my app on Windows 7 (x86).
Expected Behavior:
-
My app runs on Windows 7 (x86) without having to install anything that does not ship with
the OS. (Many Corporate and Enterprise environments do not have the ability to install
random service packs on their machines without significant IT involvement and overhead.)
- Also, I'd like to avoid dependency issues, e.g. if a user has the wrong version installed, etc.
-
If I do have to install some random service pack, tell me about it and where to download it
instead of a random missing dll notice, as that's a disaster waiting to happen. (A non-technical
user might just google the error message and follow some youtube video's instructions to
download random .dll files from untrusted sites and dump them into the app's folder!)
Other thoughts
- This isn't that tall of an ask. We wrote GUI software for Windows 7 with MinGW 20 years ago,
and it never required any c runtime dlls; everything was statically linkable. (And never more
than 2 MB) -- This is literally just a console app -- if there is some external dependency, just
link it into the executable already! 😑
General
With .NET Core 3.0-preview8 -- I compiled a standalone exe for Windows 7 (x86) RID using the following command:
dotnet publish -c Release -r win7-x86 -o .\bin\Redist\windows /p:PublishSingleFile=true /p:PublishTrimmed=true /p:DebugType=NoneThis produces a single .exe file output that runs fine on Windows 10 (x64).
But when I copy this .exe file to a Windows 7 Home Basic (x86) machine, I get the following error message when trying to run it:
According to this issue: https://github.com/dotnet/core-setup/issues/3220 it looks like this external dependency is possibly the "Windows Universal C Runtime", which can be found at this location: https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows
There does appear to be a download link for Windows 7 (x86), but when you try to install it on said operating system, you get the following message:
The update is not applicable to your computer.-- This leads me to believe that it is impossible to run my app on Windows 7 (x86).Expected Behavior:
My app runs on Windows 7 (x86) without having to install anything that does not ship with
the OS. (Many Corporate and Enterprise environments do not have the ability to install
random service packs on their machines without significant IT involvement and overhead.)
If I do have to install some random service pack, tell me about it and where to download it
instead of a random missing dll notice, as that's a disaster waiting to happen. (A non-technical
user might just google the error message and follow some youtube video's instructions to
download random .dll files from untrusted sites and dump them into the app's folder!)
Other thoughts
and it never required any c runtime dlls; everything was statically linkable. (And never more
than 2 MB) -- This is literally just a console app -- if there is some external dependency, just
link it into the executable already! 😑