dotnet / sdk

Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI
https://dot.net/core
MIT License
2.73k stars 1.07k forks source link

Add a third way of distributing applications: bootstrapped deployment #34079

Open CanePlayz opened 1 year ago

CanePlayz commented 1 year ago

Basically, I'd love to see an implementation of Tyrrrz/DotnetRuntimeBootstrapper.

The Readme over there perfectly explains what kind of problem we're currently facing and how that problem can be solved. Official support for bootstrapped deployment as an alternative to framework-dependent and self-contained deployment would be a great addition.

I wasn't quite sure into which repository this issue belongs, so if this isn't the right place, please let me know.

vitek-karas commented 1 year ago

This is actually pretty tricky to do correctly everywhere. Especially on Linux figuring out where to download from and how to install is non-trivial. It's also not really doable automagically because it might require sudo.

I assume the ask is predominantly for Windows GUI apps, right?

CanePlayz commented 1 year ago

Well, CLI and Linux users should be technical enough to install the Runtime themselves.

Jokes aside, I totally understand your points. It could also apply to CLI apps, I guess, but honestly, I just wanted to throw this in the room. I'm not experienced with the technical side of it, so feel free to with this issue whatever you want.

vitek-karas commented 1 year ago

Thanks a lot for bringing it up.

I was mostly curious what is your scenario when you think about this. Knowing what problem you're trying to solve will help us think about this the right way and hopefully come up with a good answer. I'm sorry - I should have started with that question first.

CanePlayz commented 1 year ago

All good. And whoops, I thought I had put the right link to the repo into the issue. I'll just copy the text from there because if perfectly describes the drawbacks of current methods and how they can be solved with bootstrapped deployment:

Currently, .NET offers two main ways of distributing applications: framework-dependent deployment and self-contained deployment. Both of them come with a set of obvious and somewhat less obvious drawbacks.

Framework-dependent deployment:

Self-contained deployment:

Bootstrapped deployment: