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>
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>
<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.
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