Я устанавливаю элемент управления Active X, который содержит некоторые COM-серверы. Я использую опцию COM ExtractShield InstallShield для создания информации реестра. Это приводит к большому количеству записей в таблицах Registry и Class. (Извлеченная информация во многом похожа на Wix).
Похоже, что мой COM-сервер установлен правильно, за исключением дополнительного значения InprocServer32 в ключе InprocServer32, которое выглядит следующим образом:
HKCR\CLSID\{MY-COM-GUID}\InprocServer32
(Default) = C:\Path-to-my\file.ocx
InprocServer32 = 8tYCAGak)9S9&~swl.$?MyFeatureName>*&N$B'fk?As1x2J653?'
Единственное, что я могу понять из дополнительного значения, это MyFeatureName, которое является внутренним именем функции MSI, содержащей файл .ocx. Ключ не указан в таблице реестра, поэтому он должен генерироваться таблицей классов.
Проблема, с которой я сталкиваюсь, возникает только в Windows Server 2008. Кажется, что приложение, пытающееся использовать COM-сервер, не может найти путь к файлу .ocx из значения (по умолчанию), а вместо этого находит Значение InprocServer32. Это приводит к тому, что приложение запускает MSI, а затем MSI застревает в чем-то вроде бесконечного цикла.
Мне интересно, является ли это известной проблемой в Windows Server 2008 или существует ли способ предотвратить создание этого дополнительного значения msiexec.