To start with, we looked at B146004, which seemed to be an identical problem, and ran the supplied dxTest_B146004.exe, but that had no problems and did not hang.
Our ActiveX Library has several VCL forms containing a number of DevExpress components, and are the same forms that we use in the EXE version of our application. The DLL allows third party developers to use particular exposed functionality available in the main application in their own developments.
Several of these forms have TcxTreeLists and also have a TdxComponentPrinter included so that the trees can be printed as they appear on the screen.
After much trial and error, we have identified that one of the units added to a VCL form when a TdxComponentPrinter is included causes the ActiveX DLL to hang when trying to register using REGSVR32, but only on a very select number of computers; one in-house and two known of at client sites. This is out of an installation pool of over fifty machines.
The hang occurs on these same machines whether we built the DLL using Delphi 7 and ExpressPrinting System 2011 1.7, or Delphi XE2 and ExpressPrinting System 2011 2.6.
We created a version of the ActiveX Library where all TdxComponentPrinters were removed, and any related unit in the Use clauses were removed. This version successfully registers with Regsvr32 (from an elevated command prompt, of course) without hanging.
We then added a single TdxComponentPrinter to one of the forms, and upon saving, the following units were added to the Use clause:
dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, dxPSPDFExportCore, dxPSPDFExport, cxDrawTextUtils, dxPSPrVwStd, dxPSPrVwAdv, dxPSPrVwRibbon, dxPScxPageControlProducer, dxPScxEditorProducers, dxPScxExtEditorProducers, dxPSCore.
So we created a new ActiveX Library with a single interface and CoClass, with a single method that would display the FormMain included in dxTest_B146004. This also successfully registered.
But as soon as we added the dxPUtl unit mentioned in B146004 to the form from the B146004 sample, the DLL hangs Regsvr32, so we're pretty certain that something in that unit is causing problems, both in version 59 from 2010, and version 2011 1.7 and 2011 2.6.
Do you have any suggestions on how we can track down what is going wrong inside dxPUtl?
Show all comments