dotnetup walkthrough - ux & graphical improvements#53464
dotnetup walkthrough - ux & graphical improvements#53464nagilson wants to merge 50 commits intodotnet:release/dnupfrom
dotnetup walkthrough - ux & graphical improvements#53464Conversation
We talked about 'shadowing' `dotnet` commands to allow users to ensure `dotnetup` always works until the product is fully integrated with `dotnet.exe` itself - such that the installers and visual studio are not able to break scenarios that rely on `dotnetup`. I think that is important for us to provide. This document is a first-pass on what it'd be like to actually implement that. The security portion in particular is interesting, and I'm less compelled by the proposal after trying to write it all out. Nonetheless, I wanted to see where it would take us were we to implement it. Which, I had to do some of the partial implementation so I could reason with how this would work, but that's not included here. That's in the branch `nagilson-shadow-dotnet`. I'd appreciate having our team chat about this doc and whether we still want to do this or not, or whether there are changes that need to be made at a higher level.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…tnetup-dotnet-impl-mrc
1. Running 'dotnetup' should initiate the walkthrough instead of exiting 2. Double-clicking the dotnetup executable should not make it immediately bail out 3. Add a dotnetup.config.json file which stores the decisions users made in the walkthrough so we don't ask every time 4. Add interactivity to selecting the default install option and add the dotnetup dotnet option 5. Don't ask the user every time what version to install 6. Don't ask the user every time where to do the install 7. Start predownloading in the walkthrough for what we'll need to install later 8. Add the dotnetup walkthrough command to enable changing the configuration again later 9. Fix ordering and grouping of dotnetup --help 10. Improve spacing/wording/padding and remove instances of raw json data / data structures being dumped into the terminal
This reverts commit 97265bd.
This analyzer helps prevent copilot from writing functions which are too long so it will naturally break them up into separate pieces.
Add dotnetup theme command to add themes Unify colors and make colors align with .net branding (purple colors) Improvements to admin installs walkthrough Improvements to selection mode ui Attempt at introductory box with dotnet bot graphic - seems buggy atm Adds concurrent runtime installs
Also adds concurrent sdk install support scaffolding fixes bug with path replacement fixes bug with needing to enter to complete (bad design)
might be a problem if other text appears mid way through the install
…theres a lot of installs
…sity for subcomponent outputs in test
We cant impelement our own as spectre.console is sealed in this class, there are too many optoins, we should instead defer the install of these installs to the end after setup of dotnetup so someone can get working. I tried to keep the code from before because I thought that formatting was clear and it is easier to make a y/n decision in this regard.
src/Installer/dotnetup/Commands/Runtime/Install/RuntimeInstallCommand.cs
Outdated
Show resolved
Hide resolved
src/Installer/dotnetup/Commands/Runtime/Install/RuntimeInstallCommand.cs
Outdated
Show resolved
Hide resolved
| DotnetInstallRootConfiguration currentDotnetInstallRoot, | ||
| string resolvedInstallPath) | ||
| { | ||
| if (DotnetupUtilities.PathsEqual(resolvedInstallPath, currentDotnetInstallRoot.Path)) |
There was a problem hiding this comment.
All this function is supposed to do is decide whether or not we need to replace the default install. Please do not have any prompting or outputs.
| /// Determines whether the installation should be set as the system default. | ||
| /// Checks the saved config first; only shows prompts when the config is absent. | ||
| /// </summary> | ||
| private static bool DeriveSetDefaultInstall( |
There was a problem hiding this comment.
This logic is hard to follow, bloated, and includes differing conventions in the code. Default install could mean modifying the profile or it could mean modifying system PATH. We should only interface with a variable that contains the path preference from the user, which comes from a function in the walkthrough that gets the config or prompts if necessary. Then the walkthrough or somewhere else should have a function which returns whether to replace PATH (which is really about the path preference on windows being 1 value) and a function which returns whether to convertSystemInstalls (rather than the term 'admin') which returns that the path option is not != isolated.
src/Installer/Microsoft.Dotnet.Installation/InstallComponent.cs
Outdated
Show resolved
Hide resolved
src/Installer/Microsoft.Dotnet.Installation/InstallComponent.cs
Outdated
Show resolved
Hide resolved
|
Let's remove the 'theme' command for now and we can add that later, it's a little too much to add onto all of this. We can create a .md file as a github issue that links to the commit we have here with the theme command code as a great launch point. Let's also remove the dotnetup dotnet commits from this history / code so stuff is properly isolated. |
|
This is great, lots of nice improvements. I love the UI polish! I tried it out a bit and here's my feedback so far:
|
Changes
dotnetupwalkthrough #52643)Resolves Separate
dotnetupinteractive / noninteractive modes #51584)Resolves DNUP Admin Installs -> Local Installs #51101)
dotnetup runtime installinstalling multiple things #52679)