У мене є деякі програми (деякі власні, деякі .NET), які використовують файли маніфесту, щоб їх можна було розгортати в повній ізоляції , не вимагаючи жодної глобальної реєстрації COM. Наприклад, залежність від сервера dbgrid32.ocx com оголошується наступним чином у файлі myapp.exe.manifest, який знаходиться в тій же папці, що і myapp.exe:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity type="win32" name="myapp.exe" version="1.2.3.4" />
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="dbgrid32.ocx" version="5.1.81.4" />
</dependentAssembly>
</dependency>
</assembly>
Dbgrid32.ocx розгортається в тій же папці разом із власним файлом dbgrid32.ocx.manifest:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity type="win32" name="dbgrid32.ocx" version="5.1.81.4" />
<file name="dbgrid32.ocx">
<typelib
tlbid="{00028C01-0000-0000-0000-000000000046}"
version="1.0"
helpdir=""/>
<comClass progid="MSDBGrid.DBGrid"
clsid="{00028C00-0000-0000-0000-000000000046}"
description="DBGrid Control" />
</file>
</assembly>
Це все працює нормально, але ведення цих файлів маніфесту вручну - це складна справа. Чи є спосіб автоматично створити ці файли? В ідеалі я хотів би просто оголосити про залежність програми від списку COM-серверів (як власних, так і .NET), а потім дозволити решту генерувати автоматично. Це можливо?