Why do program have installers?

  • Thread starter Thread starter Guest
  • Start date Start date
Just a thought...
Why do people assume that everyone uses a mouse right
handed?

Wel to put it short because most humans are.
an exerpt of
http://www.sciam.com/askexpert_question.cfm?articleID=00063C8D-61EF-1C72-9EB7809EC588F2D7
(Sorry, Tiny URL had database problems)

<quote>
Most humans (say 70 percent to 95 percent) are right-handed, a minority (say
5 percent to 30 percent) are left-handed, and an indeterminate number of
people are probably best described as ambidextrous. This appears to be
universally true for all human populations anywhere in the world. There is
evidence for genetic influence for handedness; however, it is non-Mendelian
and geneticists cannot agree on the exact process. There is evidence that
handedness can be influenced (and changed) by social and cultural
mechanisms. For instance, teachers have been known to force children to
switch from using their left hand to using their right hand for writing.
Also, some more restrictive societies show less left-handedness in their
populations than other more permissive societies.
</quote>

Though, of course, this does not mean companies shouldn't ignore the 5 to 30
% lefthanded people

MightyKitten

--

http://www.it-hulp.nl/
http://fotoalbum.it-hulp.nl/

gmx.net is the mailserver of mightykitten
start subject with *ping* or the antispam monster will eat it.
 
It was a dark and stormy night when (e-mail address removed)
(ozzy) said:
Why is it necessary to install dll and ocx files in the system
directory? Wouldn't they work in the program's own directory?
[Snip]
From a programming point of view, there is absolutely NO need to
install anything outside the programs own directory. If it can't
run without improperly hooking into the OS, then the programmer
needs to go back to the beginning & learn proper coding (assembly
:)

Assembly is nice and I love it but it has a very limited niche,
finding an OS, office package or web browser coded in assembly is
going to be very hard (ReactOS is an exception but is not ready for
prime time yet).
not the quick & dirty bloatware coding that is all too prevalent
today.
C, C++, Visual C, Visual Basic, etc... are all nice gui tools &
can build good programs

Assembly/C/C++ are programming languages that aren't tied to any
particular IDE, as long as you have a working compiler/linker/etc.
you can create applications for the win32 platform (or Linux or any
other OS).

In the other side of the spectrum are Visual Basic and Delphi, they
are RAD tools and thus their main advantage is the ability to jump
back and forth between editing source code and the niceties of the
particular IDE (visual editor, properties sheet, etc.).
but they all have a major flaw in that they want to hook into the
existing OS improperly.

Please can you tell us what do you mean by 'improperly'?
With these new tools, trying to build a standalone app that
installs into its own directory with no external links is next to
near impossible.

Sorry but that is incorrect. Robin Keir, Magister-Lex, Radsoft,
Florian Balmer and a few others had been using C to create stand-
alone applications.
Majority of my code & other programs that I enjoy installing are
extracted into their own directory & run just fine from where they
reside.

Do you have a homepage?

[Snip]

Regards
 
Majority of my code & other programs that I enjoy installing are extracted into
their own directory & run just fine from where they reside. They are also OS
independent & will survive countless OS installs without worrying about the
registry entries. Software runs faster & is more stable with this method too.
Too bad all software wasn't this easy :)

_________________________________________________________

Thanks, ozzy, for trying to walk the straight and narrow.

I'm not a programmer but even I can see the benefit of this approach.
It annoys the heck out of me when an installer program gives me that
infamous message about "the file being installed is not newer than the
one being replaced.... do you want to keep the old file?" How stupid!
If there is any difference whatsoever between the two files, then let's
have two separate files -- one for each program which uses it. After
all, if there is a difference, there must be some reason, right? And if
it really is desirable to use a newer file, let's do it with an update
process, not an install process.

Sheesh!
 
It was a dark and stormy night when (e-mail address removed)
(ozzy) wrote:
Assembly is nice and I love it but it has a very limited niche,
finding an OS, office package or web browser coded in assembly is
going to be very hard (ReactOS is an exception but is not ready for
prime time yet).

Yes indeed but that is my point. All the old stable programming techniques have
been somehow abandonned for sloppy, bloatware code from the higher level
languages. Many of the older assembly coders are gone & newer programmers too
often (not always) opt for the easy coding & stay away from assembly.
Assembly/C/C++ are programming languages that aren't tied to any
particular IDE, as long as you have a working compiler/linker/etc.
you can create applications for the win32 platform (or Linux or any
other OS).

In the other side of the spectrum are Visual Basic and Delphi, they
are RAD tools and thus their main advantage is the ability to jump
back and forth between editing source code and the niceties of the
particular IDE (visual editor, properties sheet, etc.).


Please can you tell us what do you mean by 'improperly'?

Improper is when you uninstall a program & there are still references in the
registry & temp files/directories left behind. Wrong! You should clean your
code completely.

