Limitations of Dynamic File Linking

InstallShield 2019

Important • Dynamic file linking should be used with caution. If you inadvertently delete a dynamically linked file from the source folder that your dynamic link references, that file is not included in your release the next time you build it, and InstallShield does not display any build warning or error. Your product may install without any issues, but it may not work as expected, since the dynamically linked file that was inadvertently deleted is no longer being installed. Therefore, it is recommended that you avoid using dynamic file links for critical executable files—such as .exe, .dll, or .ocx files—especially if your product requires them in order to run successfully.

Whenever possible, it is better to use the best practice method, instead of the by-directory method, for creating components for dynamically linked files. Note that with both methods, however, a minor upgrade, a small update, or a patch may not install correctly if a file that was present in a target image is removed from the dynamic link for the upgrade or patch.

Limitations for Windows Installer–Based Projects

Note the following limitations if you are considering dynamic file linking in Basic MSI, DIM, InstallScript MSI, and Merge Module projects:

You cannot create custom actions to a dynamically linked file.
You cannot associate a file extension with a dynamically linked file.
You cannot extract COM information from a dynamically linked file.
You cannot set any properties such as Shared, Permanent, or Never Overwrite for a dynamically linked file.
You cannot use the .NET installer class functionality for a dynamically linked file.
You cannot specify that COM interop should be enabled for a dynamically linked file.
You cannot change default file settings (such as Read-Only or Hidden).
You cannot set file permissions for a dynamically linked file.
You cannot create shortcuts to a dynamically linked file.
You cannot perform a static or dynamic scan of a dynamically linked file.
You cannot exclude a subfolder from a dynamically linked folder.
For Basic MSI projects: You cannot launch a dynamically linked file from the SetupCompleteSuccess end-user dialog.

Any file that you add directly (not through dynamic linking) to your project has an internal name (FileKey). When you create a custom action, a file extension, shortcut, or other type of item, it actually points to this internal name.

When you add files to your project through dynamic links, the files are not physically added to the project. This means that these files do not have any FileKeys that can be associated with custom actions, file extensions, etc.

Limitations for InstallScript–Based Projects

For InstallScript and InstallScript Object projects, a single component cannot contain both static files and dynamically linked files.

See Also