I'm not understanding the difference between what your API does and calling Regsvr32 in a custom action. They appear to do the same thing. Why would your procedure fail and a custom action using Regsvr32 (which is essentially the same) succeed? You have our objects. Have you tested creating a custom action to verify that it works?As I said, all our "Extract registration info from native library" option does is to simulate the COM registration and sniff the registration data.
Regarding hand editing of the COM and registry pages, we are aware that adding items manually to the AI COM page does not generate the required registry entries, which must be done separately. At this point, it appears impossible to enter all of the required data by hand successfully. You seem to be confirming this is the case.
As a gesture of good will, and in recognition of the fact that our company has been inconveniced by these AI COM extraction issues for almost three years, we would like to suggest that AI should at least test whether or not a custom action using Regsvr32 would work and then provide us with the code template so that we could modify it as necessary. The benefit for AI is that they would have a proven workaround to suggest to other Embarcadero clients who find themselves in a similar position.
It goes without saying that our company has spent many unproductive hours diagnosing these and other issues for AI at our own expense. Several of these issues remain unfixed to this day, such as the internal AI code signing engine timing out and the lack of AI support for Authenticated Users (which is provided by InstallShield Express). As a small business with a single infrastructure programmer, we are reluctant to delay our current development work further while experimenting with developing a DLL to do this, unless we know it will succeed.
BTW, it should be recognized that there are fundamental differences in the approaches to COM registration that we have discussed. ISX does a extraction at build time, which means that the COM data that is extracted is always refreshed at build time. AI (when it worked) did a one-time extraction and placed COM data into the AI project. The advantage to this (and our saving grace at this point) is that once the data is correct in the AI project, it is not subject to change unless we modify our COM objects and do another extraction.
However, your proposed solution would rely on self-registration at install time via a custom action and Regsvr32. The native mechanism for this (self registration) was deemed unsafe by Microsoft several years ago and dropped. Using Regsvr32 in a custom action defers extraction of COM data until the actual install takes place. This means that it is subject to whatever variances are in play on every one our client machines -- meaning that its success is subject to the version of windows, the current windows updates and whatever security policies are in place on each individual client computer.
So, rather than writing a known set of verified COM data consistently at each installation, the custom action method is subject to potential issues that could vary from one machine to the next -- a potential support nightmare -- as demonstrated by your API issues.