использование wix для регистрации сборки .Net, помеченной для COM-взаимодействия - PullRequest
1 голос
/ 11 сентября 2010

У меня есть библиотека классов vanilla .net, которая содержит некоторые типы, [ComVisible], а сама сборка помечена как «Регистрация для взаимодействия COM». Я пытаюсь создать установщик WIX для приложения, которому нужно будет не только скопировать сборку .net в INSTALLATIONDIR на целевом компьютере, но и выполнить регистрацию этого объекта, чтобы использовать некоторые устаревшие приложения VB6. .net сборки.

Я использую heat.exe (точнее, задачу теплового файла), чтобы собрать фрагмент, который я включил с помощью componentGroupRef в мой основной файл wix. Мой вопрос: должен ли файл, который собирает heat.exe, быть выходным файлом .tlb моей библиотекой классов или самой dll? Если я использую heat.exe на .tlb, я не получаю никаких элементов реестра во фрагменте, но я делаю с DLL. Если я должен использовать dll, какую роль играет .tlb в этом процессе?

Я использую приведенную ниже задачу нагрева в msbuild

<HeatFile
  NoLogo="true"
  ToolPath="$(WixToolPath)"
  TreatWarningsAsErrors="false"
  AutogenerateGuids="true"
  GenerateGuidsNow="true"
  OutputFile="$(MSBuildProjectDirectory)\fragments\DemoTypeLib.wxs"
  File="$(SolutionDir)DemoClassLibrary1\bin\Debug\DemoClassLibrary1.dll"
  ComponentGroupName="DemoTypeLibComponent"
    PreprocessorVariable="var.DemoClassLibrary1.TargetDir"
  SuppressCom="false"
    DirectoryRefId="INSTALLLOCATION"
  SuppressRegistry="false"
  SuppressRootDirectory="true" />

Ответы [ 2 ]

2 голосов
/ 30 декабря 2010

Вы должны собрать оба файла .tlb и .dll.Некоторые инструменты могут использовать только регистрацию DLL, но другим, например, языкам сценариев, также нужна библиотека типов.Просто нагрейте их обоих и включите оба выхода в ваш окончательный проект.Например, для библиотек python win32com и Perl Win32 :: OLE требуется библиотека типов, зарегистрированная для работы.

1 голос
/ 12 сентября 2010

Просто отправьте фрагмент с DLL и COM для него.Вам не нужен TLB.

...