I have an MSI installation with a deferred custom action that is written in a dll (called CustomAction.dll) which gets installed in the same program folder as the main application. CustomAction.dll relies on a third-party dll (called ThirdParty.dll) which ALSO gets installed in the same folder as the application. The third-party dll is linked with a delay-load setting so that it doesn't get loaded until it is needed. Because the custom action doesn't get invoked until AFTER all of the files have been copied into the application folder, the system normally has no problems loading the dependent dlls. It simply searches the various paths for ThirdParty.dll according to the rules outlined here:
I have used this installer on countless systems (XP, Vista, W7) without a problem. Now, I have one Windows XP Home computer on which the installer is not working. After a lot of diagnostic work I've determined the following:
- The custom action is triggering exception code 0xC06D007E (which indicates a delay-load failure) at the time it tries to utilitize the functionality in the third-party dll.
- At the time of the error, both CustomAction.dll and ThirdParty.dll are in the same application folder.
- A walk-through of the dll dependencies with depends.exe on the target system at the time of the error shows nothing missing or problematic. (A couple of delay-load dlls used by Vista are missing, but that is to be expected since the OS is XP.)
- There do not appear to be any file permission problems with any of the dlls.
- A log of all of the activities of msiexec.exe with ProcessMonitor.exe shows that the system attempts to load ThirdParty.dll from a number of paths, NONE of which are the original path from which CustomAction.dll was loaded.
This is the only system on which I've ever seen this behavior. Incidentally, this system had other problems including a corrupt installation of MSXML6 which required correction in order to successfully install SQL Server 2005 Express. Furthermore, when I attemtped to install LogMeIn on this machine so that I could do some remote troubleshooting later on, that installation also failed. However, I was able to successfully install GoToMyPC. So I suspect that my problem is due to something being corrupt or misconfigured with the system. But I don't have a clue what kind of problem would cause the path search mechanism to ignore the directory from which CustomAction.dll loaded when looking for ThirdParty.dll.
-- Daryl Shockey