PDA

View Full Version : SB8.1 not registering .DLLs



klmag
11-20-2013, 08:19 PM
I have about ~50 .DLLs + 2 COM Interop DLLs, which were created from tlb, and the 2 DLLs that were used to created the tlb's. I'm making the switch from InstallShield to SB8.1.

In InstallShield, it shows, of the ~50 .DLLs, that they are Shared, COM Extract at Build = Yes, .NET Scan at Build = Dependencies and Properties, .NET COM Interop = No.

In SB8.1, I've tried a bunch of different combinations of setting up the project to register even just 1 of the 50 .DLLs, but failed every time.

To paint a picture, after my application is installed and run, I check to see if the 2 COM Interop DLLs (and the 2 original .DLLs) are registered; my application will shut down if they aren't.

When the user invokes commands which calls (Note one of my Interops is for IDeviceInfo, the other 50 DLLs implement IDeviceInfo):


Type comObjectType = Type.GetTypeFromProgID(className, true);

object comObj = Activator.CreateInstance(comObjectType);
_Plugin = (IDeviceInfo)comObj;

The comObj cannot be created because the .DLL with that class name wasn't registered.

I used a dependency scanner to see if the .DLLs were registered, which it showed that they were not, however when I searched the register for the class names, all the class names were in the registry!

So my question is, all is all the type information getting into the registry, but the .DLL isn't registered? If I register the 50 DLLs using regsvr32, then everything works like a charm and the dependency scanner picks up the .DLLs.

Any suggestions? I tried using the GUI "Details..." of the components, I've tried using Register File Operation settings, but nothing seems to work. I also pondered if it could be the order in which the operations were in the script, but I don't know.

linder
11-21-2013, 01:34 AM
Hello,

If you are interested, please send your project file (.sb8) and one of the self-registering DLLs (which failed to register) to support [at] lindersoft [dot] com and we'll review the project for you.

Friedrich

klmag
11-21-2013, 10:19 AM
Project should be waiting in the inbox :)

linder
11-21-2013, 10:51 AM
Hello,

Thank you :) Unfortunately, there is no .sb8 project file in the ZIP archive. Could you please send it?

Friedrich

linder
11-22-2013, 04:06 AM
Hello,

We have debugged the installation process and I think we know what is going on in your case. Item in review.

Friedrich

linder
11-27-2013, 04:50 AM
Ticket closed. It was a DLL specific problem (not caused by SetupBuilder). The installer loads the DLL and calls the "DllRegisterServer" API to execute the self-registration process. In case this process fails, the installer retries it with another self-registration option. Problem is that, although this DLL fails to create all registry items, it returns SUCCESS. We have modified the SB runtime source code to handle this specific scenario in the next maintenance build.

Friedrich