Quick Guide to Installers
Introduction
Watch out for Windows File Protection (WFP): Does Windows say anything when
an older installer tries to update a system component, or does it silently reinstall
its version?
Some tips:
- "I maintain one old box with Win95b on it. I do all my 'production'
compiles there, as well as building installer packages. Don't _need_ it
all that often, but the quantity of headaches saved has been immeasurable"
MSI vs. EXE Installers
- From: Gavin Lambert <iss@mirality.co.nz>
-
- MSI:
-
- pro:
- sanctioned by Microsoft
- supports "broadcast" installations
over network
- supports on-demand or "advertised"
installations
-
- con:
- fairly awful tools
- database driven
- bloody hard to get to actually work correctly
- frequently decides to randomly reinstall
itself and annoy users
-
- EXE: (in general, not just Inno)
-
- pro:
- self-contained, no additional stuff necessary
- works on older versions of Windows
- usually easier to "get into"
- script driven
- more consistent results
- *sometimes* decent tools (I class Inno
as having excellent tools) :)
-
- con:
- not sanctioned by Microsoft
- sometimes bad or sparse tools
- if closed-source, might lose support and
no longer be updated
- can't be used for "broadcast"
or "advertised" installs (except by wrapping with an MSI)
NSIS
- Nullsoft's SuperPiMP
- Very compact, stand-alone EXE's
- Scripting language, but takes time to get used to
- More info here
HM NIS Edit
NSIS Workbench - FNSIS
Venis IX
- http://www.spaceblue.com/
- "Venis IX paid registration is required for commercial use. Included
in your $30.00 registration: Awesome NSIS editing environment, etc."
- Adding sections is a bit awkward (can't select destination in list,
must type $SYSDIR)
PimpBot
- Seems to be used internally by WinAmp/AOL to automate download of WinAmp
only
GUI for NSIS
Atomic GUI
- Written in VB, requires MSCOMCTL.OCX
- Interface in ENG
- Requires drag n dropping files from Windows Explorer
Mihov NSIS Helper
Inno Setup
- InnoSetup
- More information here
- VBP import doesn't seem very reliable
- My
Inno Setup Extensions (most have been added to Inno, but some can be
had as add-on's; "My Inno Setup Extensions is currently based on Inno
Setup 3.0.6. My Inno Setup Extensions adds 'Pascal scripting' to Inno Setup,
adds child components and tasks support to Inno Setup, uses a modern looking
Setup icon and comes bundled with Inno Setup Preprocessor.")
- "Version 4 added run-time scripting support to Inno Setup. The
scripting engine is Innerfuse
RemObjects Pascal Script by Carlo Kok"
- Just like NSIS, Inno is just the compiler. Editors such as ISTool are available
to make it easier to build source scripts
Setup2Go
"Setup2GO is is a tool
for designing full-featured, 32-bit Windows Software Setup solutions in seconds.
Setup2GO supports all 32-bit Windows versions in use today - Windows 95, 98,
ME, NT4, 2000, XP."
Instyler
http://www.instyler.com
SmartSetup
- Pretty good, but the interface is only in ENG, the FR language file
had its accents wrong (Macintosh?), and adding files is a bit cumbersome
(must create a Component, which really is a group of files that must be
copied in the same destination folder)
Ex-it!
- Create self-extracting files of any type
- Only one of the files in the package can have its icon on the desktop
InstallJammer
- "InstallJammer
is a multiplatform GUI installer and builder designed to be completely cross-platform
and function on Windows and most all versions of UNIX with eventual support
for Mac OS X."
InstallBase
Web Update Wizard
- http://www.powerprogrammer.co.uk/
- "The Web Update Wizard lets you add 'update over the web' functionality
to your applications with just a single line of code."
- Only $99.95 USD Launch Price
Agentix AGInstaller
- "AGInstaller
is an script-based tool you can use to build full Windows compatible installers
for your developments to distribute to single or enterprise-wide users.
It has a professional-looking interface and creates compact installations
with minimal overhead that are packed into one self-explaining file for
easy distribution. The size of the extractor module is 46k only overhead
compressed data size."
- Single Developer License Price: $29.95
Chief's Installer Pro
IncUpdate
- http://www.sunisoft.com/
- "IncUpdate is the tool that helps you to add the professional web
based updating system to your software product in 10 minutes and you needn't
write a single line of code. As it is a developer tool, not component, you
can use it no matter what programming language you are using."
- USD$129
Setup Specialist
FileStream InstallConstruct
- http://www.filestream.com/ic/
- "Creating packages for setup and file delivery on all Windows platforms
is made simple with InstallConstruct. With the step-by-step interface, you
can create simple or advanced installers quickly, without time-consuming
training or complex technical manuals. The latest release (6.5) also lets
you create or rewrap your program as Windows Installer (MSI) with Elevated
Privileges."
- Price $295.00
SetupStream
- http://www.virtualzone.de/setupstream/
- pretty nice, but interface only in ENG
- Freeware
- When adding files to project, you can't mix files that must be installed
in different directories (ie. select all the files that must go into
the app's directory, OK, then select all the files that must go into
$SYSDIR, OK, etc.)
CreateInstall
Setup Generator
- http://www.gentee.com
- Freeware (but Version: 2001.1.0, and "Setup Generator
is no longer supported installer. We recommend you to look at our new CreateInstall.")
Ghost Installer Studio
Proggle Installer/GD
AWInstall
Caphyon Advance Installer
- http://www.advancedinstaller.com
- "Advanced Installer is a Windows Installer authoring tool which
enables developers and system administrators to easily build reliable MSI
packages that meet the latest Microsoft Windows logo certification requirements
and follow the recommended Windows Installer best practices."
DeployMaster 2.6.2
- ENG interface
- Too many options
Installer2Go
AGInstaller 1.09
- CLI application
- ENG interface
Stardust Setup Packager
GPP Software Setup Builder
LizaJet Installer
- http://www.lizajet.com
- Complete-8 Edition With this Edition you have everything including Foreign
Translation, Digital Signing, and a full Script license.$1197
Thraex Astrum InstallWizard
Ondemande Software
Advanced Installer
- Advanced Installer
- Creates MSI files : 98SE requires an add-on to run MSI files
- Freeware edition available; Professional US $99
- Only English available in UI or does it use the Windows locale automagically?
Gammadyne SEAU
EZInstall
TinySetup
Bitrock
- InstallBuilder
- http://www.bitrock.com
- Available for Linux and Windows, and free, fully functional licenses for open source projects
VAI
Myncos CBInstaller
Dacris ActiSetup
- http://www.dacris.com
- Requires the .Net framework
- "The current build number is 3620 (alpha 9). For one license, the
final version will cost $249 USD. One language pack will cost $199 USD"
Tarma Installer
- Tarma Installer
- Fast, generates very compact EXE's, very nice interface
- Free version available; Pro US$99
- Self-extracting Setup packages for Internet downloads, OCX registration,
foreign language support
Here's how to create an empty directory:
- [Project - Files page] QuickInstall only creates a directory when the
first file or subdirectory in it is created. Therefore, you cannot create a truly empty directory.
- The recommended way to create an "empty" directory is to add an empty
(0-bytes) file to the directory on the Project - Files page and mark
it Hidden. The directory will be created when that file is installed,
and removed when the file is deleted (and the directory is
empty).
- [Advanced - Actions page] You can create directories here as well if
you use the following action settings:
- - Target path: <%ComSpec>
- - Arguments: /c mkdir "<ProgGroupDir>\SomeEmptyDir"
- - Run options: Synchronous, NOT ShellExecute
- - Run program: Hidden
- Others as per default. Place this action (using Ctrl+Up and
Ctrl+Down) after "Install: Shortcut installation" because that action will
create the <ProgGroupDir> parent directory.
- In this case, you will have to add a similar RMDIR action to clean up
the directory during uninstallation; place that one just before "Uninstall: Shortcut removal". The directory must be empty at that
point; if necessary use a
- - Arguments: /c DEL /y "<ProgGroupDir>\SomeEmptyDir\*.*"
- ...action to clean up.
Tips:
- To avoid filling the Project > Project Identification parts manually,
add the main EXE of your application in Project > Files > AppFolder,
then go back to Project > Project Identification, check "Link to
main executable", select the EXE: Voilą, Tarma fills the fields automagically
- To select the default application target directory, open the Installation
tab, and fill the "Application folder" item. Absolute targets
are not recommended; You should use eg. <ProgramFiles>\<AppTitle>
instead. If you chose an absolute target, eg. C:\MYDIR, as the destination
folder, go to the Build section, and uncheck "Treat warnings as errors";
Otherwise, Tarma will fail building the installer as it doesn't recommend
using absolute paths
- (Pro version only) To select a language other than English, go to Installation
> Languages, check "Multilingual support", and select which
languages the installer should support. Then, go to the Build section, and
select "Build Pro Installer" (Tarma should really check this automatically
when the user has selected any option that is only available in the Pro
version...)
- To have the installer create extra directories during its process, just
create an empty folder in Files section
- To tell Tarma where to create the installer and under which name, go
to the Build section, and fill the "Single Exe" item
- To run Tarma from the command-line to build an installer, path\tin /build
myproject.tin
- To tell Tarma to generate a multi-part installer that fits on a floppy,
- To create a link to an EXE in the Startup directory, use <Startup>
to create a link for All Users, and use <@<ShellFoldersCU>\Startup>
to create a link for the user currently logged on
Bugs:
- In the french localization, in the welcome screen : "Tarma Installer
vous aiderį" ą installer
- Couldn't find how to hide the setup.exe item that is displayed (and
locked) in the appfolder. What is this for?
- Selecting any feature specific to the Pro version should check the "Build
Pro Installer" option in the Build page (generates an error otherwise)
- Having Tarma fill the info Project screen from one of the binaries in
the project : Should move this part in the Files section. Strange to have
to first go to the sub-directory Files, add an EXE, then go back to the
Project page to select "Link to main executable"
- In the language section, add a "(Un)Select All" button so
as to select/unselect all the languages in one go. Useful when you want
to generate an installer that will use only one language
Quick Install Maker Pro
GVH Setup Maker
VB's PDW
- DEP for each OCX -> Build -> LST -> Inno
- Packaging and Deployment Wizard; Comes free with VB; Buggy, no scripting
language available, and doesn't generate a single EXE
Microsoft's MSI
Wise
As fat and ugly as InstallShield?
INF Tool
- INF Tool
- Last update: 30-Jul-2002
- Lite version free for personal use, INF-Tool Professional - even
more power for just $59.00 (for business use)
- Pro supports OCX registration and Single EXE distribution
- Support for foreign languages
InstallShield
Setup Factory
GKSetup
- GKSetup
- Couldn't figure out how
to add French
Linder SetupBuilder
- Linder SetupBuilder
- Standard edition $199.95
- Feature-rich, but usable
- Can't tell DLL and OCX's to be installed to $SYSDIR, but must select
SYSTEM or SYSTEM32?
- In language files, not all strings translated
QSetup
- QSetup
- Free version has a nag
screen; Pro version is $199
- Support for foreign languages
- Fairly easy to use
Resources
- IsTool (GUI applet to create InnoSetup
scripts, before feeding them to Inno for compiling) and ISX
Download DLL (to add Internet support)
- Dependency Walker ("scans
any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds
a hierarchical tree diagram of all dependent modules.")
Temp Stuff
COMCTL32.DLL: http://www.microsoft.com/permission/copyrgt/cop-soft.htm#COM
Beware of the file list that is created using the VB setup wizard (or come
to that the Visual Studio installer) as both tend to add files that should not
be distributed. If you have used any API calls in your VB program these will
include the dll'd for those API calls and could well crash the users machine
big time rewquiring a reinstall of the operating system if you include them
in your installation kit. One example is wininet.dll another as stated is MSVCRT40.DLL.
For a vb install you need to include the VB runtimes and any other files
identified within the VB development under Project > Components. Highlight
any boxes ticked and read the corresponding OCX/DLL. These together with the
VB runtimes ARE THE ONLY FILES YOU NEED TO AND SHOULD DISTRIBUTE with your application
data and exe file(s). The VB development program will not let you select any
components under Project > Components that you are not allowed to distribute
(if you can't tivk it - you can't distribute it)
> Some files are version dependent, eg CTL3D32.DLL has different versions
for Win NT and 9x I understand. The Crystal Reports runtime has at least one
such file as well. Can Inno Setup conditionally install these depending on the
target os? Yes, using a MinVersion parameter. See the Common Parameters help
topic.
Example: [Files]
Source: "9xonlyfile.dll"; DestDir: "{app}"; MinVersion:
"1,0"
Source: "ntonlyfile.dll"; DestDir: "{app}"; MinVersion:
"0,1"
Let me see if I can explain this understandably. Before VB5 projects were
compiled into "p-code" or pseudocode. That is, they weren't true executables
like C/C++ or Pascal:o) programs. They required a "virtual machine"
to run. That virtual machine is what we know to be runtime files. The runtime
files were basically the same as running your application in the VB IDE. However,
in VB5 this changed, you could control how your project was compiled, p-code
or native code. If you don't want to mess with runtime files then follow these
directions.
-Go to "Project" menu
-Select "<projectname> Properties"
-Select the "Compile" tab
-Select "Compile to Native Code"
-Select Optimization Options This will create a true executable like in C/C++
or Pascal, and you don't have to worry about installing runtime files with your
application. If you're worried about bloated code, choose "Optimize for
Small Code" Also, compiling to Native code will run faster than p-code,
you can also increase the speed by Optimizing for Fast Code. If you're a game
programmer, then you can utilize MMX instructions by selecting "Favor Pentium
Pro(tm)" I'm not sure how accurate these are, I'm making educated guesses
as to what the optimizations mean I haven't had a chance to test some of the
optimizations yet. This information came from The Waite Groups Visual Basic
6 Superbible
You're right about the "old" cd's. But I could give you many examples
of files that are located in a certain computer's \Windows\System directory,
that won't run on each version of Windows. For example, COMCAT.DLL version 5.0
has been installed on my computer, running Win98. But this DLL file won't work
on a Windows NT computer. But version 4.xx of the file, which is included on
the Visual Studio CD's WILL work on Win9x. So if I would use the COMCAT.DLL
file from my \Windows\System directory, my setups wouldn't work on a Windows
NT computer. A WinNT pc probably won't even start again after updating the COMCAT.DLL
file. I recommend this: get the files you need (see Jordan's page for info on
which files you need) from the CD and put them in a new, empty directory on
your HD. Then download the latest service pack (3), and extract the newer files
from it with a program like WinZip, and overwrite the files in the new directory.
You should then use the files from that directory to distribute your programs.
I have had many problems installing my program on different programs, until
I followed the procedure above. From then on (and after using Inno Setup of
course), I have had no problems anymore.
You need to know what files should be pulled from "where."
I've been doing some research on this to see WHERE the VB P&D lizard
pulls its "core" files from.
First, a bit of back-track. You CAN install VB6 so that you don't have a
KITFILES32 folder. And I'm not even sure that the VB stand-alone product (as
opposed to the entire Visual Studio) even has such an install feature. But I
believe that one of the options is to be able to create you own custom installs
instead of using the P&D. Anyway, on my personal install, I don't have any
such folder... I don't have Video Studio, just the standalone VB 6.0 product.
What I do have is: C:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWizard\Redist
which contains:
- Co2c40en.dll
- Comcat.dll
- Mfc40.dll
- Mdac_typ.exe
- Msvcrt20.dll
- Msvcrt40.dll
- Riched32.dll
I looked through a number of P&D Lists that were output by the wizzard
to see what files were taken from where. It seems that the only two CRITICAL
files are COMCAT.DLL and MSVCRT40.DLL. These are always sourced from the above
directory. However, the others like OLEPRO32.DLL, OLEAUT32.DLL etc. are always
taken from WinSys.
Perhaps if I tried to re-install of VB it might create another "redist"
folder and there might be more "stuff" in it, but I'm not going to
take a chance of screwing up my development machine by doing a re-install of
VB, SP3, and Mdac. However, I have modifed my Inno script to pull COMCAT and
MSVCRT40 from the VB "redist" folder. Indeed, I have heard from other
sources that a Win98 COMCAT.DLL from WinSys can totally trash an NT box.I always
wondered why the InstallShieldExpress came with their own versions of comcat
and msvcrt40 in a "redist" folder. And I noticed that ISX alwasys
pulls these files from its "redist" folder. What is interesting is
that while it comes with its own version of OLEPRO32, it does not use it. It's
"wizzard" pulls it from WindowsSys, as does the P&D Lizard.
I would think that if OLE... were "critical" files that they also
would be in the P&D "redist" folder.
Can anyone tell me if I can "add" to the VB install so that I have
a "full" install... or do I have to uninstall first (No way, Jose!!!)
I hope this helps someone out there.
Because the early (pre SP2) versions of the VB 6 Package and Deploy Wizard
were so full of bugs, many people on the VB news groups started calling it the
"Package and Destroy Lizard" and the name sort of stuck. The SP3 version
is a lot better but still has some quirks, mostly relating to what versions
of Jet it pulls in as well as some weirdness dealing with Mdac files and some
3rd party ocx files. It also has one of the worst interfaces of any MS program
ever written (I personally believe it was written outside of MS and sold to
them.) Because of this, most people use it just to create the .lst file, which
they use to create scripts for better install programs (like Wise, Inno, etc.)
But the P&D Lizard's bugginess was outdone by InstallShieldExpress's
VB Wizard. It would go out and pull in COMDLG32.DLL and one other DLL, both
of which should never be distributed because the wrong version can destroy an
NT box. Everyone and their dog was really excited when ISE came out with their
VB Wiz until they found out how buggy it was (and still is!!). People (or should
I say idiots like me) paid $350 for a tool that would make a VB install with
zero effort. When we found that it didn't work and that we had to manually add
our own files people left ISX in droves for Wise, which I'm told is now the
primo install tool. I came to Inno because I like the "script" method.
I'm an old person, been programming since 1973 (but still not too good at it
:-)), and am used to tools where you write a "script" to make it work
(IEBGENNR, IEBPRTPCH, WAAPDSUT, IEBDG etc.) While drag and drop is cool, I like
to SEE what the output is and have "control" over it. Inno does this
for me. Of course Wise would also, but to get the version that makes a script
you have to pay something like $500. As I remember, Inno cost me a lot less
than that :-)
The only two things I don't like about Inno is that 1. I can't easily set
up a file association between .iss and the compil32.exe so that I could open
Inno by clicking on an iss script and 2. when I re-install an app, I get another
version of uninstall.xxx. But like I said, the price was right, the support
is good, and the community is helpful. Why Jordan doesn't charge a fair price
for this is way, way beyond my intellectual abilities... but I'm old and don't
have many brain cells left.