Create Setup file for .Net Core Apps - c#

In my .Net Core App I want to create a setup file (.msi), but I struggle with the correct configuration.
When I simply take all files from my debug folder and put them inside my "Application Folder" it works, but that's not how Microsoft (I guess) and me want it to work.
Mainly I have two problems:
When I take the "Primary output" of my project and create a Shortcut to this, the Shortcut tries to start the .dll instead of my .exe file.
When I create the .msi file and install my project there is no "runtimes" folder and I manually need to create it inside my "Application Folder". Is there a way to automatically include it into my .msi?
Thanks for your advice!

I did some tests and I think I can reproduce your first problem. According to this document: Workflow changes for .NET Core 3.1, the correct output for .NET Core project seems changed. Though the document is for .NET Core 3.1, I think it also works for .NET Core 5.0.
So, please try to select Publish Items instead of choosing Primary output when you adding project output.
For the second problem, I am not very sure. Maybe Add > File.../Folder can work.
I suggest you also start a thread here: Microsoft Visual Studio Installer Projects - Q&A to ask this question.

If you want to be able to install the necessary run time for a framework-dependent .NET Core 3.1 app, you can do this using prerequisites.
Open properties dialog of your installer project.
open the Prerequisites dialog and Select prerequisites.

Related

how to make a standalone exe file

I started learning c# a couple days ago and want to send my first program to my friend but as a standalone exe file that can be shared through google drive.
I've found several solutions but I coudln't understand any of them. Is there a simple solution to compile an exe file or a standalone app in visual studio 2019 that would just work when you open it
One annoying thing with .NET Core is that when you build it in Visual Studio it makes lots of separate files, which is annoying for portability.
A fix to this is to right-click on your project in Solution Explorer and click Publish. Select Folder Profile, give it a name and save it.
After that, you will need to edit the target runtime option, and set it to win-x86. After that, you should see a dropdown box at the bottom of the dialog, expand it and check 'Produce a single file'.
Then you can hit Publish and it should produce a single file.
NOTE: This does not work in .NET Framework, only .NET Core.
All you gotta do is simply build the project within Visual Studio, once that's done. Go to your projects folder and go into bin/Release (or Debug if you've selected debug build)/myprogram.exe. It should make a standalone .exe file!
Maybe this could also help you.
Official Documentation: Compiling Building in Visual Studio

Cross-compilation with Visual Studio 2019

I'm using VS2019 under Windows 10 and I'm trying to figure out how to compile for the non-Windows platforms. I'm aware that only some languages support cross-compilation (C# being one of them). So I decided to start off with one of Microsoft's own examples (the Console App for .NET Core). When asking VS2019 to create the Console project, it shows me various image icons which suggest that it'll be buildable for Windows, Linux and macOS - but no matter what I do, I can only make it build the Windows target.
After a bit of research I realized that I need to add this line to my C# project file:-
<RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.10-x64</RuntimeIdentifiers>
but even after adding that line (and re-loading / re-building the project) it staunchly refuses to build anything apart from the Windows target. Over on CodeGuru, one of the devs there tried it for me (under VS2017) and managed to make it work - but I've tried it in VS2019 and also VS2015 and I can't make it work in either of them. Any ideas what I might be doing wrong??
[Edit...]
Thanks Magnetron - if I press Build->Publish I see a totally different dialog from the one you're seeing (and it's the same in both VS2015 and VS2019):-
Even if I follow the Next or Finish buttons I never see the Create Profile option :(
Go to Build > Publish, select Folder and click on Create Profile
Then Click on Edit and change the Deployment Mode to Self-contained. At last, you can specify the target OS in Target Runtime
You can create multiple profiles for each OS, and publish each one individualy as needed.
Edit:
The posted publish dialog is for a .Net Framework Console app, not an .Net Core one. The .Net framework is Windows only, you have to create your project as a .Net Core
Woohoo!! I just ran the VS2019 installer to remind myself how to uninstall (in preparation for tomorrow) and it told me there's already a 16.3.5 available. 16.3.4 only got installed a few hours ago but for the hell of it, I figured I might as well try the newer version - and it's now working !!!

WinForms Application not opening on other computers

I have made a WinForms application that uses DevExpress (trial) but some of my friends can open it but some others can't. You can find the source here: https://github.com/JujharSingh/Exploit-Studio
I have also made sure that I didn't delete any DLL files while packaging.
Make sure you right click on all the required files in solution explorer and include them so when you publish your project, they're deployed with the project.
Also make sure you've the following option configured correctly:
You wouldn't have to worry about .Net framework version as the published setup automatically installs missing .Net files.
Finally, goto your project Properties -> Publish -> Application Files and mark the required files as required and include them:
And on the same page, tick the required prerequisites:
Finally, make sure you're giving them the published version, not the copied executable file. Hope this helps

how can I export a C# application from Visual Studio 2012 to run in other computers?

I just made my first C# application in Visual Studio 2012 and I want to export it in some way so other people could use it in they computers (including computers without Visual Studio 2012). How can I do it? I'm new at C# and I couldn't find anything that I could understand. Can someone explain or indicate some site with a good (and maybe didactic) explanation on how it works? I have only made C/C++ programs by now, and they I just needed the .exe file, but, based on what I could find, I need something else to send a C# program to others to use.
Sory for the bad English and thanks for those who help.
Right-click the project in VS 2012, and choose Publish... from the context menu. Publishing to a file lets you create an installer:
Choose a location in the file system to which you would like to save the installer
Click [Finish]
Wait for the publishing operation to complete
A Setup.exe installer file will be created at the location that you have selected in the first step of the publish wizard. Share the installer with the people to whom you would like to give your application.
After building your project, you will find an EXE file in bin\(Debug or Release)
Check also the .net framework that it is required in order for c# apps to run. You can find what framework your app is build in projext properties. If the target computer has an old os (XP) maybe the .net framework needs also to be installed
You need any computer that wants to run it to be windows, and running the correct version of the .net framework. If it's a program that's created with VS2012, that'll be .net 2.0 to 4.5.2. After that, you need to find the location of your program, and you can just copy the debug folder that you are currently running from, and your program will work.

Deploying C# application with .Net 4.0

If the end user dont have .net 4.0 installed , i dont want them to go to a microsoft page to download manually and install it. I rather want them to just click "ok" and the setup goes to my website and downloads the webinstaller file and start installing automatically.
In my solution i have 2 project, 1 windows project and 1 setup project. I have noticed that if i go to properties on either of the projects and then Prerequisites, there i can choose between these 3 options :
Download prerequisites from the component vendor's website ( default )
Download prerequisites from the same location as my application
Download prerequisites from the following location ( with a textbox )
I should want the last option right? But do i link to a folder in my website and it will look there for the right "name" to install ? Then i have to add the installers to that folder?
And i dont know if i only should do this on the windows project or the setup project or both?
I am using visual studios default installer.
Really confused.
Thanky you.
If it is ok for you to distribute the .NET framework with the program you can use the instructions from the answer to this post:
silent .NET Framework install in setup project
The setup should install the .NET framework without requiring any user input.
I normally choose the second options.
Why? Because VS actually compiles a bootstrapper which gets sent to you Debug/Release folder. So all you need to do is copy that whole folder and burn to cd or usb and ship to your client.

Categories

Resources