Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Developers can confidently generate single file apps that work for the supported target platforms #43540

Closed
10 of 12 tasks
samsp-msft opened this issue Oct 16, 2020 · 16 comments
Closed
10 of 12 tasks
Assignees
Labels
area-Single-File Priority:0 Work that we can't release without Team:Runtime User Story A single user-facing feature. Can be grouped under an epic.
Milestone

Comments

@samsp-msft
Copy link
Member

samsp-msft commented Oct 16, 2020

Single file apps are a journey, we progressed from a self-extract approach in 3.x to a superhost in 5.0, but there is more to be done to complete the story. Single file apps need to work for every .NET workload and app framework where the target platform allows for it (to reduce developer perceived complexity of seeing several output files vs one output file), including:

  • Winforms
  • WPF
  • MAUI
  • ASP.NET including MVC, Razor Pages, Server-side Blazor, WebAPI, gRPC etc.

Goals:

  • Predictability: Developers should be aware of what will and won't work in a single file experience
    • Ensuring that referenced libraries are also not going to produce issues
  • Completeness for specific workloads

Work Items

@samsp-msft samsp-msft added area-Meta User Story A single user-facing feature. Can be grouped under an epic. labels Oct 16, 2020
@Dotnet-GitSync-Bot Dotnet-GitSync-Bot added the untriaged New issue has not been triaged by the area owner label Oct 16, 2020
@samsp-msft
Copy link
Member Author

samsp-msft commented Oct 16, 2020

@agocke - we need to flush out the list of work items

@samsp-msft samsp-msft assigned agocke and unassigned jeffschwMSFT Oct 16, 2020
@cathysull cathysull added the Priority:0 Work that we can't release without label Oct 30, 2020
@samsp-msft samsp-msft added Epic Groups multiple user stories. Can be grouped under a theme. and removed User Story A single user-facing feature. Can be grouped under an epic. labels Nov 9, 2020
@samsp-msft samsp-msft changed the title User Story: Developers can confidently generate single file apps that work for the supported target platforms Epic: Developers can confidently generate single file apps that work for the supported target platforms Nov 9, 2020
@danmoseley
Copy link
Member

@agocke do you want to create child stories eg for the proposed analyzer? We have a dependency on it presumably.

@agocke
Copy link
Member

agocke commented Nov 10, 2020

Analyzer already exists and shipped in .NET 5 :)

I'll create a tracking issue for the few improvements we would like to make, although many will not require changes to the libraries.

@danmoseley
Copy link
Member

I'll create a tracking issue for the few improvements we would like to make, although many will not require changes to the libraries.

That sounds great - anything to see the work likely on us.

@marek-safar marek-safar added User Story A single user-facing feature. Can be grouped under an epic. and removed untriaged New issue has not been triaged by the area owner Epic Groups multiple user stories. Can be grouped under a theme. labels Nov 27, 2020
@ghost
Copy link

ghost commented Dec 3, 2020

Tagging subscribers to this area: @agocke, @vitek-karas
See info in area-owners.md if you want to be subscribed.

Issue Details

Single file apps are a journey, we progressed from a self-extract approach in 3.x to a superhost in 5.0, but there is more to be done to complete the story. Single file apps need to work for every .NET workload and app framework where the target platform allows for it (to reduce developer perceived complexity of seeing several output files vs one output file), including:

  • Winforms
  • WPF
  • MAUI
  • ASP.NET including MVC, Razor Pages, Server-side Blazor, WebAPI, gRPC etc.

Goals:

  • Predictability: Developers should be aware of what will and won't work in a single file experience
    • Ensuring that referenced libraries are also not going to produce issues
  • Completeness for specific workloads

Work Items

  • Flush out testing for each of the scenarios
  • Extend superhost beyond Linux Superhost for Windows & Mac #43071
    • Create superhost for Windows
    • Create superhost for MacOS
  • Enable debugging of superhost apps with Visual Studio
  • Tooling & Experience
    • Add analyzers for common issues that occur with single file apps, such as file path resolution from the assembly
    • Integrate the analyzers into Visual Studio
    • Add attribute to decorate places which are incompatible with single file
  • Improve single-file integration with linker Improvements to single-file analysis #44488
