Использование WIX для регистрации .NET Assumber отмечена для Com Interop
-
02-10-2019 - |
Вопрос
У меня есть библиотека классов ванили .NET, которая содержит некоторые типы, которые [Comisible] и сама сборка помечается «Регистрация для Com Interop». Я пытаюсь построить Установщик WIX для приложения, который должен не только скопировать .NET в монтажу на установочный дисплей на целевой машине, но и выполнять работу регистрации, чтобы объект, так что некоторые устаревшие приложения VB6 могут использовать приложения из сборки .NET.
Я использовал Heat.exe (более точно задание файла теплового файла), чтобы собрать фрагмент, который я включал через компонентгрупрофор в моем главном файле 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" />
Решение
Просто отправляйте фрагмент с DLL и COM для него. Вам не нужен TLB.
Другие советы
Вы должны собрать файл .tlb и .dll. Некоторые инструменты могут использовать только регистрацию DLL, но другие, такие как языки сценариев, нуждается в библиотеке типа также. Просто нагрейте их обоих, и включите оба выхода в ваш последний проект. Например, библиотеки Python's Win32Com и Perl's Win32 :: OLE используют библиотеку типа, зарегистрированную для функции.