Не удается зарегистрировать определенные COM-устройства с помощью развертывания Visual Studio - PullRequest
0 голосов
/ 21 сентября 2011

Я развернул MSI, который включает в себя несколько C ++ COM. Мы адаптируем его для работы в Windows 7 / Server 2008, и по какой-то причине самостоятельная регистрация COM больше не работает. В результате я изменил их все на COMRelativePath.

Это, похоже, сработало, но 3 компонента, как ни странно, не регистрируются. При сборке установщика вижу это сообщение для тех, кто не регистрируется:

ПРЕДУПРЕЖДЕНИЕ. Невозможно создать регистрационную информацию для файла с именем 'ComponentThatWontRegister.dll'

Проведя обширные исследования и перепробовав все обходные пути, я не могу пройти через это. Я попытался настроить RegCap.exe и devenv для работы в различных режимах совместимости и повышения до административных привилегий. Я пробовал Visual Studio 2010, та же проблема.

Странно то, что большинство СОМ регистрируются просто отлично, и они ВСЕ установлены одинаково; только очень немногие имеют эту проблему. Я прошел COM-пункт за элементом, и я не могу найти ничего, что могло бы сделать один сбой, а другой успешным. Кроме того, в той же системе, если я регистрирую com с помощью regsvr32, он работает, пока я запускаю командную строку как администратор.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2011

Если это элементы управления ATL, некоторые могут связываться с ATL.DLL, некоторые нет.В зависимости от цели развертывания по сравнению со сборочной машиной, вы можете получить ATL.DLL, который поддерживает UAC, в то время как статический регистратор, использующий их, нет, при компиляции со старым SDK платформы.

Сравните параметры компоновщика компонентов, которые не работают, с теми, которые работают успешно.

0 голосов
/ 21 сентября 2011

Это указывает, что ошибка может произойти, если два или более компонентов в msi имеют одинаковые значения. Может ли это быть причиной?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...