Нам нужно адаптировать наше приложение для использования через ClickOnce. Приложение состоит из файла .exe и огромного набора библиотек Visual C ++, некоторые из которых являются встроенными COM-серверами, используемыми другими библиотеками.
В настоящее время наш установщик regsvr32
регистрирует COM-серверы, но похоже, что приложениям ClickOnce не разрешается изменять реестр во время установки. Поэтому нам нужно что-то еще.
Первый вариант - удалить CoCreateInstance()
и использовать вместо него LoadLibraryEx()
/ DllGetClassObject()
. Это потребует модификации кода, но очень надежно - я не вижу причин, по которым это не сработает.
Вариант два - использовать параллельную активацию COM с манифестами. Проблема, которую я вижу сразу, заключается в том, что мы увеличиваем номер версии в каждой ночной сборке, поэтому нам придется обновлять манифесты автоматически. Это не очень вдохновляет. Каковы другие не столь очевидные ограничения использования параллельной активации COM?