Author: samsp-msft
Assignees: agocke, samsp-msft
Labels:

Priority:0, Team:Runtime, User Story, area-Single-File

Milestone: -

@danmoseley danmoseley changed the title Epic: Developers can confidently generate single file apps that work for the supported target platforms Developers can confidently generate single file apps that work for the supported target platforms Dec 3, 2020
@danmoseley
Copy link
Member

@agocke I think this should be marked Committed (in the .NET 6 project). It has committed children. Otherwise it will get reviewed..

@jeffschwMSFT
Copy link
Member

Thanks Dan. I have done at least 3 scans of the epics/themes/user stories, but I seem to keep finding new ones

@greatoceansoftware
Copy link

Do single file applications need to be code signed? What is the user experience for non-signed single file applications?

@vitek-karas
Copy link
Member

@greatoceansoftware From .NET's point of view they don't need to be signed. Specific target platforms might have additional requirements though (for example macOS). The apps behave the same whether they are signed or not. .NET itself doesn't look at the signature, it's typically the target OS which does that.

@greatoceansoftware
Copy link

Thanks. I have a couple of machines I will test. Seems like there should be an article in the MS/.NET documentation somewhere that describes the user experience of single file installs (for comparison, there is adequate information on ClickOnce), but I haven't found one yet.

@vitek-karas
Copy link
Member

@greatoceansoftware Just so that I understand your request: what do you mean by "experience of single file installs"? Single-file is a publish option, it's not a deployment technology (unlike ClickOnce which is exactly that).

@greatoceansoftware
Copy link

I'm asking what does a user see when they download and try to run a single file application for the first time? Especially in terms of security warnings with signed/unsigned code. I can test it here, just not quite ready yet. Sorry, it's been almost a decade since I published to anyone except myself and I'm sure things have changed a bit. Most of my apps are internal use only.

@vitek-karas
Copy link
Member

There's really no difference in that experience between single-file or non-single-file, so what you're asking about is a general experience of running a .NET app - which is probably very similar to running any "freshly" compiled app (ignoring dependency problems).

@greatoceansoftware
Copy link

Well, I can make a long story long... ;-) I released my last commercial application circa 2013, and used the Lindersoft SetupBuilder (similar to InstallShield). I signed my code and the installer. As a small developer, this was a real pain to obtain the certificate, and compile .NET setup packages, and keep users current with different newer versions of the software. Despite that, the installer did a nice job of ensuring the user had a good first experience (no scary installation warnings).

Fast forward to now, it seems there's a possibility to make life simpler at least on the developer end with single file installs. But I can't find any documentation (similar to ClickOnce documentation) on what the user will experience if they try to run one of these single file applications. So my only recourse is to test it myself (not a big deal), but I only have so many machines where .NET 5 has never been installed (with various flavors of Windows 10) to see how it will/should react with different publish options (sign/unsigned, framework dependent/self-contained, etc.).

I have colleagues who will help me beta test, but I feel like there should be some further guidance in the documentation about the effects of our publish choices on end users. Thanks, and hope that made sense.

@agocke agocke added this to the 6.0.0 milestone Jul 21, 2021
@agocke agocke modified the milestones: 6.0.0, 7.0.0 Aug 16, 2021
@agocke
Copy link
Member

agocke commented Aug 16, 2021

This is mostly done -- we have a single file analyzer now, which can be enabled with <EnableSingleFileAnalyzer>true</EnableSingleFileAnalyzer>. The analyzer is enabled in dotnet/runtime and winforms. Remaining work is mainly on enabling the analyzer in more places.

@agocke
Copy link
Member

agocke commented Jul 28, 2022

Closing as complete.

@agocke agocke closed this as completed Jul 28, 2022
@ghost ghost locked as resolved and limited conversation to collaborators Aug 27, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-Single-File Priority:0 Work that we can't release without Team:Runtime User Story A single user-facing feature. Can be grouped under an epic.
Projects
None yet
Development

No branches or pull requests

9 participants