Improper is when you add anything to the registry or outside your own
directory. There is absolutely no need. Learn to make your own dll's & use
api's more efficiently.

Improper is when an unrelated application is uninstalled & your other program
fails to work cause it used the uninstalled programs dll's. See note above.

Improper is when the registry grows needlessly into 5-8 MB because of failing
to heed the 1st two items.

Improper is when malware takes out your registry & you have to reinstall both
the OS & your software from scratch. Standalone software as I mention will
survive if not touched by the malware, just the OS needs fixing.

Improper is when the programmer makes the owner of the pc jump through hoops to
get his computer cleaned up; after realizing the new OS upgrade he just
performed; doesn't recognize the previous program anymore. Hours spent
searching for tools & hours cleaning the mess left behind.

Improper is lack of portability. Standalone apps on a hard drive in pc #1 can
be moved over to pc#2 and run from there with zero fuss.

Improper is saying that it's not easy when thousands of programmers have done
it for years, are still doing it, and will be doing it for many more years.

I can go on but I think you get the idea.

Just a few popular examples that most are familiar with (there are many others)
are Steve Gibson's utils & AIDA32. These utils can be extracted to their own
directories & executed directly from that location with no external
dependencies. I believe I also saw some utils on the [PL].
Some people place a shortcut on the desktop to point to the executable.
Searching the registry will find zero reference to the programs except for the
search variable itself.
VCDGear is another one that extracts to its own directory & is self sufficient
but it has benign registry references. Not perfect but better than the normal
hooks most other programs use.
Sorry but that is incorrect. Robin Keir, Magister-Lex, Radsoft,
Florian Balmer and a few others had been using C to create stand-
alone applications.

I was sarcastically referring to the proliferation of software that exists
today. 'It must be impossible as not many people do it'. ( a phrase I hate
hearing)
Standalone means just that. They work by themselves; from their own directory &
with no registry entries & simply deleting their directory removes all traces
of them permanently :)
If these people make that kind of standalone app, please post their url.

Just as many in ACF strive to keep only freeware on their pc, I strive to keep
only standalone software on mine. Is it hard to do? Yes. Is it impossible? No.
Am I the 'one' to return us to the pure standalone application days? Hell NO,
but I am trying to keep the art alive (like Dennis, Kernighan & Steve did for C
& assembly).

Some people like freeware, some prefer warez. Some prefer bloatware, some
prefer clean, simple standards :)
Do you have a homepage?
yes, I have a few, but are used for clients' updates/feedback.

ozzy
 
Just as many in ACF strive to keep only freeware on their pc, I strive to keep
only standalone software on mine. Is it hard to do? Yes. Is it impossible? No.
Am I the 'one' to return us to the pure standalone application days? Hell NO,
but I am trying to keep the art alive (like Dennis, Kernighan & Steve did for C
& assembly).

_________________________________________________________

I applaud your efforts to make software standalone. One question
however: Without a registry entry, how would you make one program call
another? For instance, I have Internet Explorer call Forte Agent as the
mail program because it knows where to look in the registry to find the
default mail program. Wouldn't there have to be some kind of common
thing like the registry?
 
It was a dark and stormy night when (e-mail address removed)
(ozzy) said:
It was a dark and stormy night when (e-mail address removed)
(ozzy) wrote: [Snip]
but they all have a major flaw in that they want to hook into
the existing OS improperly.

Please can you tell us what do you mean by 'improperly'?

Improper is when you uninstall a program & there are still
references in the registry & temp files/directories left behind.
Wrong! You should clean your code completely.

Improper is when you add anything to the registry or outside your
own directory. There is absolutely no need. Learn to make your own
dll's & use api's more efficiently. [Snip]
I can go on but I think you get the idea.

Yes, you just hate applications that use windows registry ;-)

[Snip]
I was sarcastically referring to the proliferation of software
that exists today. 'It must be impossible as not many people do
it'. ( a phrase I hate hearing)
Standalone means just that. They work by themselves; from their
own directory & with no registry entries & simply deleting their
directory removes all traces of them permanently :)

My definition of stand-alone applications is somewhat different, I
use it to mean 'small apps that perform well and only use what the
targeted OS provides'.

Registry usage? To be honest I don't mind as long as it's used and
not wasted.

By the way, several applications on the Pricelessware fit that
description, a few examples are 2xExplorer, Metapad and Process
Explorer.
If these people make that kind of standalone app, please post
their url.

Robin Keir:
<http://keir.net/>

Magister-Lex:
<http://www.magister-lex.at/RUNit/index.html>

Florian Balmer:
<http://www.flos-freeware.ch/index.html>

Another two I forgot to mention are SciTE (a programmer's text editor
developed by Neil Hodgson using C++):
<http://www.scintilla.org/SciTE.html>

