Tuesday, January 15, 2008

QuickBooks dependent client application installers

ast week we were busy in the deployment package of ERP related installer. There were number of issues that we found in this exercise and I am documenting those for the future reference. Following items were found to be culprit and they need to be taken care during any installer developed for quick books related items.
  1. Qbfc6.dll is a dynamic link library which is a COM component. Ideally all component can be copied anywhere in the computer as per definition of COM and they are accessible to other applications. But unfortunately qbfc6.dll can only be registered in program files –> common files–> QuickBooks folder. The reason of the problem is that dll entry point qbfc6.dll is located in some other module. So any installer which is using qbfc6.dll must have the ability to register this dll from above mentioned location. So far no document available for this problem.
  2. QBFC merge module is the second area which needs to be focused. As per documentation this merge module is responsible to install and copy the interops (inter-operatablity .net wrappers) and copy/register COM objects to the location mentioned above. But in actual merge modules only copy the files to the location and they do not register any component.
  3. If you have installed QBSDK 7.0 there are three different versions of Interop files. By default these interops are registered to global assembly cache but no documentation is available which describes this feature of these interop files. These versions are,, no SDK document mentions that a new version qbfc6.dll interop is a part of QBSDK 7.0.
  4. You can create interop of any COM file by just adding the reference of COM to your .net project but in case of qbfc6.dll you have to use the interops provided by quickbooks not the one generated by VS 2005.

So any installer which is developed for QuickBooks related project must be able to copy the qbfc6.dll to common files, and then register from this location. All QBFC Interops must be register to GAC (global assembly cache) and they should be available at application path for the applications. All project using QBFC 6.0 must use the itnerops developed by QuickBooks not the one generated by VS 2005.

No comments: