Отменить регистрацию COM-компонента в WIX во время отката, это необходимо?


Я создаю проект установщика WIX. Часть работы в установке заключается в регистрации некоторых компонентов COM. Я (надеюсь) преуспел в этом, используя тепло.exe для создания объявления компонента COM, хотя мне нужно было немного изменить после того, как были созданы файлы wxs. Чтобы это было понятно, я вставляю объявление компонента COM сюда:

<ComponentGroup Id="COMComponent" Directory="INSTALLDIR">        
      <Component Id="COMDll" Guid="MY_GUID1">
        <Class Id="{MY_CLASSID1}" Context="InprocServer32" Description="DESCRIPTION1" ThreadingModel="both" ForeignServer="mscoree.dll">
          <ProgId Id="MYID1" Description="DESCRIPTION1" />
        </Class>
...
        <File Id="FILE_ID_1" KeyPath="yes" Source="MY_COM.dll" />  

        <File Id="FILD_ID2" KeyPath="no" Source="MY_COM.tlb">
          <TypeLib Id="{xxx}" Description="xxx" HelpDirectory="INSTALLDIR" Language="0" MajorVersion="525" MinorVersion="0">
            <Interface Id="{xxx}" Name="xxx" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
...
          </TypeLib>
        </File>

        <ProgId Id="Record" />
        <RegistryValue Root="HKCR" Key="CLSID{xxx}Implemented Categories{xxx}"  Value="" Type="string" Action="write" />
        <RegistryValue Root="HKCR" Key="CLSID{xxx}InprocServer32525.0.4573.25681" Name="Class" Value=" MYID1" Type="string" Action="write" />
...
        </Component>                          
    </ComponentGroup>

Я заменил некоторые идентификаторы на xxx, поэтому они не являются проблемой. Если что-то еще не так, пожалуйста, сообщите мне.

Теперь мой вопрос: нужно ли мне явно указать, чтобы удалить компонент COM в фазе отката? Потому что я испытал некоторую проблему, что после некоторого сбоя установки, дальнейшие попытки установки не будут проходить, и некоторые "ActiveX объект не может быть создан" ошибка выскочила. Я подозревал, что это связано с тем, что COM-компонент не был успешно зарегистрирован в предыдущей неудачной установке. Но я не уверен. На самом деле у меня ограниченные знания в COM-взаимодействии, поэтому я не уверен, что это необходимо для установки / удаления их. Любая помощь будет оценена по достоинству. Спасибо!

1 2

1 ответ:

Когда вы используете тепло для сбора компонентов COM, этого будет достаточно. Она должна справиться с отменой регистрации com-компонентов в случае сбоя установки и производится откат.