Первое, что нужно понять, это то, что COM-библиотеки регистрируются сами. Они поместят все необходимые записи в правильные места в реестре.
Я думаю, что ответом на ваш центральный вопрос о том, какие биты являются необязательными, является, вероятно, то, что все они являются необязательными для различных типов объектов. Для объектов автоматизации требуются идентификаторы Prog / AppID, если они являются общедоступными, но не могут, если они создаются только внутри, аналогичным образом может быть указан класс COM, который не может быть публично создан.
Многие COM-объекты, которые не имеют интерфейсов автоматизации (например, многие из COM-классов, которые Майкрософт использует для внутреннего использования в Windows, не будут иметь ProgId, а просто будут иметь запись под своим CLSID в HKCR \ CLSID.
Если я вас правильно понимаю, вас это интересует с точки зрения установщика. Я хотел бы представить, что все, что вам нужно сделать, это попросить пользователя указать, какие библиотеки саморегистрации, а затем вызвать
regsvr32 dllname.dll
или
exename.exe / Regserver
для сервера вне процесса. Если что-то идет не так, вам просто нужно назвать противоположности.
regsvr32 / u dllname.dll
или
exename.exe / Unregserver
Надеюсь, это ответит на ваш вопрос.