How to best retrieve installed .NET Desktop Runtime versions? - c#

I need to determine programmatically (c#) if a certain .NET Desktop Runtime version is installed on the system.
One option that I found was to check the version in the registry like this post suggests. However, this will only retrieve the latest version installed. With ASP.NET Core versions can for example be found in the registry here: SOFTWARE\Microsoft\ASP.NET Core\Shared Framework
System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription;
Will only retrieve the version of the framework the application is running on.
The official way seems to be using the command "dotnet --list-runtimes" (documented by Microsoft here). This will require that a cmd process is started from the application.
Is there another possible way of retrieving the currently installed .NET Desktop Runtime versions?

Not a great way but you can check if .NET install folders exist in the system. For .net runtime the install folder is -
C:\program files\dotnet\shared{runtime-type}{version}\

Related

.NET Desktop Runtime is required before installation

I've developed an application in .NET 5.0, also, I've a Setup Project to install this application in my clients.
My steps are:
1.- Publish the .NET 5.0 Application.
2.- Compile the Setup project.
3.- Install the setup.exe generated in "2" in the client.
But when I try to install the program in my client, windows says "This installation requires the 5.0.0(x64) version of .NET Desktop Runtime... So I've to download and install the SDK in every client.
My question is: There is some way to avoid this SDK installation? Can I embeed the .NET Desktop Runtime in the .NET 5.0 App or in the Setup Project?
Thanks in advance.
See .NET application publishing overview, specifically publishing a self-contained application. That way all necessary framework files will be included in your application, and you will not the framework to be installed. This will increase the disk requirement a bit if .Net 5 is already installed, since some files will be duplicated.
The alternative is to bundle the the .Net framework installer in your installation script. This will cause the setup-file to be quite a bit larger, unless the script downloads the framework on demand. But it may save some disk space in case there are multiple applications that use .Net 5.
Go on projet Menu/ projetct properties / publish / require components / uncheck you frameWork .

Creating an exe for a Windows standalone application using C# in Visual Studio 2015

I have created Sales Management System using C# and MS SQL Server 2012. This is working fine. All I want to know in how can I create an exe so that this can be installed in another machine without any .NET Framework.
e.g. it should say like SalesManagementSystem.exe, and I should be able to install it in any machine.
Just download the Setup project templates and create an installer:
https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2015InstallerProjects
See my extensive guide here on how to make an Installer (one that upgrades itself as well):
Install to same path when upgrading application
A .Net application will never run without the corresponding framework installed. But depending on the target OS the framework is already installed. Please check the release history at wikipeda. There you can see which .Net version is already installed in which windows version.
If you want to deploy a single executable you have to embed all your depending assemblies into your executable as a resource (plenty of questions and answers are already at SO) and load them by overwriting the AssemblyResolve event.
If you want to create a windows installer take a look at WiX.
You cannot just skip the .NET Framework on the target machine - it is needed to run your program. The exe file, produced by the C# compiler contains MSIL, which is understood by .NET Framework, as opposed by the destination OS - be it Windows or any other.
Having that said, your best bet is to write an installer for your app and
distribute the .NET Framework distribute the .NET Framework along with it. When launched, the installer might check what is the installed version of the .NET framework on the target machine (if any) and respond appropriately by installing whatever it is needed for your application.
You can use WiX to author an installers.

.NET Framework - Installing the application

I want to make an application (windows application) using C# and .NET Framework 3.5.
I want to make the install the application. I want the installation to determine - whether the user has the framework in the system. If the user does not have a framework - I want to install it.
How to create an installation of application with NET Framework 3.5?
If you use something like ClickOnce to install your application this will happen automatically. When you set it up it determines which version of .NET is required for your application. It doesn't include the required version in the installer - so your installer says the same size regardless - but puts in code that will install the correct version from Microsoft as required.
You could also use the Windows Installer XML toolkit, which contains ways to determine whether the required .NET version is installed. Also, you get an MSI installer.
Another way would be to use InnoSetup. You can write code using the integrated Pascal script interpreter which checks for the installed framework version.
The Installer project type that comes with "higher" versions of Visual Studio also contains ways to make the .NET Framework a requirement.
I've worked with all three of them and can tell you: it works. There may be other ways, like NSIS, but I haven't used them.

.net framework 4.0 application run from USB drive

I need to put my C# application onto a usb drive. It needs to be executable from there.
The problem is that it requires .net framework 4.0 to run (or possibly 3.5 - it uses OpenXML to open, modify and save .docx word documents, I'm not sure if its compatible with 3.5).
Having the program on the USB drive means there won't be an installer, which in turn means that I can't build in the prerequisites check that normally says "You need .net framework 4.0... install now?".
Is there any way I can build a check in to the application prior to the default error message from Microsoft and install .Net framework 4.0 from an installer on the USB drive (see: Where I can download the REAL Full .Net Framework 4 Standalone Installer? for links to .net frameworks installers).
I realise this question is a duplicate of Installing .NET framework from USB drive when necessary however, I don't really understand the question and on looking up ClickOnce Deployment I'm not sure how that can help me at all.
Thank you.
You can have a script in autorun that will check if there is a valid .NET and install it and then it'll run the app
vbscript to check if .net 2.0 is installed

Install (activate) .NET 3.0 Framework with an application in Vista

if i have an application that requires .net 3.0, what is the proper way to make an install file out of it, that will install the application and then install (activate) the .net 3.0? i tried publishing my project through visual studio 2008 (c#) which created the installer and the .net activator, but it didn't work properly on computers other than my own, when the .net 3.0 was not present.
i though i could bundle http://www.microsoft.com/downloads/details.aspx?FamilyID=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=en with the application, which would download and install .net 3.0 if needed. this could work ok on non-vista systems, but on vista, the redist package reports an error: you must use turn windows features on or off in the control panel to install or configure microsoft .net framework 3.0
The key is to install the .net framework if it is not there - regardless of the OS. Also, just go ahead and install the .Net 3.5 framework if you are going to install one of them.
Anyway, if you are using the built in installer that comes with Visual Studio, this is a real pain in the butt. You would be better off, and saner if you went with a different installer package. Install Shield, Wise, InstallAware will all do it for you. I believe you can also find better guidance on how to do this with Wix and NullSoft Installer.
http://www.improve.dk/blog/2007/06/10/creating-a-dotnet-bootstrapped-installer-using-nsis
How can I detect .NET 3.5 in WiX?
Windows Vista has already .NET Framework 3.0 installed.
Now if you wanted for example to have .NET Framework 3.5 installed you could create a Setup Project and then right click and go to View->Launch Conditions. There will be a .NET Framework launch condition where you can specify the required version of the framework and an URL to download from.
Here's a post about Launch Conditions in a Setup Project.

Categories