Как я могу зарегистрировать элемент управления ActiveX в WixSharp? - PullRequest
1 голос
/ 01 февраля 2020

Я заново создаю старый установщик в Wix для своей организации. Мы должны внести в него изменения и в процессе улучшить его. Одним из улучшений, которые я предложил, является регистрация наших COM-объектов через Windows Installer вместо самостоятельной регистрации. Я запустил heat.exe в библиотеке COM и получил следующее:

    <Fragment>
        <Component Id="cmpBB45CB97305A61CCF42CD6B71CCF6EE8" Guid="{3CD4608D-9E32-46DC-8359-E3132DB2BE7D}">
            <Class Id="{D5DE8D20-5BB8-11D1-A1E3-00A0C90F2731}" Context="InprocServer32" Description="VBPropertyBag" ThreadingModel="apartment" ForeignServer="msvbvm60.dll" />
            <File Id="fil01317D9654DCCBB6A7CDFBD67F8D385B" KeyPath="yes" Source="NeoCalendarIII.ocx" Name="NeoCalendarIII.ocx">
                <Class Id="{07D99FC5-7739-493E-B7C2-925977B7658B}" Context="InprocServer32" Description="NeoCalendarIII.ppDateSelectAppearance" ThreadingModel="apartment" />
                <Class Id="{273562A4-20B5-4DC5-846C-E322B96E6BCB}" Context="InprocServer32" Description="NeoCalendarIII.ppDatePickerProperties" ThreadingModel="apartment" />
                <Class Id="{4BEB82CE-ED65-459C-8DC5-E2389E0263A9}" Context="InprocServer32" Description="NeoCalendarIII.ppDateSelectSettings" ThreadingModel="apartment" />
                <Class Id="{5EEAE14B-3F58-411D-A7D3-3AA890C310E8}" Context="InprocServer32" Description="NeoCalendarIII.ppRegister" ThreadingModel="apartment" />
                <Class Id="{AD486AD8-87C3-46F8-B37D-36A2D9A40B8E}" Context="InprocServer32" Description="NeoCalendarIII.ppMonthCalendar" ThreadingModel="apartment" />
                <TypeLib Id="{4F0E71DF-2B8E-4193-904B-C964443BD659}" Control="yes" Description="Neo Components NeoCalendarIII Library" HelpDirectory="dirE98374BC9A9AE40B803952478730E401" Language="0" MajorVersion="8" MinorVersion="0">
                    <Class Id="{104FE108-F63F-4AA5-8860-91659C21B6DF}" Context="InprocServer32" Description="NeoCalendarIII.MonthCalendar" ThreadingModel="apartment" Version="8.0" Control="yes">
                        <ProgId Id="NeoCalendarIII.MonthCalendar" Description="NeoCalendarIII.MonthCalendar" />
                    </Class>
                    <Class Id="{486ECF2E-E10A-431C-9D68-45A745788E2D}" Description="NeoCalendarIII.ISubclass" Version="8.0" Programmable="yes">
                        <ProgId Id="NeoCalendarIII.ISubclass" Description="NeoCalendarIII.ISubclass" />
                    </Class>
                    <Class Id="{7327EFE0-03DA-44CB-A58B-164F798323C6}" Context="InprocServer32" Description="NeoCalendarIII.DatePicker" ThreadingModel="apartment" Version="8.0" Control="yes">
                        <ProgId Id="NeoCalendarIII.DatePicker" Description="NeoCalendarIII.DatePicker" />
                    </Class>
                    <Class Id="{A3D4C4FA-8AA0-4774-9865-5EFF4BD18AC4}" Description="NeoCalendarIII.CdtsOption" Version="8.0" Programmable="yes">
                        <ProgId Id="NeoCalendarIII.CdtsOption" Description="NeoCalendarIII.CdtsOption" />
                    </Class>
                    <Class Id="{E2AE5392-BC8B-440A-90D7-BCA007BC0B4D}" Context="InprocServer32" Description="NeoCalendarIII.DateSelect" ThreadingModel="apartment" Version="8.0" Control="yes">
                        <ProgId Id="NeoCalendarIII.DateSelect" Description="NeoCalendarIII.DateSelect" />
                    </Class>
                    <Interface Id="{015C1812-DA2D-4607-AEB0-5B044ECE7B60}" Name="ISubclass" ProxyStubClassId="{00020424-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                    <Interface Id="{0D4F2E7B-4A1B-4297-92A3-CE382FE26C22}" Name="MonthCalendar" ProxyStubClassId="{00020424-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                    <Interface Id="{14E3C6BF-8FC4-427E-BE07-7733EAB66AEB}" Name="CdtsOption" ProxyStubClassId="{00020420-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" />
                    <Interface Id="{1F58DD38-DCAB-4368-848E-23EC2F4D1B42}" Name="_ppDateSelectSettings" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                    <Interface Id="{5D51A06B-BA67-42DF-AC84-81A01797446C}" Name="DateSelect" ProxyStubClassId="{00020420-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" />
                    <Interface Id="{64BC1530-C4DD-4C8B-9C9A-85D9C33C1023}" Name="_ppRegister" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                    <Interface Id="{7712B755-19E2-4E04-AA35-91EE99B0D456}" Name="DatePicker" ProxyStubClassId="{00020424-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                    <Interface Id="{7FC77D2C-9D97-4577-B734-AAC65483BDE6}" Name="_ppDateSelectAppearance" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                    <Interface Id="{80CCBDCF-B4B0-4860-925A-A56623B21BC3}" Name="_ppMonthCalendar" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                    <Interface Id="{8D200761-F4C9-4128-8CF9-FA992FA5BFEC}" Name="DatePicker" ProxyStubClassId="{00020420-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" />
                    <Interface Id="{A0CC5F72-59E3-41DF-804B-67698E5EBC7B}" Name="CdtsOption" ProxyStubClassId="{00020424-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                    <Interface Id="{A8FE5735-B17C-445E-A0A1-C5BBBAE489DC}" Name="_ppDatePickerProperties" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                    <Interface Id="{B92D67A0-AFA5-4851-8D16-9467A5623A15}" Name="MonthCalendar" ProxyStubClassId="{00020420-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" />
                    <Interface Id="{F0A2E8AC-156E-44DF-85D7-A80E4C125C6B}" Name="DateSelect" ProxyStubClassId="{00020424-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                </TypeLib>
            </File>
            <RegistryValue Root="HKCR" Key="CLSID\{104FE108-F63F-4AA5-8860-91659C21B6DF}\Implemented Categories\{0DE86A52-2BAA-11CF-A229-00AA003D7352}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{104FE108-F63F-4AA5-8860-91659C21B6DF}\Implemented Categories\{0DE86A53-2BAA-11CF-A229-00AA003D7352}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{104FE108-F63F-4AA5-8860-91659C21B6DF}\Implemented Categories\{0DE86A57-2BAA-11CF-A229-00AA003D7352}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{104FE108-F63F-4AA5-8860-91659C21B6DF}\Implemented Categories\{40FC6ED4-2438-11CF-A3DB-080036F12502}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{104FE108-F63F-4AA5-8860-91659C21B6DF}\MiscStatus\1" Value="131473" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{104FE108-F63F-4AA5-8860-91659C21B6DF}\MiscStatus" Value="0" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{104FE108-F63F-4AA5-8860-91659C21B6DF}\ToolboxBitmap32" Value="[#fil01317D9654DCCBB6A7CDFBD67F8D385B], 30002" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{486ECF2E-E10A-431C-9D68-45A745788E2D}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{7327EFE0-03DA-44CB-A58B-164F798323C6}\Implemented Categories\{0DE86A52-2BAA-11CF-A229-00AA003D7352}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{7327EFE0-03DA-44CB-A58B-164F798323C6}\Implemented Categories\{0DE86A53-2BAA-11CF-A229-00AA003D7352}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{7327EFE0-03DA-44CB-A58B-164F798323C6}\Implemented Categories\{0DE86A57-2BAA-11CF-A229-00AA003D7352}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{7327EFE0-03DA-44CB-A58B-164F798323C6}\Implemented Categories\{34748A51-BA67-11D0-9488-00A0C91110ED}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{7327EFE0-03DA-44CB-A58B-164F798323C6}\Implemented Categories\{40FC6ED4-2438-11CF-A3DB-080036F12502}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{7327EFE0-03DA-44CB-A58B-164F798323C6}\MiscStatus\1" Value="131473" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{7327EFE0-03DA-44CB-A58B-164F798323C6}\MiscStatus" Value="0" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{7327EFE0-03DA-44CB-A58B-164F798323C6}\ToolboxBitmap32" Value="[#fil01317D9654DCCBB6A7CDFBD67F8D385B], 30001" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{A3D4C4FA-8AA0-4774-9865-5EFF4BD18AC4}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{E2AE5392-BC8B-440A-90D7-BCA007BC0B4D}\Implemented Categories\{0DE86A52-2BAA-11CF-A229-00AA003D7352}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{E2AE5392-BC8B-440A-90D7-BCA007BC0B4D}\Implemented Categories\{0DE86A53-2BAA-11CF-A229-00AA003D7352}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{E2AE5392-BC8B-440A-90D7-BCA007BC0B4D}\Implemented Categories\{0DE86A57-2BAA-11CF-A229-00AA003D7352}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{E2AE5392-BC8B-440A-90D7-BCA007BC0B4D}\Implemented Categories\{40FC6ED4-2438-11CF-A3DB-080036F12502}" Value="" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{E2AE5392-BC8B-440A-90D7-BCA007BC0B4D}\MiscStatus\1" Value="131473" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{E2AE5392-BC8B-440A-90D7-BCA007BC0B4D}\MiscStatus" Value="0" Type="string" Action="write" />
            <RegistryValue Root="HKCR" Key="CLSID\{E2AE5392-BC8B-440A-90D7-BCA007BC0B4D}\ToolboxBitmap32" Value="[#fil01317D9654DCCBB6A7CDFBD67F8D385B], 30000" Type="string" Action="write" />
            <TypeLib Id="{000204EF-0000-0000-C000-000000000046}" Description="Visual Basic For Applications" HelpDirectory="SystemFolder" Language="9" MajorVersion="6" MinorVersion="0">
                <Interface Id="{A4C466B8-499F-101B-BB78-00AA00383CBB}" Name="_ErrObject" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{A4C46780-499F-101B-BB78-00AA00383CBB}" Name="_Collection" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
            </TypeLib>
            <TypeLib Id="{EA544A21-C82D-11D1-A3E4-00A0C90AEA82}" Description="Visual Basic runtime objects and procedures" HelpDirectory="SystemFolder" Hidden="yes" Language="9" MajorVersion="6" MinorVersion="0">
                <Interface Id="{14E469E0-BF61-11CF-8385-8F69D8F1350B}" Name="AsyncProperty_VB5" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{2CE46480-1A08-11CF-AD63-00AA00614F3E}" Name="SelectedControls" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{41A7D760-6018-11CF-9016-00AA0068841E}" Name="DataObject" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{41A7D761-6018-11CF-9016-00AA0068841E}" Name="DataObjectFiles" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{4495AD01-C993-11D1-A3E4-00A0C90AEA82}" Name="_PropertyBag" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{45046D60-08CA-11CF-A90F-00AA0062BB4C}" Name="PropertyBag_VB5" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{737361EC-467F-11D1-810F-0000F87557AA}" Name="Licenses" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{7500A6BA-EB65-11D1-938D-0000F87557C9}" Name="DataBinding" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{8284B8A2-A8A8-11D1-A3D2-00A0C90AEA82}" Name="LicenseInfo" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{83C49FF0-B294-11D0-9488-00A0C91110ED}" Name="DataMembers" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{888A5A60-B283-11CF-8AD5-00A0C90AEA82}" Name="Hyperlink" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{B28FA150-0FF0-11CF-A911-00AA0062BB4C}" Name="AmbientProperties" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{BE8F9800-2AAA-11CF-AD67-00AA00614F3E}" Name="ParentControls" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{C0324960-2AAA-11CF-AD67-00AA00614F3E}" Name="ContainedControls" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{C4D651F0-7697-11D1-A1E9-00A0C90F2731}" Name="EventParameter" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{C4D651F1-7697-11D1-A1E9-00A0C90F2731}" Name="EventParameters" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{C4D651F2-7697-11D1-A1E9-00A0C90F2731}" Name="EventInfo" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{CBB76011-C508-11D1-A3E3-00A0C90AEA82}" Name="AsyncProperty" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{D4E0F020-720A-11CF-8136-00AA00C14959}" Name="DataBindings" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{E43FD401-8715-11D1-98E7-00A0C9702442}" Name="IVbeRuntimeHost" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
                <Interface Id="{EB41E8C1-4442-11D1-8906-00A0C9110049}" Name="_DDataBoundClass" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" />
                <Interface Id="{EB41E8C2-4442-11D1-8906-00A0C9110049}" Name="_DDataSourceClass" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" />
                <Interface Id="{EB41E8C3-4442-11D1-8906-00A0C9110049}" Name="_DDataBoundAndDataSourceClass" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" />
                <Interface Id="{EB41E8C4-4442-11D1-8906-00A0C9110049}" Name="_DPersistableClass" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" />
                <Interface Id="{EB41E8C5-4442-11D1-8906-00A0C9110049}" Name="_DPersistableDataSourceClass" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" />
                <Interface Id="{FCFB3D2B-A0FA-1068-A738-08002B3371B5}" Name="_DClass" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" />
            </TypeLib>
        </Component>
    </Fragment>

Я использую Wix #, поскольку именно это мы использовали для нашего последнего проекта (который был гораздо более сложным, и код C#). нашим разработчикам было легче читать). Я вижу, что в Wix # есть класс ComRegistration, но я не вижу, как вложить их в элемент TypeLib xml. Раньше мне никогда не приходилось регистрировать COM-объекты, поэтому я немного растерялся относительно того, что на самом деле делает фрагмент, сгенерированный Heat ...

РЕДАКТИРОВАТЬ: Для пояснения я пытаюсь использовать это XML в проекте Wix #, либо как ссылка для создания C# эквивалента, либо для непосредственного внедрения его в XML.

...