2
我正在創建一個WIX安裝程序項目。安裝過程中的一部分工作是註冊一些COM組件。我(有希望)通過使用heat.exe來生成COM組件聲明,儘管我需要在wxs文件生成後稍微修改一下。爲了說清楚,我在這裏粘貼我的COM組件聲明:回滾期間在WIX中取消註冊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}\InprocServer32\525.0.4573.25681" Name="Class" Value=" MYID1" Type="string" Action="write" />
...
</Component>
</ComponentGroup>
我用xxx代替了一些ID,所以它們不是問題。如果還有其他問題,請通知我。
現在我的問題是:我是否需要顯式指定在回滾階段卸載COM組件?因爲我遇到過一些問題,那就是在安裝失敗之後,安裝的進一步嘗試將不會通過,並且彈出一些「ActiveX對象無法創建」的錯誤。我懷疑這是因爲COM組件在以前的失敗安裝中未成功註銷。但我不確定。事實上,我在COM互操作方面的知識有限,所以我不確定安裝/卸載它們的必要條件。任何幫助,將不勝感激。謝謝!