Skip to content

Build a Windows 7 compatible Single-file AppHost #13356

Description

@BrainSlugs83

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! 😑

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions