Я создал MSI, используя WiX.Я пытаюсь зарегистрировать компоненты .NET для COM-взаимодействия в 64-разрядной версии Windows Vista.Однако после запуска установки MSI и запуска веб-сайта, использующего эти компоненты, я вижу следующее сообщение об ошибке:
Ошибка выполнения компонента для компонента [0xC] ч: 0x0 CLSID: {3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774} Не удалось создать компонент.Это может быть проблема с регистрацией компонента.
Кажется, это не вызвано обычными проблемами, и после долгих тренировок я обнаружил, что могу решить эту проблему, выполнив следующие действия:
- Экспорт записи реестра CLSID \ {3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}.
- Удалите ключ и все подразделы CLSID \ {3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}
- Повторно импортировать экспортированный файл .reg из шага 1.
После выполнения этих 3 шагов компонент будет правильно определен, и веб-приложение будет работать нормально.
Обновление: я только что экспортировал весь раздел реестра HKCR после того, как запустился мой установщик, а затем после выполнения 3 шагов, описанных выше.Выполнение diff для двух файлов не выявит различий!
Итак, мой вопрос: что мне нужно сделать, чтобы мой установщик WiX заработал?Я предполагаю, что я делаю что-то не так, но что?
К вашему сведению - я использую следующий WiX XML для создания ключей реестра (я уже пытался использовать элемент класса WiX, но это тоже не сработало)).Примечание. Var.CLSID - это переменная с HKCR \ CLSID (не Wow6432Node).
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}" Value="Awesome.Component" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Value="mscoree.dll" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Name="ThreadingModel" Value="Both" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\ProgId" Value="Awesome.Component" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}" Value="" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32\0.9.2.0" Name="Class" Value="Awesome.Component" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32\0.9.2.0" Name="Assembly" Value="AwesomeAssembly, Version=0.9.2.0, Culture=neutral, PublicKeyToken=8a030859d27c8274" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32\0.9.2.0" Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32\0.9.2.0" Name="CodeBase" Value="file:///[#fil7B6E8E93E37519B6844149C87BAD9C0B]" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Name="Class" Value="Awesome.Component" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Name="Assembly" Value="AwesomeAssembly, Version=0.9.2.0, Culture=neutral, PublicKeyToken=8a030859d27c8274" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Name="RuntimeVersion" Value="v2.0.50727" Type="string" Action="write" />
<RegistryValue Root="HKCR" Key="$(var.CLSID)\{3C1CEEC0-3B20-46F8-8D4E-5F16E93D8774}\InprocServer32" Name="CodeBase" Value="file:///[#fil7B6E8E93E37519B6844149C87BAD9C0B]" Type="string" Action="write" />