And Cygwin (a package of unix-like tools):
Just as many in ACF strive to keep only freeware on their pc, I
strive to keep only standalone software on mine. Is it hard to do?
Yes. Is it impossible? No. Am I the 'one' to return us to the pure
standalone application days? Hell NO, but I am trying to keep the
art alive (like Dennis, Kernighan & Steve did for C & assembly).

While I acknowledge the influence of K&R on C (who can't?) I fail to
see the connection between Steve Gibson and Assembly.

I mean no disrespect for Steve Gibson as he is a very capable
assembly programmer but if we take the perpective of someone willing
to learn assembly on the win32 platform his website (and 'small is
beatiful' example) have IMHO little value.

And is a shame as he is one of the assembly programmers with most
exposure on the web. Imagine for a moment what could had happened if
a few years ago his website had a rich collection of links to
assembly packages or better yet a few tutorials of his own.

Anyway. I think more commendable people are Steve Hutchesson
(maintainer of the MASM32 package), Iczelion (tutorials for
developing win32 apps with MASM32) and all the developers that have
been working on assembly compilers/packages (e.g. HLA, GoASM, FASM
and the very 'singular' SpASM/RosASM).

And right now the most worthy resources of information related to
assembly are two web-based forums:

win32asm:
<http://board.win32asmcommunity.net/>

and the MASM forum:
<http://www.masmforum.com/>

[Snip]
yes, I have a few, but are used for clients' updates/feedback.

Too bad, for a moment I thought I would be able to download a few
freebies. ;-)

Regards
 
[Snip]
I can go on but I think you get the idea.

Yes, you just hate applications that use windows registry ;-)

Yes, you are correct, how did you ever guess :)
Robin Keir:
<http://keir.net/>

Magister-Lex:
<http://www.magister-lex.at/RUNit/index.html>

Florian Balmer:
<http://www.flos-freeware.ch/index.html>

Another two I forgot to mention are SciTE (a programmer's text editor
developed by Neil Hodgson using C++):
<http://www.scintilla.org/SciTE.html>

And Cygwin (a package of unix-like tools):
<http://www.cygwin.com/>

Thanks for the awesome links.
While I acknowledge the influence of K&R on C (who can't?) I fail to
see the connection between Steve Gibson and Assembly.

And is a shame as he is one of the assembly programmers with most
exposure on the web. Imagine for a moment what could had happened if
a few years ago his website had a rich collection of links to
assembly packages or better yet a few tutorials of his own.

His exposure was the main reason I chose him. Many people have heard of his
name & apps but may not have heard of others that you mention below.
Anyway. I think more commendable people are Steve Hutchesson
(maintainer of the MASM32 package), Iczelion (tutorials for
developing win32 apps with MASM32) and all the developers that have
been working on assembly compilers/packages (e.g. HLA, GoASM, FASM
and the very 'singular' SpASM/RosASM).

And right now the most worthy resources of information related to
assembly are two web-based forums:

win32asm:
<http://board.win32asmcommunity.net/>

and the MASM forum:
<http://www.masmforum.com/>
Two more excellent sites worth repeating :)

ozzy
 
Why do some programs have installers and all they do is create a directory
and extract the files into that
directory ?

Why cant they just offer the program as a .zip file ?
Because installers make it look expensive.
Especially with lots of progress bars moving along and flashing up long
complicated file names at the same time (that appear and disappear too
quickly to read anyway). They also make the programmer look super smart by
using installer dialogs and screens that big companies also use for their
multi-million dollar world-wide software.
For God's sake you don't want them to think they paid all that money for a
zip file!
You're right, they have their part by installing libraries, registering file
types etc., but isn't a lot of it just flashy hype?
 
INspire said:
Rather than have to learn this artificial concept of install/uninstall,
people could have learned how things work. Why complicate things?

It's not a complication. There are two aspects to writing a program
intended to be used by someone else:

1. Interaction with the user/world. The program should do what it
promises, be easy to use, have documentation etc.

2. Interaction with the system. The program should be a 'good citizen' -
register itself with the central program database, allow ways for other
programs to discover and interact with it, make sure all the programs
and libraries *it* depends on are present and discoverable, allow for
clean uninstallation, etc.

Aspect 1 is the 'meat' of the program, the bit that the developer will
have completed on his own machine before he thinks of releasing the
program to the world at large. Aspect 2 is where an installer comes in -
it involves things that are specific not so much to the program as to
the operating system, and which should therefore be handled in a manner
orthogonal to the actual program code.

To address some of the specific points raised:

1. Why can't you just unzip a program and run it?

There *are* some programs that are entirely standalone, but many of them
need registry keys and environment variables set, or provide support for
other applications, so that they need to be in the path and registry for
those applications to discover them.

