If I understand you correctly you have a DLL in the Binary table that you want to run after the product files have been copied to their final destinations.
You can't use immediate execution because the installer is only building the script at that point and no files have been created yet. The custom action must be deferred and must be placed somewhere after InstallFiles and before InstallFinalize in InstallExecuteSequence. If you put it any sooner the files won't have been moved to their target directories yet and so won't exist. If you put it after InstallFinalize it will never run because InstallFinalize runs the installation script so there's no point in adding things to the script afterwards.
Here's what I think you want. A custom action of type 1 (dll in Binary table) plus 3072 (deferred execution) in other words 3073. You could also add 64 if you want to ignore the exit code giving 3137.
The Source field should be the value of the primary key of the row in the Binary table that contains the DLL.
The Target field should be the name of the entry point (function) in the DLL that you want to call. The MSDN documentation on custom action type 1 describes how to declare this function so that the installer can call it. Is it possible that you have declared it incorrectly and that this is causing the installer to crash when it attempts to call it?
Try producing a log file of the installation. It might help narrow it down.