I'm using WiX 2 (2.0.4221.0) to install a single COM+ Application (a.k.a. package) with 14 Components. To test, I first built a simple.wxs that had a single <pca:ComPlusApplication> as a child of a component. Within that I had a <pca:ComPlusAssembly> and a few <pca:ComPlusComponent> tags for each of the exposed classes. It all worked well - msi built, COM+ application created during installation.
 
Now I'm trying to "migrate" that out to my real install work and I'm running into an issue. I moved the <pca:ComPlusAppliation> out to a fragment which also contains a <ComponentGroup> and some <ComponentRef> entries like so (one for each of the COM dlls):
 
<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi"
     xmlns:pca="http://schemas.microsoft.com/wix/2005/02/pubca">
  <Fragment>
    <ComponentGroup Id="BusinessObjGrp">
      <ComponentRef Id="SBOAdmin" />
         ... {snip} ...
    </ComponentGroup>
    <pca:ComPlusApplication Id="AppObj" Name="My Objects"/>
    <UI />
  </Fragment>
</Wix>
 
I used some custom scripts to build a separate wxs for each of the COM objects and, for now, I've manually created the <pca:ComPlusxxxx> entries like so:
 
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi"
     xmlns:pca="http://schemas.microsoft.com/wix/2005/02/pubca">
  <Fragment>
    <DirectoryRef Id="BusinessObjDir">
      <Component Id="SBOAdmin" Guid="E43B8523-2915-41A8-B90E-829404A4E942" DiskId="1">
        <File Id="SBOAdmin_dll" LongName="SBOAdmin.dll" Name="SBOAdmin.dll" Source="$(env.BuildDir)\SBOAdmin.dll" Checksum="yes" KeyPath="yes" Vital="yes" DiskId="1" />
        <Registry Id="SBOAdminReg10" Root="HKCR" Key="CLSID\{34309D81-2602-11D1-920F-006008318B0D}" Action="" />
         ... {snip} ...
        <pca:ComPlusAssembly Id="SBOAdmin" Application="AppObj" Type="native" DllPath="[#SBOAdmin_dll]">
          <pca:ComPlusComponent Id="SBOAdmin.AdminQuery.1" CLSID="7C038CD4-18DB-11D3-A749-00104B2A85E4" Transaction="none" />
          <pca:ComPlusComponent Id="SBOAdmin.Attribute.1" CLSID="C870A451-B0FC-11D0-BEC4-006097584221" Transaction="required" />
          <pca:ComPlusComponent Id="SBOAdmin.Datadict.1" CLSID="34309D81-2602-11D1-920F-006008318B0D" Transaction="required" />
          <pca:ComPlusComponent Id="SBOAdmin.PropertyObject.1" CLSID="3EF68029-C360-11D1-9197-006097AFF206" Transaction="required" />
        </pca:ComPlusAssembly>
      </Component>
    </DirectoryRef>
  </Fragment>
</Wix>
To make this compile with WiX, I added the @Application="AppObj" to each assembly tag in each business object wxs file. The compile is successful but when I try installing, I get the following errors:
 
Action ended 19:10:23: InstallFiles. Return value 1.
Action start 19:10:23: WriteRegistryValues.
GenerateScript: Writing system registry values
Action ended 19:10:23: WriteRegistryValues. Return value 1.
Action start 19:10:23: ConfigureComPlusInstall.
ConfigureComPlusInstall:  Error 0x80070490: An application required by this installation was not found, key: AppObj
Error 26516. The COM+ application was not found.  (-2147023728   AppObj      )
ConfigureComPlusInstall:  Error 0x80070490: Failed to verify applications
Action ended 19:10:27: ConfigureComPlusInstall. Return value 3.
Action ended 19:10:27: INSTALL. Return value 3.
When I compare my full-blown MSI which is failing to the simple one that works (using Orca) I can see that the ComPlusApplication table is not populated. There is only one entry (row) which has the Application id and the name but that single row is missing the Component. And there isn't any other rows. I would expect there to be all 14 components listed somehow but they're not. I believe I've narrowed the problem to this point.
 
What I can't figure out is how to get WiX to associate (pick up) the <pca:ComPlusAssembly> and <pca:ComPlusComponent> entries in the other 14 wix fragments. Has anybody tried this or know of the trick. What worries me is this sentence from the 2.0 docs for ComPlusApplication Element:
 
"If the element is a child of any of the Fragment, Module or Product elements it is considered to be a locater, referencing an existing application."
 
Does this mean what I'm doing w/ the separate files can't be done? Is there a way to create (and probably correctly sequence) the creation of an empty COM+ application prior to the creation/registration of the components?
 
Thanks!
John
 
 
 
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to