36
\$\begingroup\$

this is probably the noob-question of the day:

So I've written this game.

Now there's the .exe file that does the work, a folder with my beautiful, beautiful assets and a bunch of .dll files and other stuff that I probably shouldn't touch. To run the game, I copy the whole lot to the desired computer, double-click the .exe file and start shooting some dudes. Yay!

But what exactly is the difference between that and using an installer? What else does an installer do besides copying files and looking more professional than a .zip-file? Is there generally a lot of patching/configuring involved when trying to make a game run on a different computer? I tested my game on all windows computers I could get my greedy fingers on and it works great.

\$\endgroup\$
6
  • 1
    \$\begingroup\$ Well in XNA for example, you need XNA runtime. Or with SlimDX you need SlimDX.dll inside your game directory or in GAC. \$\endgroup\$
    – Kikaimaru
    Commented Sep 3, 2012 at 10:20
  • \$\begingroup\$ Hm, I understand that. But those .dll files that I need (in my case sdl.dll and its minions) are already in the same directory as the .exe file and they get copied as I copy the rest. What would an installer do differently? \$\endgroup\$ Commented Sep 3, 2012 at 10:22
  • 2
    \$\begingroup\$ @Jan The end user doesn't have to worry about placing files and what not. It's something that gets done for them. \$\endgroup\$
    – Sidar
    Commented Sep 3, 2012 at 16:05
  • 1
    \$\begingroup\$ Something to think about - how 'big' is your game? I.e is it a little indie-style exe file, one or two DLLs and a few images, or is it some massive thing that needs all sorts of runtimes installing. If it's something relatively small, an exe file in a zip might be good enough and can help get over the user's reluctance to install random games that they might want to delete after five minutes of playtime. \$\endgroup\$
    – Piku
    Commented Sep 11, 2012 at 11:31
  • 1
    \$\begingroup\$ Talking about installers... something often overlooked is a good de-/uninstaller. I've lost count of how often I had to remove left over files and/or registry keys. Which is especially infuriating when said remains cause problems upon re-installing the game. \$\endgroup\$
    – Exilyth
    Commented Apr 19, 2013 at 14:27

2 Answers 2

36
\$\begingroup\$

The installer is typically there to make things easier for the end user. It does some combination of the following:

  • Unzipping
  • Creation of directories
  • Installation of required runtimes (redistributable like: .Net, Visual C++, Direct x)
  • Registration with the OS (for later clean uninstall)
  • Display beautiful, beautiful screenshots to prepare the player for your game while it works.
  • Offering the user the chance to register their game
  • Downloading updates for the assets or patches for the game
  • Add icons to the start menu or the desktop
  • Set correct permissions for various game directories (temp folder, save directory, etc.)
  • Just install it already, allow the user to mindlessly click next and get to playing the game!
\$\endgroup\$
7
  • \$\begingroup\$ Oh right, I hadn't thought about that it might need to install runtimes. Thank you! \$\endgroup\$ Commented Sep 3, 2012 at 10:25
  • 2
    \$\begingroup\$ Also, don't forget setting up file access rights! Your game is not guaranteed to have write access to its folder (for savegames and such) unless an installer sets it up. \$\endgroup\$
    – Nevermind
    Commented Sep 3, 2012 at 12:04
  • 10
    \$\begingroup\$ +1 Most end-users aren't even comfortable with unzipping a file, so the installer should propose a sane default installation path and "just do it" for them. Many end-users don't know what a file-system is, or how to locate files outside of the default Documents paths that are presented to them. And frankly, why the heck should they even need to know? Think of the installer as a poor-mans app store, it should be one click to get playing, no more. \$\endgroup\$ Commented Sep 3, 2012 at 12:35
  • \$\begingroup\$ Well, that really depends on your target audience. \$\endgroup\$
    – API-Beast
    Commented Sep 3, 2012 at 13:36
  • 3
    \$\begingroup\$ I'd also add consistency to the list of reasons. By providing an installer you ensure that the user gets a setup that's consistent with other users, otherwise you end up with crazy things such as somebody unzipping the game to their desktop and running it from there (yes, I've seen this happen). Using a consistent and known-good setup removes a lot of things that can go wrong, and eases the job of troubleshooting when things do go wrong. \$\endgroup\$ Commented Sep 3, 2012 at 18:48
4
\$\begingroup\$

An installer abstracts the process of deploying complex pieces of software infrastructure, which is usually contained within an archive, through a convenient, self-sufficient user interface.

This UI can be graphical or based on text which is output on a command-line such as the unix shell (e.g. bash). In case of graphical installers, most often a so called installation-bootstrapper is used, in the latter case, installation scripts which can be bash-scripts, Microsoft batch scripts, or other any scripting language which runs on a command line.

In the simplest case an application is simply an executable file, with the operating system knowing what to do with the file in order to run it. The application file may reside in a folder with subfolders and other auxiliary files, packed into one archive. In this case no installer may be needed.

For complex software, entire software platforms and tight integration with the underlying operating system infrastructure may be desirable, for instance to enforce the copyright of a software product.

Many installers on Windows provide an /e or /extract flag. e.g. setup.exe /e to allow extraction of the archive's contents without the installer running its installation script. I recently needed to do just that.

Towards portability

Installers have almost become a norm for delivering professional software, no matter how simple the underlying software assets. With an increasing number of computer savvy users and the desire to migrate ones applications from one desktop to the next, portable software, often delivered in a simple archive, is becoming increasingly popular.

( I don't know how much time in total I have spent on installers, but it is definitely on the order of days. )

Tasks the installer may handle, are:

  • unpacking (often using exotic, high compression archivers)
  • ensuring system hardware requirements
  • ensuring sufficient hard-disk space
  • ensuring software platform runtime requirements (e.g. 'redistributables')
  • checking for newer software updates
  • downloading the software from a remote repository
  • creating and/or updating program files and folders
  • create configuration files, registry entries or environment variables
  • install sofware drivers, mount or unmount devices
  • increase accessibility for everyday users, by explaining installation steps, creating links, shortcuts
  • promote the own sofware through bookmarks, etc...
  • create incentive for the user to actually startup the software, by presenting the keypoints of the software during the installation, slide by slide
  • create additional revenue, through software-bundling
  • configure kernel-modules and automatically running components (e.g. daemons, windows-services)
  • automatic patching of the sofware
  • setting folder, file and user permissions
  • creating GUIDs to couple the software to a specific installation-instance and for instance, prevent portability

... If you can think of other points, let me know and I will incorporate them.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .