Also, is there a way to have an "executable folder" that when double-clicked opens a specific .exe? |
No, there's no such thing.
Can you give me a link that shows the steps required to do that? |
There isn't a well defined set of steps because the exact procedure depends a lot on the libraries you're using. In broad terms, you need to:
1. Download the libraries your project uses. Ideally, compiled versions for statically linking. Different compilers have different formats for static libraries, so you'll need one specific for your compiler. If there's no version for your compiler available, you'll need to download the source code. If the source is not available, you can't build statically.
If the libraries you're using use other libraries in turn, you'll have to get
them, too.
2. If you had to download the sources, you'll need to build static libraries. For windows, this means building .lib files (VC++-like) or .a files (GCC-like). These files can be linked directly into a single executable, unlike DLLs.
Occasionally, you may need to modify a library and/or your own code to get it to link statically. This is because DLLs can define a special function to be called when the library loaded; this function is often used to perform certain initializations. Static libraries aren't loaded, so if the library uses this function, some changes will have to be made.
Other libraries use macros that let you tell them they're being compiled statically or dynamically. Use this rather than the above method if said macros are available.
3. Once you have all your static libraries, you'll have to link them into your program. Thankfully, this is the easiest part. The only thing to watch out for is that for some linkers, it matters in which the order you list your libraries.
Yes, linking statically is a very complicated procedure. You need to weight carefully whether it's worthwhile.
Regarding bundling the .NET runtime, how are you packaging the program? A ZIP file (or similar)? An automated installer? Something else?