<p>Heavy emphasis on simple. I've never made an installer and I'd rather not have to learn much. A system that I could hand a pile of files to and it would make some smart guesses about where to put them would be ideal.</p>

<p>Go ahead and answer the general question.</p>

<p>However In my cases I'm stuck with some extra constraints. The program to be installed is written in VB6 (or is it 5?) and a few previous versions of VB, so it's <em>not</em> going to be updated any time soon. I have a running install and will have a Clean VM to play with So I'll be doing a loop of: run the install, find where it's broken, fix it, add that to the installer, revert the VM, try again. If anyone has a better approach I'm open to suggestions.</p>

<p>I <em>MUST</em> get it working on XP and I'd really like to also have something that will work on newer versions of Windows as well.</p>

[{'answer_id': 23848, 'author': 'Nick', 'author_id': 1490, 'author_profile': 'https://Stackoverflow.com/users/1490', 'pm_score': 2, 'selected': False, 'text': '<p><a href="http://www.dependencywalker.com/" rel="nofollow noreferrer">Dependency Walker</a> is super useful for finding out which dll is missing from the installer.  Once you know the dll, you can find what merge module it is in using the <a href="http://www.installsite.org/pages/en/msi/msm.htm" rel="nofollow noreferrer">Merge Module Finder</a>.</p>\n'}, {'answer_id': 23857, 'author': 'Imran', 'author_id': 1897, 'author_profile': 'https://Stackoverflow.com/users/1897', 'pm_score': 5, 'selected': True, 'text': '<p><a href="http://www.jrsoftware.org/" rel="noreferrer">InnoSetup</a> or <a href="http://nsis.sourceforge.net/" rel="noreferrer">NSIS</a>, whichever seems easier to you. <a href="http://www.istool.org" rel="noreferrer">ISTool</a> is a nice GUI tool for InnoSetup which makes creating setup scripts even easier.</p>\n'}, {'answer_id': 23859, 'author': 'Tanerax', 'author_id': 567, 'author_profile': 'https://Stackoverflow.com/users/567', 'pm_score': 1, 'selected': False, 'text': '<p>I have worked with NSIS and getting past some of its minor complexities its a fantastic system. its free, offers tons of plugin ability and managed to do everything I needed to do.</p>\n'}, {'answer_id': 23919, 'author': 'Brian Ensink', 'author_id': 1254, 'author_profile': 'https://Stackoverflow.com/users/1254', 'pm_score': 3, 'selected': False, 'text': "<p>I've used InnoSetup several years ago, before Vista, and was very happy with it then.  I only had a few files to install and a Start menu icon. It worked great, and was easy to learn.</p>\n"}, {'answer_id': 35619, 'author': 'jmatthias', 'author_id': 2768, 'author_profile': 'https://Stackoverflow.com/users/2768', 'pm_score': 0, 'selected': False, 'text': "<p>My advice is this. Try to keep the installer as simple as possible. Windows Installer is a very complicated piece of software and when things don't work right it can be hard to figure out what's going on. I'm sure we have all experienced the endless loop of Windows Installer trying to repair a file that you no longer have the source .msi file for.</p>\n\n<p>Most of the time using Windows Installer is like using a sledge hammer to crack a nut.</p>\n\n<p>I use InnoSetup for my own stuff and InstallShield at work (against my will). Start with a simple script based installer and only use Windows Installer if you have a good reason to.</p>\n\n<p>Note that support for installing assemblies to the GAC may be missing for some non Windows Installer setup tools (such as InnoSetup).</p>\n"}, {'answer_id': 359091, 'author': 'Brad Bruce', 'author_id': 5008, 'author_profile': 'https://Stackoverflow.com/users/5008', 'pm_score': 0, 'selected': False, 'text': '<p>I <strong>used</strong> to LOVE Inno Setup.  Emphasis on "used to".</p>\n\n<p>When you run the single file installer (what you\'d typically do), it unpacks the real setup program into a folder under the temp folder and then tries to execute it.  The problem is... some anti-virus programs don\'t allow this.</p>\n\n<p>The author is aware of this and refuses to do anything about it.  The folder name is random, so cannot be added to any exemption list your anti-virus program may use.</p>\n\n<p>Again.  The author is aware of this and suggests that I tell my users to turn off their anti-virus programs during installation.  (Like that\'s going to happen)</p>\n'}, {'answer_id': 1328295, 'author': 'Bob77', 'author_id': 126278, 'author_profile': 'https://Stackoverflow.com/users/126278', 'pm_score': 1, 'selected': False, 'text': '<p>Creating a full setup package for a program is almost a subject area in itself.  There are many factors to consider and most of us aren\'t running Windows 95 anymore.  The world is not as simple as it once was.</p>\n\n<p>There are a lot of things that need to be addressed, and some of these "setup" issues mean changing the program too.  For example the "protected folders" concept that seemed to be new to people when Vista UAC came on the scene.  I guess they were all running as admin or something?  In its simplest form it means you don\'t put writeable files next to the EXE in Programs (aka "Program Files") anymore.</p>\n\n<p>Another factor is that the way the registry is used has changed.  I\'m not talking about registry virtualization, though that\'s part of it as well.  But COM registration can be done both per-machine and per-user and even turning UAC off can muck this up.  See <a href="http://blogs.msdn.com/cjacks/archive/2008/06/06/per-user-com-registrations-and-elevated-processes-with-uac-on-windows-vista-sp1.aspx" rel="nofollow noreferrer">Per-User COM Registrations and Elevated Processes with UAC on Windows Vista SP1</a>.  The result is that a setup package shouldn\'t be running regsvr32 (or otherwise calling the self-reg entrypoint of a COM library).  See "Remarks" at <a href="http://msdn.microsoft.com/en-us/library/aa371608(VS.85).aspx" rel="nofollow noreferrer">SelfReg Table</a>.</p>\n\n<hr>\n\n<p>Windows Installer is <em>the</em> way to go forward in most cases.  VB6 programmers have Visual Studio Installer 6.0 version 1.1 available as a free download for creating MSI packages.  See "COM Servers" at the VFP article <a href="http://msdn.microsoft.com/en-us/library/ms917380.aspx" rel="nofollow noreferrer">Using Microsoft Visual Studio Installer for Distributing Visual FoxPro 6.0 Applications</a> for some valuable information.</p>\n\n<p>This isn\'t the easiest option but there is a VB Setup Wizard in VSI 1.1 to help get the basics right.  Doing advanced things like creating a [CommonAppData] subfolder and setting Everyone rights on it has to be done in a post-build step outside the IDE.  That\'s where 3rd party tools can be useful to give you more control without resorting to Orca or post-build Installer scripts.</p>\n\n<p>Those guys making scripted "legacy" installers try to keep up, but the scripting gets more and more complicated.  The results are sometimes iffy.  Windows 7 introduces a few new wrinkles of its own.</p>\n\n<p>While ClickOnce isn\'t really the best option for VB6, nothing says you can\'t use reg-free COM for XCopy installs of many programs.  Reg-free COM can even be a good option for use in an Installer package for that matter.</p>\n\n<hr>\n\n<p>So in the end the "simplest" way to deploy VB6 programs is probably going to be reg-free COM XCopy packages wrapped in a self-extracting EXE that will fire off a script to create a Start Menu shortcut.  If you can live without the shortcut this is even easier: just unzip the package where it needs to go!</p>\n\n<p>See <a href="http://mmm4vb6.atom5.com/" rel="nofollow noreferrer">Make My Manifest</a> or alternative tools for reg-free COM packaging.</p>\n\n<p>This requires that the target systems be running XP (preferably SP2) or later.  The only possible glitch here is that XP did not include the VB6 SP6 runtimes until XP SP3, so you\'ll want to test your program against the VB6 SP5 runtimes first.  Well one more glitch: you can\'t use ActiveX EXEs this way, they still require registration.</p>\n'}]
['https://Stackoverflow.com/questions/23836', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1343/']