Why does everything need installing these days? (C compiler)

You can talk about almost anything that you want to on this board.

Moderator: Moderators

User avatar
tokumaru
Posts: 11438
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Why does everything need installing these days? (C compiler)

Post by tokumaru » Thu Apr 04, 2019 6:29 pm

Yeah, what's up with that? Every Windows program you download these days has to be installed, making all kinds of modifications to your system, and making it that much harder for you to carry your tools around with you unless you're taking the whole computer and not just your files.

Seriously, what happened to simply downloading an archive, extracting its contents to a folder of your choice and just using the freaking program right there? No, you need to run a "wizard" that's going to scatter files all around your hard drive, mess with file associations, put useless shortcuts everywhere, and who knows what else.

While this has bothered me for a long while now, today I'm particularly upset that I can't find a decent C compiler for Windows that I can just extract to a folder and use. The closest thing I could find was Embarcadero's C++ compiler, which was originally Borland's. Is that one any good? Does anyone here have any other recommendations?

tepples
Posts: 21707
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Why does everything need installing these days? (C compi

Post by tepples » Thu Apr 04, 2019 7:53 pm

When I used Windows regularly, I used to have a "portable" installation of MinGW that I carried around with me on a flash drive. I think modern MinGW-w64 should support portable operation if you set the Path appropriately.

User avatar
never-obsolete
Posts: 370
Joined: Wed Sep 07, 2005 9:55 am
Location: Phoenix, AZ

Re: Why does everything need installing these days? (C compi

Post by never-obsolete » Thu Apr 04, 2019 8:53 pm

I've have Dev C++/MinGW on a flash drive. IIRC, the portable version just needs to be extracted to a folder.
. That's just like, your opinion, man .

User avatar
koitsu
Posts: 4214
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Re: Why does everything need installing these days? (C compi

Post by koitsu » Thu Apr 04, 2019 8:54 pm

tokumaru wrote:Seriously, what happened to simply downloading an archive, extracting its contents to a folder of your choice and just using the freaking program right there?
Generally speaking, and highly summarised: software developers stopped caring and became complacent. This, compounded with the general dumbing-down of things and the lowering of the bar (for software development; read: everyone thinks they and their dog should code), resulted in a plethora of junk. Let's also not forget that (in my opinion) fewer and fewer people are developing software using PLs and software bits that require understanding how things like shared libraries or DLLs, linker paths, etc. work.

The closest thing I can think of that might adhere to what you want, compiler-wise, might be MSYS2 or MinGW, which can provide gcc or possibly clang. But I make no promises that the installs can be made portable (i.e. everything in a single directory which you can move around); I do know that at least MSYS2 installs primarily in the directory of your choice (ex. C:\MSYS2), but I suspect there are other bits that would have to be backed up/moved/copied/whatever if moving it from machine to machine (I'm thinking stuff in %APPDATA%).

And in closing, I'll add: %APPDATA% and %LOCALAPPDATA% on Windows is an abomination, just like the registry.

User avatar
slembcke
Posts: 170
Joined: Fri Nov 24, 2017 2:40 pm

Re: Why does everything need installing these days? (C compi

Post by slembcke » Thu Apr 04, 2019 9:11 pm

Dunno, but that's one of the things that drives me batty about windows. Everything is an installer, and they always seem to put crap wherever they please on your hard drive. Uninstalling them seems to work like half the time at best...

On Linux 90+% of my software comes from the system package manager, and it's kinda gloriously better than a million different separately installed and managed bits. On Linux/Mac in general, I also have a fair amount of software that is just built and resides in my home folder somewhere. On the Mac, the native application format is a self contained ("portable") app bundle. A lot of Mac users I know will refuse to run installers for programs that don't seem like they need to. "If it's not just an app bundle that you can put wherever you want, what is that installer doing..."

User avatar
rainwarrior
Posts: 7636
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Why does everything need installing these days? (C compi

Post by rainwarrior » Thu Apr 04, 2019 10:28 pm

If you want something that's very minimal, there's the Tiny C Compiler:
http://www.tinycc.org/

There might be a few relevant links at the bottom of that page if you want something slightly less minimal too.

User avatar
Bregalad
Posts: 7750
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Re: Why does everything need installing these days? (C compi

Post by Bregalad » Thu Apr 04, 2019 11:14 pm

tokumaru wrote:Yeah, what's up with that? Every Windows program you download these days has to be installed, making all kinds of modifications to your system, and making it that much harder for you to carry your tools around with you unless you're taking the whole computer and not just your files.
Before anybody popus up and claim free software/GNU is better, every linux program also has to be installed, if not compiled and installed (*). In all cases you have no idea where the files needed to execute the programm are scatterred arround in your system unless you reverse engineer the said system, and even then you could miss something. This applies to all linux distros. Unlike Windows, the possibility of a program not being installed isn't even there.

And I 100% agree with Toku.

(*) I'm not going in the details how annyoing it is to compile a compiler and have the compiled compiler not take over the system's compiler, etc... by I managed to do this one time in my life and wonder if I'll ever do this ever again.

User avatar
tokumaru
Posts: 11438
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Why does everything need installing these days? (C compi

Post by tokumaru » Fri Apr 05, 2019 4:54 am

I've been looking at MinGW and I can only seem to find an installer. Are you saying I still have to use the installer and let it put unknown crap in my system and then grab the main folder hoping it will work as a portable app? Or is there a portable download I missed?

User avatar
tokumaru
Posts: 11438
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Why does everything need installing these days? (C compi

Post by tokumaru » Fri Apr 05, 2019 6:15 am

I'm not much of a Linux guy, but from the little I've seen it looks like Linux and Mac developers just blindly install stuff system-wide without worrying about where the files actually go. I hate working like that, specially since I much prefer to carry my development environment with me, instead of having to configure everything over and over on all machines I have access to.

Regarding Tiny C Compiler, I have used in the past and was mostly satisfied with its small size and no-frills philosophy, but it has come to my attention that code optimization isn't one of its strongest suits, and since the reason I'm looking into using C now is to achieve the best possible performance, TinyCC might not be the ideal tool.

User avatar
gauauu
Posts: 633
Joined: Sat Jan 09, 2016 9:21 pm
Location: Central Illinois, USA
Contact:

Re: Why does everything need installing these days? (C compi

Post by gauauu » Fri Apr 05, 2019 7:24 am

tokumaru wrote:I'm not much of a Linux guy, but from the little I've seen it looks like Linux and Mac developers just blindly install stuff system-wide without worrying about where the files actually go. I hate working like that, specially since I much prefer to carry my development environment with me, instead of having to configure everything over and over on all machines I have access to.
That is the normal way of doing things. It's easy (you just install from a package manager or type "sudo make install"), but it's annoying if you care about where things are going.

That said you can often just run stuff directly out of any old path if you're careful and install it that way. Install directly to your home directory, or /opt, or a thumb drive, or whatever. It's just usually more work to figure out how to "install" it that way. (often a "make install" process will let you specify a root where the thing will live)

User avatar
Bregalad
Posts: 7750
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Re: Why does everything need installing these days? (C compi

Post by Bregalad » Fri Apr 05, 2019 7:55 am

tokumaru wrote:I'm not much of a Linux guy, but from the little I've seen it looks like Linux and Mac developers just blindly install stuff system-wide without worrying about where the files actually go.
Most of the time, if the program is in your distribution's repository, indeed you do exactly that. If the program is NOT in your repository, then you should compile it and then also have to install it (with make install command).

I've had once a linux program distributed as a RPM package with a Windows-style installer, that's probably because this was the linux port the company made of their Windows program, rather than the program being made with linux philosophy entierely.

I understand you don't like to work like that, and there's definitely downsides, but at least the philosophy itself is somewhat consistent. (i.e. let your package manager do the work of installing and updating programs). The worst is when there is no consistency.

User avatar
slembcke
Posts: 170
Joined: Fri Nov 24, 2017 2:40 pm

Re: Why does everything need installing these days? (C compi

Post by slembcke » Fri Apr 05, 2019 9:01 am

Few pieces of Mac software use installers. I'm not quite sure how Mac users have many pieces of software to install. The exceptions I can think of on my machine are the Android tools, Unity, and anything made by Microsoft.

Stuff that you compile yourself on Unixes almost universally lets you set the "prefix" path, so you can trivially "install" them wherever you want. I dunno what other people do, but I consider it to be a bad idea to install to any system directories ever. I put most things in my home directory, and some stuff in /usr/local.

The reason I Linux package managers a pass on the whole installer hell issue is that there is a single central system that manages installed software. Installing things is trivial, and comes from a mildly vetted source. Uninstallation works as expected. You can also easily list the files installed by a package (ex: "apt-file list libglfw3-dev" on Ubuntu). Updates are automatic on the same system for both user and system software, isn't forced on you by default, and rarely requires rebooting. \o/

Compare that to the Windows "Add/Remove programs" control panel. Since supporting it is opt-in for software, half of the software you have doesn't show up in there. The uninstallers that it triggers are all custom bits of software, and IME often don't work. The most recent time I tried clearing up some disk space, half of the packages I tried removing failed to uninstall. A bunch of them were even Microsoft provided like the Xbox SDKs and the older version of Visual Studio it required. -_- Anyway... that's all to say that I agree that the state of installing software on Windows is awful.

tepples
Posts: 21707
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Why does everything need installing these days? (C compi

Post by tepples » Fri Apr 05, 2019 9:47 am

Bregalad wrote:Most of the time, if the program is in your distribution's repository, indeed you [trust the package manager to put things in the appropriate places under /usr]. If the program is NOT in your repository, then you should compile it and then also have to install it (with make install command).
How does that handle a program that is not in the repository precisely because it is distributed as an executable in order to keep its source code a trade secret? One example is a game that is larger in scope than hobby dev alone can provide. Another is an emulator or other application whose developer fears that if it were free software, malware developers would repackage it bundled with harmful software. For example, APK Hosts File Engine is proprietary because its author saw what the developer of the eFast browser did to Chromium.

Ideally, a way to fund development of AAA-scale games as free software would be discovered. But next best, I think each proprietary application should get its own folder under /opt to parallel /Applications under macOS or C:\Program Files under Windows. Snap packages have a problem, namely being tied to Canonical's "Snap Store" repository and no other. The Snap installer offers no way to add third-party repositories, and it considers out-of-repository packages "--dangerous" (source) because they haven't been signed by Canonical.

User avatar
rainwarrior
Posts: 7636
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Why does everything need installing these days? (C compi

Post by rainwarrior » Fri Apr 05, 2019 9:52 am

tokumaru wrote:I've been looking at MinGW and I can only seem to find an installer. Are you saying I still have to use the installer and let it put unknown crap in my system and then grab the main folder hoping it will work as a portable app? Or is there a portable download I missed?
Yeah, I think the portable version people are talking about is a copy of the install. (Or you could just use the installer to install directly to a USB key if that's what you wanted.)

AFAIK MinGW's installer doesn't add anything outside the specified folder though, except for maybe an optional link to its installer on your desktop. It doesn't produce an "add remove programs" thing for Windows, but deleting the folder is the same as uninstalling it.

The purpose of its installer is more of a "package manager", selecting the optional components that you'd like to add. Otherwise it's more or less a portable thing? It doesn't change your global PATH (they have a policy against letting the installer do this, and their setup guide recommends using a script to set up the path when you begin a MinGW session rather than setting it globally).

I don't think it even touches the registry. Its installer literally just downloads and copies things to a single folder, excepting the optional desktop shortcut.


There is a manual installation guide and all this involves is downloading a ton of archives and unzipping them to a folder, more or less, exactly what its installer was designed to make easy.


So, it's installer is a bit more "minimal" than a typical Windows installer, and maybe that's not obvious based on experience with other Windows installers, but the Min does stand for "Minimalist" after all.
Last edited by rainwarrior on Fri Apr 05, 2019 10:11 am, edited 2 times in total.

User avatar
Bregalad
Posts: 7750
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Re: Why does everything need installing these days? (C compi

Post by Bregalad » Fri Apr 05, 2019 9:53 am

Installing things is trivial, and comes from a mildly vetted source.
This is true only if the software you're looking for, and in the version you're looking for, is in your repository. If you want anything nonstandard, you'll have to compile, or it might even be impossible to install it all, for example if you'd like an old version of a specific software with a new version of the system.
I dunno what other people do, but I consider it to be a bad idea to install to any system directories ever. I put most things in my home directory, and some stuff in /usr/local.
I didn't ever see any program installing themselves in the /home folder using a package manager, and I think that's not where it stand. In my opinion, /home is the linux equivalent of D:\ in windows, that is something non-system related you back up regularly, where you put the data you produced yourself. Everything else is the equivalent of C:\, what the system deals with and you usually do not touch (there's exeptions to this, neededless to say).
Uninstallation works as expected.
I've had bad experience with the (now decreased) yum package manager of a Fedora distro, that would uninsall all dependencies regardless weather other softwares still uses them. Fortunately, apt doesn't seem to have similar issues - but version conflicts are still hell.
You can also easily list the files installed by a package (ex: "apt-file list libglfw3-dev" on Ubuntu).
I've never heard of this but it definitely sounds like a very interesting command !

Post Reply