Я новичок в Wix и столкнулся с проблемой, которую я, очевидно, не могу решить самостоятельно, поэтому любая помощь будет очень признательна.
Быстрый фон:
Я представляю поставщика программного обеспечения, создающего полный набор приложений на основе SOA для развертывания на крупных предприятиях. Наша архитектура состоит из множества уровней, которые можно устанавливать / обновлять независимо, поэтому я создаю несколько инсталляторов, создающих с нуля (например: платформа, базовые компоненты инфраструктуры, уровень обслуживания, бизнес-уровень, уровень приложений и т. Д.).
Версии программного обеспечения:
-Wix 3.5.1309.0 (wix.dll)
- Visual Studio 2008, .Net 3.5
- Сборка ОС: Windows 2008 R2 Standard 64 бит
- Развертывание ОС: Windows 2008 Standard 32 бит
Моя проблема заключается в установке .Net сборок в приложениях COM +. Я продолжаю получать сообщение об ошибке «Не удалось установить библиотеку типов». Я читаю всю документацию, которую могу найти, и уже несколько дней работаю в Google. Я нахожу довольно много сообщений на эту тему, но я все еще не могу решить проблему.
Чтобы изолировать проблему, я выделил проблему в отдельный установщик. Сначала я запускаю основной установщик:
1. Устанавливает все сборки в GAC, включая ту, которая будет установлена в COM +.
2. Создайте локальных пользователей и группы.
3. Создайте целевое приложение COM +, включая роли и т. Д.
4. Устанавливает целевую сборку и сопутствующую библиотеку типов в папку (чтобы устранить все проблемы с поиском в GAC)
Этот установщик я могу установить / починить / удалить, все отлично работает.
Затем я запускаю минимальный установщик, содержащий только проблему, которая пытается:
1. Установите сборку в существующее приложение COM + (сервер), ссылаясь на предварительно установленные .dll и .tlb.
Установка не удалась, и журнал показывает:
MSI (s) (AC:64) [19:16:01:127]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI1BAB.tmp, Entrypoint: ComPlusInstallExecute
ComPlusInstallExecute: ExceptionInfo: Code='0', Source='System.EnterpriseServices', Description='Could not install type library 'c:\Program Files\MyManufacturer\ComPlus\WDA.ServiceProviders.Update.11.tlb' into application 'WDA.ServiceProviders.Update.11'.', HelpFile='', HelpContext='0'
ComPlusInstallExecute: Error 0x80020009: Failed to invoke RegistrationHelper.InstallAssembly() method
ComPlusInstallExecute: Error 0x80020009: Failed to register .NET assembly
ComPlusInstallExecute: Error 0x80020009: Failed to register assembly, key: MyAssembly
ComPlusInstallExecute: Error 0x80020009: Failed to register assemblies
Action ended 19:16:02: InstallFinalize. Return value 3.
Я также заметил, что откат удаляет приложение COM +, даже если оно не было создано этим установщиком.
Я могу установить сборку вручную с помощью диспетчера сервера из того же физического файла, на который ссылается установщик. После удаления компонента вручную из приложения COM + установщик работает!
Кроме того, почему я должен предоставить typelib? В любом случае EnterpriseServices.RegistrationHelper генерирует библиотеку типов на лету.
Это минимальный тестовый установщик, который не работает:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:complus="http://schemas.microsoft.com/wix/ComPlusExtension"
>
<Product Id="48EDB258-BD84-47EF-94A2-B4950EE48139"
UpgradeCode="F29B8EBD-DFD1-4B7E-96FF-86842CAAE4A4"
Name="ComPlusInstalls"
Language="1033"
Version="1.0.0"
Manufacturer="MyManufacturer">
<Package Id="ABA41719-BC28-4A57-BA9A-58F4F3B2194F" InstallerVersion="200" Compressed="yes" />
<Media Id="1" Cabinet="WixTest.cab" EmbedCab="yes" />
<complus:ComPlusApplication Id="MyApplication" ApplicationId="1FCF220A-A1FE-44FE-BE91-B37341BA6D4A" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="MyManufacturer" Name="MyManufacturer">
<Directory Id="INSTALLLOCATION" Name="ComPlus">
<Component Id="MyComponent" Guid="6D46A007-6669-487B-BAA0-DFA7314C141D" KeyPath="yes">
<complus:ComPlusAssembly Id="MyAssembly" Type=".net" Application="MyApplication"
RegisterInCommit="no" DllPathFromGAC="no"
DllPath="[INSTALLLOCATION]WDA.ServiceProviders.Update.11.dll"
TlbPath="[INSTALLLOCATION]WDA.ServiceProviders.Update.11.tlb"/>
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<Feature Id="MainFeature" Title="WixTest" Level="1" Absent="disallow" InstallDefault="local">
<ComponentRef Id="MyComponent" />
</Feature>
</Product>
</Wix>
Приветствия
-Nils