[wix-devs] WixComPlusExtension Status update 1

Edwin Castro egcastr at gmail.com
Thu Aug 15 21:56:56 PDT 2019


That explains why it sounds weird. As an adjective, Imported should be at
the beginning: ImportedComPlusComponent

<comPlus:ImportedComPlusComponent Id="CalculatorComPlusComponent CLSID="
D0213ABD-5928-481E-AF3E-51B860AF47D2"/>

What if instead of replacing <comPlus:ComPlusAssembly/> with
<comPlus:ComPlusImportedComponent/> (or
<comPlus:ImportedComPlusComponent/>) perhaps you add an Import="yes|no"
attribute (defaulted to "no") to <comPlus:ComPlusAssembly/> and
conditionalize behavior based on the Import attribute?

--
Edwin G. Castro


On Thu, Aug 15, 2019 at 8:02 AM Allen, Eric M. (Tax&Accounting Prof) via
wix-devs <wix-devs at lists.wixtoolset.org> wrote:

> I'm 99% sure I only received this because I'm on the cc line, given I got
> this but not the announcement of the meeting cancellation, which the
> archive indicates was sent out earlier. I'll continue to pursue issues with
> my IT department about the mail list blockage.
>
> The use of "Imported" is meant more as an adjective, not a verb. (Think
> "Imported cheese" vs "Domestic cheese".)
>
> -----Original Message-----
> From: Rob Mensching <rob at firegiant.com>
> Sent: Thursday, August 15, 2019 10:27 AM
> To: Allen, Eric M. (Tax&Accounting Prof) <eric.allen at thomsonreuters.com>;
> WiX Toolset Developer Mailing List <wix-devs at lists.wixtoolset.org>
> Subject: RE: WixComPlusExtension Status update 1
>
> Thank you for sending along this information. I understand better what is
> going on here and it makes sense. The new element name is:
>
>         ComPlusImportedComponent
>
> It sounds a little funny (I think it is the past test "Imported") but I
> don't have a better name. I wanted to highlight it here in case anyone
> (<cough>Bob</cough>) had a better name.
>
> However, don't let the name hold you back. That should be a (relatively)
> simple thing to change compared to the install, repair, uninstall, and
> rollback for all logic for the import.
>
>
> Regards,
>
>   Rob Mensching
>   CEO
>   FireGiant
> _______________________________________________________________
>  FireGiant  |  Dedicated support for the WiX toolset  |
> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.firegiant.com_&d=DwIFAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=JdUi5kYgt_GN1Ohq3oEyMHgCmK_1J8HGeub4gkGmoCg&m=YYeF2n3FAv8SJZqJqy2j0LidlzO7KE-L_8LZuaMQsDI&s=ETXAS_8z7ZwF2TlJp5L2Pbs9k9vZUWEKkC4nev4IRr4&e=
>
> -----Original Message-----
> From: Allen, Eric M. (Tax&Accounting Prof) <eric.allen at thomsonreuters.com>
>
> Sent: Wednesday, August 7, 2019 3:01 PM
> To: Rob Mensching <rob at firegiant.com>; WiX Toolset Developer Mailing List
> <wix-devs at lists.wixtoolset.org>
> Subject: RE: WixComPlusExtension Status update 1
>
> That's an excellent question. Here's the wxs file from the reduced test
> case I was using for debugging purposes.
>
> <?xml version="1.0" encoding="utf-8"?>
> <Wix
>   xmlns="
> https://urldefense.proofpoint.com/v2/url?u=http-3A__schemas.microsoft.com_wix_2006_wi&d=DwIFAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=JdUi5kYgt_GN1Ohq3oEyMHgCmK_1J8HGeub4gkGmoCg&m=YYeF2n3FAv8SJZqJqy2j0LidlzO7KE-L_8LZuaMQsDI&s=pevhlCJrLytsGdUcc7w3xaQNwPDpIYB96KGE6xzJCN0&e=
> "
>   xmlns:comPlus="
> https://urldefense.proofpoint.com/v2/url?u=http-3A__schemas.microsoft.com_wix_ComPlusExtension&d=DwIFAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=JdUi5kYgt_GN1Ohq3oEyMHgCmK_1J8HGeub4gkGmoCg&m=YYeF2n3FAv8SJZqJqy2j0LidlzO7KE-L_8LZuaMQsDI&s=H7roe0fJ1Gp5o5Ezd7LLHMqLmOh2kiAtkfhFxayp6Eg&e=
> "
>   xmlns:util="
> https://urldefense.proofpoint.com/v2/url?u=http-3A__schemas.microsoft.com_wix_UtilExtension&d=DwIFAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=JdUi5kYgt_GN1Ohq3oEyMHgCmK_1J8HGeub4gkGmoCg&m=YYeF2n3FAv8SJZqJqy2j0LidlzO7KE-L_8LZuaMQsDI&s=pkYCQQyLgnWp6g2l57zgOqtCr_QbSHQ1KvDJnam5Xn0&e=
> "
>   >
>   <!--
>     Usage:
>     (0) Set path to resolve candle.exe and light.exe
>     (1) Change to the folder containing this file
>     (2) invoke:
>       candle -ext WixComPlusExtension -ext WixUtilExtension
> .\SimpleComCalculator.wxs
>     (3) invoke:
>       light -ext WixComPlusExtension -ext WixUtilExtension
> .\SimpleComCalculator.wixobj
>   -->
>   <Product
>     Name="SimpleComPlusCalculator"
>     Manufacturer="Acme"
>     Id="C23E8496-B9C6-4657-AA47-F24FCCB0C42D"
>     UpgradeCode="3EE1846E-60DB-4399-A4A5-CD4ADABCF5B9"
>     Language="1033"
>     Codepage="1252"
>     Version="1.0.0"
>     >
>
>     <Package
>       Id="*"
>       Keywords="Installer"
>       Description="COM+ Calculator"
>       Comments="Experimental"
>       Manufacturer="Acme"
>       InstallerVersion="500"
>       Languages="1033"
>       Compressed="yes"
>       SummaryCodepage="1252"
>     />
>
>     <Media
>       Id="1"
>       Cabinet="SimpleComPlusCalculator.cab"
>       EmbedCab="yes"
>       DiskPrompt="What Disk?"
>     />
>     <Property
>       Id="DiskPrompt"
>       Value="Demo Install [1]"
>     />
>
>     <Directory
>       Id="TARGETDIR"
>       Name="SourceDir"
>     >
>
>       <Directory Id="ProgramFilesFolder" Name="PFiles" >
>         <Directory Id="Acme" Name="Acme" >
>           <Directory Id="INSTALLDIR" Name="Calculator Experiment" >
>
>             <Component Guid="*" Id="ClientExecutable" >
>               <File
>                 Id="ClientExe"
>                 Name="SimpleComConsumer.exe"
>
> Source="SimpleComConsumer\bin\Release\SimpleComConsumer.exe"
>                 KeyPath="yes"
>               />
>             </Component>
>
>             <Component Guid="*" Id="NativeDll" >
>               <File
>                 Id="ndf"
>                 Name="SimpleComServer.dll"
>                 Source="Release\SimpleComServer.dll"
>                 KeyPath="yes"
>               >
>                 <!--
>                   Experimentation revealed that when using ComPlus to
>                   install with the TypeLib, an error:
>                   HRESULT COMADMIN_E_ALREADYINSTALLED
>                   is emitted from the call to
>                   ICOMAdminCatalog::InstallComponent()
>                 -->
>                 <!--
>                 <Class Id="D0213ABD-5928-481E-AF3E-51B860AF47D2" >
>                   <!-&-; No ProgId &-;->
>                   <Interface
>                     Id="4A71510A-DB14-49C1-98FF-26F5B8C26DE6"
>                     Name="IDispCalculatorComponent"
>
> ProxyStubClassId32="00020420-0000-0000-C000-000000000046"
>                   />
>                 </Class>
>                 -->
>               </File>
>
>
> <comPlus:ComPlusApplicationId="CalculatorComPlus"Name="ComPlusCalculator">
>
> <comPlus:ComPlusApplicationRoleId="CreaterOwnerRole"Name="CreatorOwner">
>
> <comPlus:ComPlusGroupInApplicationRoleId="AuthUsersValid"Group="AuthUsersGroup"/>
>                 </comPlus:ComPlusApplicationRole>
>
> <comPlus:ComPlusAssemblyId="CalculatorAssembly"DllPath="[#ndf]"TlbPath="[#tlb]"Type="native">
>
> <comPlus:ComPlusComponentId="CalculatorComPlusComponent"CLSID="D0213ABD-5928-481E-AF3E-51B860AF47D2"/>
>                 </comPlus:ComPlusAssembly>
>               </comPlus:ComPlusApplication>
>             </Component>
>
>             <Component Guid="*" Id="NativeTypeLib">
>               <File
>                 Id="tlb"
>                 Name="SimpleComServer.tlb"
>                 Source="Release\SimpleComServer.tlb"
>                 KeyPath="yes"
>               />
>             </Component>
>           </Directory>
>         </Directory>
>       </Directory>
>     </Directory>
>
>     <Feature Id="Complete" Level="1" >
>       <ComponentRef Id="ClientExecutable" />
>       <ComponentRef Id="NativeDll" />
>       <ComponentRef Id="NativeTypeLib" />
>     </Feature>
>
>     <!--
>     Using the domain per the 2009-02-11 answer to
>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.trycatchfail.com_2008_07_28_wix-2Dpermissionex-2Dproblem-2Dsolved_&d=DwIFAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=JdUi5kYgt_GN1Ohq3oEyMHgCmK_1J8HGeub4gkGmoCg&m=YYeF2n3FAv8SJZqJqy2j0LidlzO7KE-L_8LZuaMQsDI&s=HKSt5mPOuR0BYfqKT_-P1C9QkwyJDal8O1LReitJILo&e=
>     -->
>
> <util:GroupId="AuthUsersGroup"Name="AuthenticatedUsers"Domain="NTAUTHORITY"/>
>   </Product>
> </Wix>
>
> Under my proposed changes, one would basically uncomment the registration
> children of the <File> element with Id="ndf", remove the Component with
> Id="NativeTypeLib" [recall my actual component of concern doesn't have a
> valid typelib] and replace <comPlus:ComPlusAssembly> with something similar
> to the
> following:
>
>
> <comPlus:ComPlusImportedComponentId="CalculatorComPlusComponent"CLSID="D0213ABD-5928-481E-AF3E-51B860AF47D2"/>
>
> Then, at runtime, instead of calling InstallComponent(path_to_dll,
> path_to_typelib), the extension will call
> ImportComponent("D0213ABD-5928-481E-AF3E-51B860AF47D2") [but with a GUID
> instead of a string].
>
> -----Original Message-----
> From: Rob Mensching <rob at firegiant.com>
> Sent: Tuesday, August 06, 2019 3:58 PM
> To: WiX Toolset Developer Mailing List <wix-devs at lists.wixtoolset.org>
> Cc: Allen, Eric M. (Tax&Accounting Prof) <eric.allen at thomsonreuters.com>
> Subject: RE: WixComPlusExtension Status update 1
>
> Eric,
>
> Thanks for the detail. It would help me a lot if you could use concrete
> examples. For example, first provide an example of .wxs code for that would
> "normally" be used to install a COM+ today. Then show a second example of
> the new .wxs code, and to concretely show what must be added/changed to
> support the scenario.
>
> Examples help me visualize what is going on. It will be especially helpful
> here since I've never worked with COM+ and your real world examples should
> help ground the conversation.
>
> Thanks,
>
>   Rob Mensching
>   CEO
>   FireGiant
> _______________________________________________________________
>  FireGiant  |  Dedicated support for the WiX toolset  |
> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.firegiant.com_&d=DwIFAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=JdUi5kYgt_GN1Ohq3oEyMHgCmK_1J8HGeub4gkGmoCg&m=7Xr7s7nnDHQutBpXjR7MPqyr5zrJ__L8Tua4Ky4XiY0&s=5_-49RplC0qfyhdn_Nd9xhdOiec_O8wjOwq4togHqH8&e=
>
> -----Original Message-----
> From: wix-devs <wix-devs-bounces at lists.wixtoolset.org> On Behalf Of
> Allen, Eric M. (Tax&Accounting Prof) via wix-devs
> Sent: Friday, August 2, 2019 3:01 PM
> To: Wix Devs Mailing List (wix-devs at lists.wixtoolset.org) <
> wix-devs at lists.wixtoolset.org>
> Cc: Allen, Eric M. (Tax&Accounting Prof) <eric.allen at thomsonreuters.com>
> Subject: [wix-devs] WixComPlusExtension Status update 1
>
> Hello Wix-Devs.
>
> This message serves the dual purpose of ensuring I can successfully mail
> the mailing list. This is with regard to
> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_wixtoolset_issues_issues_6061&d=DwIFAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=JdUi5kYgt_GN1Ohq3oEyMHgCmK_1J8HGeub4gkGmoCg&m=7Xr7s7nnDHQutBpXjR7MPqyr5zrJ__L8Tua4Ky4XiY0&s=mpNQFScnSk_ibThKm2Lgma925tHBwd85vSlVC3P6GWM&e=
>
> Now that I'm refamiliarizing myself with the issues, and closer to where I
> have my notes, I can recall that my basic plan was to allow a new child of
> ComPlusApplication in the wxs. As an alternate to ComPlusAssembly, we would
> have new element, strawman name ComPlusImportedComponent. Looking
> carefully, it *might* be possible to allow ComPlusComponent at this level
> instead of only as a child of Assembly, and based on the parent, determine
> whether we're imported or installed. That's probably something to look into
> after getting something working.
>
> Regardless, the goal is to change the runtime behavior to call
> ImportComponent instead of InstallComponent.
>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__docs.microsoft.com_en-2Dus_windows_win32_api_comadmin_nf-2Dcomadmin-2Dicomadmincatalog-2Dimportcomponent&d=DwIFAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=JdUi5kYgt_GN1Ohq3oEyMHgCmK_1J8HGeub4gkGmoCg&m=7Xr7s7nnDHQutBpXjR7MPqyr5zrJ__L8Tua4Ky4XiY0&s=iUdL9n9gL97nYFKC_mYS6lGalbPEo0MUOBdFpR4Ho58&e=
>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__docs.microsoft.com_en-2Dus_windows_win32_api_comadmin_nf-2Dcomadmin-2Dicomadmincatalog-2Dinstallcomponent&d=DwIFAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=JdUi5kYgt_GN1Ohq3oEyMHgCmK_1J8HGeub4gkGmoCg&m=7Xr7s7nnDHQutBpXjR7MPqyr5zrJ__L8Tua4Ky4XiY0&s=jPLsJDfJlMw_ClfIAqHvuLox6H8p6KCbDqtmomKQo18&e=
>
> I think I need to engineer a three-part plan.
> 1) The compiler needs to know to take the new element and put it in a
> table.
> 2) cpsched needs to query the table and emit data into the property used to
>    communicate to cpexec.
> 3) cpexec needs to parse the property and send it down into an alternative
> for
>    CpiConfigureAssemblies() in each of ComPlusInstallExecute(),
>    ComPlusInstallExecuteCommit(), and ComPlusUninstallExecute().
>
> There may need to be some additional supporting work to achieve those and
> keep rollback where we want it.
>
> One unrelated improvement I want to make is to the Documentation to
> indicate that the ComPlusGroupInApplicationRole is expecting to cooperate
> with UtilExtension's Group (likely similar for User). I'm not quite sure
> where to go in order to make documentation edits.
>
> Thank you for your time and feedback.
>
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> * * Eric M. Allen Lead Software Developer
>
> Thomson Reuters
> the answer company
>
> Phone: +1(734) 388-3878
>
> eric.allen at tr.com
>
> thomsonreuters.com
>
> ____________________________________________________________________
> WiX Toolset Developer Mailing List provided by FireGiant
> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.firegiant.com_&d=DwIFAg&c=4ZIZThykDLcoWk-GVjSLmy8-1Cr1I4FWIvbLFebwKgY&r=JdUi5kYgt_GN1Ohq3oEyMHgCmK_1J8HGeub4gkGmoCg&m=7Xr7s7nnDHQutBpXjR7MPqyr5zrJ__L8Tua4Ky4XiY0&s=5_-49RplC0qfyhdn_Nd9xhdOiec_O8wjOwq4togHqH8&e=
> ____________________________________________________________________
> WiX Toolset Developer Mailing List provided by FireGiant
> http://www.firegiant.com/
>



More information about the wix-devs mailing list