FAQ: What system files must I deploy with my application?
Article Created: 2003-10-13 23:38 GMT by Jordan Russell
Last Updated: 2003-12-18 05:00 GMT by Jordan Russell
Which files should I install?
This is primarily dependent on which development tool your application was created with.
Delphi applications typically have no external dependencies, unless you use run-time packages, in which case you may need to deploy *.bpl files, or use controls like TCoolBar or TDateTimePicker, in which case a recent version of comctl32.dll (circa 1997) is needed.
At minimum, Visual Basic <= 6 applications need the Visual Basic run-time files.
Visual C++ applications may need run-time files as well.
I'm not sure whether my application needs a particular file to run. How can I find out?
A program like Dependency Walker can be useful in tracking down dependencies. Note, however, that you should take its results with a grain of salt; it will tell you every DLL an application uses, including those that are preinstalled with Windows (which you shouldn't deploy).
Often times the most reliable method of determining which files -- or which versions of files -- your application needs to run is to install it on a fresh installation of the oldest version of Windows you're willing to support (e.g. Windows 95, Windows NT 4.0), then see if you get any messages about missing DLLs or missing exports when you run it. (VMware Workstation really comes in handy here.)
In general, if aren't sure whether a particular file should be deployed, then you should not deploy it. Start with the bare minimum set of files and work from there. Don't do the opposite and deploy every system file you can think of. If you go overboard and replace system files you shouldn't (see below), you can break users' systems. (Certainly, an application that may not function due to a missing or outdated system file beats an unbootable system!)
I have determined that my application depends on a particular Microsoft DLL that doesn't come preinstalled with Windows. Where can I find a copy to deploy?
First of all, do not deploy DLLs out of your own Windows directory. Files in your own Windows directory are often tailored for your specific version of Windows, and will not work on other versions of Windows -- or worse (see below). This is especially true when you're running the very latest version of Windows.
Instead, search for versions of the DLL on Microsoft's web site that are deemed "redistributable". (http://www.microsoft.com/downloads/ is a good place to start.) Such versions are normally safe to install on any Windows version (but check the README files to be sure).
If nothing turns up, then probably you aren't allowed to individually deploy the DLL in question. For example, in the case of shlwapi.dll you can only get it by installing Internet Explorer 5 or later. (Never try to deploy Internet Explorer DLLs individually; instead, direct your users to install Internet Explorer independently of your application.)
Be sure to avoid deploying any files pertaining to the Windows kernel, shell, or Internet Explorer, the reason being that such files are often tied to a particular Windows version, and installing them on other Windows versions can render the systems unbootable.
Files that you should never deploy include, but are not limited to:
Site contents Copyright © 1997-2012 Jordan Russell. All rights reserved.