Исправление существующего приложения с помощью частной сборки

Начиная с Windows XP можно создать частную сборку и сделать ее доступной для определенного приложения. Эту возможность можно использовать для исправления приложения, которое становится несовместимым с обновлением. Примером может быть приложение, которое становится несовместимым с последней версией MSVCRT.DLL после обновления операционной системы. В этом случае вы не можете заменить версию системы, так как MSVCRT.DLL является защищенным файлом Windows. Вместо того, чтобы переписывать приложение для работы с новой версией MSVCRT, можно создать частную сборку для MSVCRT и установить ее в папку приложения. Обратите внимание, что не каждый общий компонент является подходящим кандидатом для частной параллельной сборки, и некоторые компоненты имеют ограничения на лицензирование, касающиеся того, где можно установить их компоненты. Компонент должен соответствовать критериям для параллельного компонента. Попросите издателя компонента предоставить подходящую сборку.

Манифест частной сборки и манифест приложения должны быть установлены в той же папке, что и исполняемый файл приложения. При запуске приложение обращается к манифесту приложения и загружает версию MSVCRT, которая является закрытой для приложения.

В этом примере частная сборка будет включать как MSVCRT.DLL, так и MSVCIRT.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="Microsoft.Windows.PrivateCPlusPlusRuntime" 
version="6.0.0.0" 
processorArchitecture="x86"/>
    <file name="msvcrt.dll"/>
    <file name="msvcirt.dll"/>
</assembly>

Ниже приведен пример возможного манифеста приложения.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
<assemblyIdentity 
    version="1.0.0.0" 
    processorArchitecture="x86" 
    name="APPLICATION" 
    type="win32" 
/> 
<description>Description of Application</description> 
<dependency> 
    <dependentAssembly> 
       <assemblyIdentity 
           type="win32"
           name="Microsoft.Windows.PrivateCPlusPlusRuntime" 
           version="6.0.0.0" 
           processorArchitecture="x86"/> 
    </dependentAssembly> 
</dependency> 
</assembly>