Also, unless you want to manually navigate to the folder in which you
unzipped the program, things like start menu entries, desktop shortcuts
and PATH settings are very handy.

2. Why can't the user add all those himself?

It makes no sense to require the user to do manually something the
computer can do automatically. That's what computers are *for*.

3. But the security aspects?

Okay, so a sufficiently malicious installer can put all sorts of
spyware, adware, browser hijackers, trojans etc on your system. But so
can the program itself, and who does anything but click on the exe? Most
of them don't come with source anyway. No, having the user jump through
a few extra hoops merely creates a false sense of 'knowing what's going
on'. A better solution would be for installers to generate detailed logs
of what they're doing.

4. Okay, but why can't the program itself do all that? Why a separate
installer?

Again, interacting with the operating system should be cleanly separated
from the actual program tasks. Having every program reinvent the wheel
and have its own code to write to the reegistry, add itself to the path,
etc is extremely bad design, and creates far more problems than it
solves.

Oh, and anecdotal evidence for those of you muttering about clueless
newbies - most unix system administrators I know prefer installers. They
help keep the system in a consistent, maintainable state, and it's
easier to see what's installed, write scripts to update the system, and
uninstall packages cleanly if required.

martin
 
It's not a complication. There are two aspects to writing a program
intended to be used by someone else:

1. Interaction with the user/world. The program should do what it
promises, be easy to use, have documentation etc.

Yes, agreed. Simple interface to the world is a read me file that says "
Extract to a directory named by you & run. Simple & easy."
Programmers have been doing it this way since beginning of programming :)
2. Interaction with the system. The program should be a 'good citizen' -
register itself with the central program database, allow ways for other
programs to discover and interact with it, make sure all the programs
and libraries *it* depends on are present and discoverable, allow for
clean uninstallation, etc.

Good programmers do this on their own! That's why they write stand alone
programs. They don't wish to add to someone else's mistakes or bad code.
You code your own app to run on 'x' type system. You have a specific purpose
for that app. If it needs or is to be allowed to interact with 'xyz' software,
then you build it in YOUR code. This ensures proper functioning that you can
control & offer support for. If 'xyz' software wants to interface with you,
then they can code it themselves or contact the programmer.

A good programmer knows that he can't rely on someone else to ensure all code
is there, nor can he take the chance that the *other* guy included the proper
modules. By including all necessary files in your own *sandbox*, you are sure
that the deployed app will run 100%. No dependencies on others ensures lasting,
quality software that you will be able to support.
Clean un installation is when you delete the directory & all references are
gone forever :)
1. Why can't you just unzip a program and run it?

There *are* some programs that are entirely standalone, but many of them
need registry keys and environment variables set, or provide support for
other applications, so that they need to be in the path and registry for
those applications to discover them.

Not true, see note above. Registry entries are NEVER needed.
2. Why can't the user add all those himself?

It makes no sense to require the user to do manually something the
computer can do automatically. That's what computers are *for*.

Yes, 'tis true, but computers & people make mistakes & crash. Registry
corruption can lead to full re-install under worse case scenarios. Stand alone
apps never need reinstallation unless their directory is deleted or sectors
corrupted.
3. But the security aspects?

Mixed views on this one.
With *most* brain dead malware...., if you are in the registry, it knows that
you exist & can affect you. If there is no entry, then it can't affect you
unless it scans physical directories for exe/com files :)
The more advanced malware designer doesn't need the registry to wreak havoc :(
4. Okay, but why can't the program itself do all that? Why a separate
installer?

Again, interacting with the operating system should be cleanly separated
from the actual program tasks. Having every program reinvent the wheel
and have its own code to write to the reegistry, add itself to the path,
etc is extremely bad design, and creates far more problems than it
solves.
That's not how true stand alone apps work. They don't reinvent the wheel, they
utilize it as long as it meets proper coding techniques. Again, good coding
negates those concerns as no registry entries are used.

ozzy
 
A good programmer knows that he can't rely on someone else to ensure all code
is there,

Isn't that someone else also a good programmer, if not how do you tell a
'zip' was created by one, or is it all in the mind.

Installers are there to make it easier for Users not 'good programmers'
 
Is there a site that lists exclusively no-install freeware/shareware? I
also cannot stand install type programs (writing to registry is ok).
Lately my primary factor in evaluating freeware is whether it is a
standalone executable.
 
Paul said:
Is there a site that lists exclusively no-install freeware/shareware? I
also cannot stand install type programs (writing to registry is ok).
Lately my primary factor in evaluating freeware is whether it is a
standalone executable.

The ACF program pages note that information. Look at the I column - n.i.
indicates no install, n.r. indicates no registry entries. (Click on the
I column to sort the pages on that column.)

http://www.pricelesswarehome.org/acf/P_ProgramIndex.php

Susan
 
Back
Top