63

Developers just need to provide a package for a distribution. Each distribution then has a way to install this package. This way can be in a terminal (apt-get) or via a graphical interface, e.g. Ubuntu Software Center. The beauty is that developers just have to care about building a proper package; the distribution makers take care of the rest, and each ...


42

Because they don't need to. Linux distributions usually have working package management systems, unlike Windows, where every single application has to re-implement installation and updating over and over and over and over again.


22

Most closed-source, non free-as-in-beer software for Linux does come with installation wizards. So does some closed-source, free-as-in-beer software, at least until most major distributions pick it up. For open source software, package managers are a clearly superior solution. So what about the early stages before open source software gets picked up by ...


20

An installer always makes sense, if deployment requires anything more complicated than copying the relevant file(s) to some folder and running the EXE. If there are additional steps that need to be taken to set the product up properly, there's two ways to go about it. You can write out a list for someone to follow. Humans being humans, someone's bound to ...


18

You should try to contact Norton's (Symantec's?) customer service. I believe this is standard practice among vendors of legit programs which are wrongly flagged as viruses.


18

Should the install step of a package manager modify a user's environment, or simply prompt the user to do so themselves? Neither. Package installers should never touch anything in a home directory for an account the package doesn't own. Packages should also configure themselves so that if they're installed, they're usable without any special effort on ...


14

It's never acceptable to modify a user's /home structure from the package manager unless that modification is the entire point. The main approaches to this are: Notify the user they need to configure it. Supply defaults so it's not needed Package a launcher script that sets the values appropriately (If the distro supports it) Drop a file exporting the ...


14

Linux distributions (as well, I think, as BSD-flavoured Unices) have a user-friendly interface to program installation, via so-called package managers (or ports management in the BSD case): pacman for Arch, dpkg for Debian/Ubuntu, and so on. These package manager provide a way to install programs by means of uniform configuration files. Once the program you ...


13

I've often asked myself, and others this question, and I'd like to address a point I often see brought up before I get to why Linux sees fewer installers: Linux distributions provide package managers. However, I wouldn't say that a Linux distribution's package manager is a replacement for an installer for, in part, the following reasons: These package ...


11

Wyatt takes off his programmer hat and puts on his Director of IT hat If this is an internal line of business application then you only need aim at one environment -- said business. I would call the head of IT and ask him how they would like to manage deployment. IT departments have been dealing with this for a while so they might have a strong preference ...


11

Something to keep in mind: It might really be infected. There is a virus out there that infects Delphi itself. If you're infected with it any executable that Delphi produces will be infected.


10

Package managers fail to install some software because of the intrinsic problem of releasing software in the wild: it can be installed anywhere, and should accommodate itself to different machines, different hardware, different versions of OS, different configuration, different side-by-side software and different problems. You test your software on all ...


9

To large extends it's both. The Linux distribution model is closer to AppStore/Play Store then traditional Windows/Mac OS X one - and even those platform are moving there from what I've heard. The convention is that it's simpler. Most arguments for the AppStore/Play Store applies to Linux as well: Automatic updates. Having 20 programs update separately on ...


9

Downloadable scripts to be run - VBScript or Javascript - always sounds very fishy to me, especially since there are too many black sheep out there abusing such things to install malware. You don't want to train anyone using your program to trust, download, and use such scripts. Unfortunately I can't think of any secure fire & forget solution to this ...


8

In case anyone is interested, this article treats a similar case with a program that's just a do-nothing WinMain function - The Case of Evil WinMain. Story about how a third of all antivirus programs has gone crazy for no obvious reason... #include <windows.h> int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show) { return 0; } ...


8

Windows Installer applications are widely used to install internal business applications in environments using Windows. You should also ask yourself whether over the application's life it will likely ever need to be updated, patched, repaired, or cleanly removed from user's systems. In many cases the answer is "yes" - in which case having a properly ...


7

As with all engineering decisions, it depends. Probably the most important factor is to understand who the consumer of your installation process is and what skillset the development team has. Since it's internal, I assume it's deployed by an internal IT department. They are probably no strangers to command shells. Graphical install wizards are useful for ...


7

I imagine the risks are the same as using any unsigned executable. The reason that it's okay to download the application over an intranet is that you trust the network hardware (and people who have access to that hardware) that serves you the file. When you ask, "Server foo.local, please send me bar.exe," you know that foo.local is a trustworthy machine, and ...


7

Question Should the install step of a package manager modify a user's environment? Answer No. It's a bad idea to modify a user's data, in this case the .bashrc file. User's data should be considered sacred by a package manager? Question Should the install step of a package manager simply prompt the user to do so themselves? Answer This is a lot more ...


7

multiplayer games do it more frequently. What happens is basically the following: a streaming installer gets installed. This is a stub that does all the rest. the absolute minimum to use the core functionality is installed. For Word (for example) that'd be opening and saving files, and some editing functionality As you work, more functionality is installed. ...


6

I wouldn't say that a console application is totally different from a windows service. They are both hosts to execute code. That being said, there are some key differences: A service can run even if a user is not logged into the PC. A service can easily be configured to run in the context of a high-authority accounts such as Network Service or Local ...


6

Usually, the installation doesn't need interaction with a user (most apt-get packages for example), or can be scripted. This makes it very easy to automate in order to deploy a piece of software on many machines. Instead of doing things through the wizard, you do those same things through scripting or through configuration files. Given that in Linux world, ...


6

The standard solution which you have surely seen from other software vendors is to let the user download and install the software, maybe with or without the registration, but let the software itself lead the user through the registration process afterwards. Through that process, after the user is authentificated, the token is downloaded in form of a ...


5

You're missing the forest for the trees. Obviously it's more convenient to perform the environment change for the user, but it's also more risky and somewhat invasive. You should combine the best of both worlds by asking the user whether the installer should modify their .bashrc, and otherwise give instructions how they should do it themselves.


5

Good question! Python has this tool, called pip, which is python's package manager. It can pull packages from the PyPi repository (think an App Store). These will handle where packages get installed for you. Almost every package I've found available on the Internet was also available on PyPi. Along with this, there is another tool that is used in ...


5

Is there some "typical" method to create a project like this without having to maintain separate codebases for each project? More complex approaches (configuration, plugins etc.) have been described. Yet for your relatively simple case you may be better off using a straight forward approach, that is automate what you do manually: Maintain one code base ...


5

Note that there are so many package managers; people keep thinking that it's an easy task and reinventing the wheel. The underlying problem is that software can interact in unexpected ways. Most packaging systems which have versioned dependencies start off with "greater than or equal": progX v2.8 requires libfoo >= v1.1 Then someone releases libfoo2.0 ...


5

to get the files ready for the package, there is a lot of copy and pasting at release time When it comes to "copy/pasting" files, there is almost nothing you cannot encode into a script (you have to pick a scripting language, maybe the shell script language of your OS - let me guess, its MS Windows - maybe a more modern scripting language like Powershell or ...


5

Many databases have a "dump" feature that creates a text-based representation of the database. MySQL has mysqldump, for example. Depending on your database, you can specify to only dump structures and procedures, and leave behind the data. Or you might be able to selectively dump some reference data. If your database has this feature, there's a pretty good ...


5

It is hard to give any concrete advice, since the only things which could be said are far too general to help you in your concrete problem domain. What you are mostly looking for is some kind of automation with tools like: Puppet Chef SaltStack Ansible Terraform From which I started looking into Ansible lately. Its selling point which makes it attractive ...


Only top voted, non community-wiki answers of a minimum length are eligible