Я пытаюсь настроить бесплатный COM для регистрации, но у меня есть небольшая проблема в том, что другим COM-объектом может быть клиент.
App.exe -----> COM Server / Client dll (зарегистрирован или нет) --------> DLL-сервер COM-сервера (НЕ зарегистрирован)
Мои вопросы: возможно ли создать манифест для второй dll (dll COM-сервера / клиента)?У меня нет контроля над исполняемым файлом, но если я это сделал, это работает, если я создаю манифест клиента для исполняемого файла и манифест сервера для dll COM-сервера.
это файл манифеста для средней DLL,Я попытался встроить это и попробовал это внешний.Все еще не работает.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32"
name="COMCliSer.dll"
version="1.0.0.0"
/>
<dependency>
<dependentAssembly>
<assemblyIdentity
name="COMSer.dll"
version="1.0.0.0"
/>
</dependentAssembly>
</dependency>
</assembly>
При дальнейшем расследовании я могу заставить это все работать, пока средняя dll также бесплатна для регистрации, и у exe есть манифест приложения.Как только я регистрирую среднюю dll и удаляю манифест приложения (я не могу контролировать, какой exe будет использовать мою dll), все это перестает работать.
Если у exe нет манифеста, томанифест dll не принимается во внимание.Я могу доказать это, настроив все на работу.Тогда внесите ошибку в манифест сборки.Появляется обычное сообщение:
Невозможно создать процесс: это приложение не удалось запустить из-за неправильной конфигурации приложения.Переустановка приложения может решить эту проблему.
Если я затем отбрасываю манифест приложения, приложение загружается (хотя CoCreateInstance завершается ошибкой, поскольку зависимости не учитываются)