4 ms·
...Shaking head...sometimes I just do not understand what is going on in the industry anymore... Building self-contained .exes that install with minimal depend
by TimJYoung 8y ago
...Shaking head...sometimes I just do not understand what is going on in the industry anymore...
Building self-contained .exes that install with minimal dependencies has been a pretty easy task under Windows since the mid-90s. My entire company was founded on this premise, and has been developing and marketing embedded (as in, compiles directly into the .exe) database engines for Delphi/Free Pascal for 20 years. Our customers range from small shops to very large corporations, and they all need one thing: easy packaging, branding, and distribution. Some of our customers distribute their application to thousands of machines, and most of the time the entire thing is comprised of one (or just a few) executable(s). And these are machines that the vendor has zero control over, so the product has to work in some of the most "hostile" environments one can imagine.
Under Windows, it's simply:
1) Use a standard installer to package your application executables/DLLs.
2) Make sure that you install all binaries into \Program Files.
3) Store your configuration information under the user's application data directory (local or roaming, your choice) in an .ini, .json file, etc.
In most cases, that will get you an installation (and application) that works on any Windows machine back to Windows XP. The only exception is if you need a Vista+ or Windows 8+ API, but you can code your application to fail gracefully in such environments, such as falling back to a different API or just trying to dynamically load it and display a decent error message if the API isn't available.
So, after all that: why is there such a reluctance to do the same thing on Linux ? Why does everyone want to over-complicate things ?
- root_axis 8y agoGetting an arbitrary binary to run successfully on Linux is trivial and IMO much easier than on Windows. The problem comes in when you're trying to deploy a service that is composed of multiple sub-services e.g. an application server, a database server, a caching server, and an http server. It's simply false to suggest that coordinating the deployment of these types of systems into a production Windows environment is easier than Linux, even without containerization... with docker there is simply no comparison. There is a reason why the vast majority of production software systems run on some linux/unix variant.
- TimJYoung 8y agoYou're simply making a statement without any proof. I specifically showed how easy it can be to deploy any application on Windows going back over 15 years. Can the same be said of Linux distributions over the same time period ?
- root_axis 8y agoOk. I'll give you the same steps for linux. 1) Install dependencies via package manager. 2) Execute binary. That's it. I don't need a "standard installer", I don't have to install application files to an arbitrary location blessed by the operating system, I can store configuration information in the home-directory or in the application directory or anywhere that makes sense for the application. This works in almost every linux system "going back over 15 years". Now explain to me how I'd deploy an application to Windows with a dependency on, e.g., two specific version of IIS, a MSSQL Database and a node application server to any Windows machine in the last 15 years.
- TimJYoung 8y agoThat's certainly not been my experience with Linux. Simply trying to get something to work over multiple distributions is a very frustrating exercise, especially if we're talking anything with a UI, and backwards-compatibility with prior versions is a big issue: https://unix.stackexchange.com/questions/137434/are-there-any-linux-distributions-that-focus-on-binary-backward-compatibility https://unix.stackexchange.com/questions/137434/are-there-an... Edit: also just found this, which does a way better job than I could of describing the issues: https://github.com/phusion/holy-build-box#problem-introduction https://github.com/phusion/holy-build-box#problem-introducti... Re: Standard installers: you aren't required to use an installer, but it makes things easier. You could just copy the .exe to a directory and run it. Most utilities work that way. Re: \Program Files: you aren't required to install your application there, it's just good practice. Re: installing other products with dependencies: you would install them just like any other product and would use their installer. It's up to them to make sure that they keep their dependencies in order. I, for one, certainly won't defend MS in terms of how they distribute their applications. I personally think they're a rat's nest of overly-complicated dependencies, but that is not determined/caused by Windows itself.