2010-02-24 2 views
2

У меня возникла проблема, когда DLL COM, которую я распространяю с моим приложением, не регистрируется, потому что atl.dll не зарегистрирован на машине.Зависимости развертывания COM

Быстрое решение заключается в том, чтобы запустить regsvr32 на dll, но я хочу, чтобы что-то было немного чище, чем это.

У меня нет большого опыта работы с развертыванием, и мне было интересно, есть ли способ определить, зарегистрирован ли atl.dll на машине, и если бы я не смог зарегистрировать его из кода.

В настоящее время у меня есть собственное действие C# для моего установщика MSI, поэтому я мог бы добавить туда логику для выполнения задачи.

Заранее спасибо.

ответ

2

Вам необходимо будет указать правильный установщик Merge Module. Они будут установлены до C:\Program Files\Common Files\Merge Modules. Если вы не может найти нужные файлы, вы, вероятно, не установили функцию «распространяемые компоненты» либо в Windows SDK и/или Visual Studio (я думаю, что это невыбранное в обеих по умолчанию)

  • ATL90.DLL может быть найдено в Microsoft_VC90_ATL_x86.msm
  • ATL80.DLL можно найти в Microsoft_VC80_ATL_x86.msm
+0

То есть именно то, что мне было нужно. Спасибо. –

+0

Это действительно помогает мне. Благодарю. –