Прежде чем вы даже коснетесь регистрации, убедитесь, что ваше приложение работает, когда dll зарегистрирована.Как только вы довольны этим.Пришло время попробовать и заставить его работать бесплатно.Первый шаг - отменить регистрацию вашей dll.Если вы попытаетесь запустить вашу программу сейчас, вы должны получить ClassId not found.
Первый шаг - создать файл манифеста для вашего приложения.Файл манифеста - это XML-файл, который, помимо прочего, может устанавливать зависимости для вашего приложения.Возможно, вы этого не знаете, но, поскольку в Delphi 2007 включены темы, у вашего приложения всегда был манифест.Вот от Delphi 2010:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="CodeGear RAD Studio"
version="14.0.3615.26342"
processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Теперь я не уверен, что вы можете добавить к этому, и вы можете иметь только один файл манифеста для приложения, я просто обычно заменяю его полностью.Поскольку я хочу, чтобы темы были включены, я начинаю с этого файла и добавляю свою зависимость.В вашем случае вам нужно добавить зависимость для skype4com.dll Вот что мне нужно добавить:
<assemblyIdentity
name="Skype4COM.X"
version="1.0.36.0"
type="win32"
processorArchitecture="x86">
</assemblyIdentity>
Примечание. На самом деле я добавляю зависимость в сборку Skye4COM.X, а не саму dll.Не путайте 2, хотя DLL может быть сборкой, сборка не обязательно 1 DLL.Это станет ясно, когда мы настроим манифест сборки /
Ваш файл манифеста теперь станет:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="CodeGear RAD Studio"
version="14.0.3615.26342"
processorArchitecture="*"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity
name="Skype4COM.X"
version="1.0.36.0"
type="win32"
processorArchitecture="x86">
</assemblyIdentity>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Сохраните этот файл с тем же именем, что и ваш исполняемый файл, но с суффиксом .manifest.,Например, SkypeClient.exe.manifest
Следующим шагом является встраивание этого манифеста в ваше приложение.Вам нужно будет создать файл ресурсов (файл rc) со следующим текстом:
#define RT_MANIFEST 24
#define APP_MANIFEST 1
APP_MANIFEST RT_MANIFEST SkypeClient.exe.manifest
Добавьте этот файл в приложение и соберите его.Если темы по-прежнему включены, вы получите предупреждение о дублировании ресурса, просто удалите {$ R * .res} из вашего файла dpr.Вы также должны увидеть это в файле проекта:
{$R 'SkypeClient.manifest.res' 'SkypeClient.manifest.rc'}
Если вы попытаетесь запустить ваше приложение сейчас, вы получите следующее сообщение об ошибке:
Невозможно создать процесс:Не удалось запустить приложение, поскольку его параллельная конфигурация неверна.Пожалуйста, смотрите журнал событий приложения или используйте инструмент командной строки sxstrace.exe для более подробной информации.
Теперь нам нужно добавить манифест для сборки (Skype4COM.X).Создайте файл с именем Skype4COM.X.manifest.Нам нужно описать сборку в файле манифеста:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Skype4COM.X"
version="1.0.36.0"
type="win32"
processorArchitecture="x86">
</assemblyIdentity>
<file name="Skype4COM.dll">
<typelib
tlbid="{03282B5D-B38F-469D-849A-09B0A7F4881B}"
version="1.0"
helpdir=""
flags="hasdiskimage"/>
</file>
</assembly>
Теперь поместите Приложение, dll и манифест сборки в одну папку и запустите!
Если вы получаете больше ошибок, вы 'Вам нужно будет использовать SxSTrace для отладки.Это доступно в Vista и далее.Сначала запустите трассировку:
SxSTrace trace -logfile:sxsTrace.etl
запустите вашу программу, а затем нажмите Enter на трассировке, чтобы завершить ее.Теперь проанализируйте трассировку:
SxSTrace parse -logfile:SxSTrace.etl -outfile:SxStrace.txt
У вас должен быть полный журнал всего процесса в SxSTrace.txt