Конфигурация для каждого приложения

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

Начиная с Windows Server 2003, конфигурация для каждого приложения всегда переопределяет конфигурацию по умолчанию для каждого приложения. Конфигурация для каждого приложения переопределяет конфигурацию издателя для каждого приложения, только если файл конфигурации приложения указывает apply="no" в publisherPolicy и в базе данных совместимости приложений есть соответствующая запись.

Примечание

В Windows XP конфигурация для каждого приложения переопределяет конфигурацию по умолчанию и конфигурацию издателя для каждого приложения. Дополнительные сведения см. в разделе Настройка каждого приложения в Windows XP.

 

Начиная с Windows Server 2003, конфигурация для каждого приложения переопределяет конфигурацию издателя , если в файле конфигурации приложения указано apply="yes" в publisherPolicy , а для приложения в базе данных совместимости приложений установлен флаг EnableAppConfig. Эта возможность переопределить конфигурацию издателя с помощью конфигурации для каждого приложения позволяет запускать приложение в безопасном режиме. Дополнительные сведения о базе данных совместимости приложений и Safemode см. в статье Набор средств для обеспечения совместимости приложений Windows. Набор средств для обеспечения совместимости приложений Windows можно получить на сайте https://www.microsoft.com/downloads.

Примечание

Если вы отправляете компоненты с файлом конфигурации приложения (.config файлом), который указывает apply="no" в publisherPolicy, это приведет к сбою создания контекста активации. Конфигурация приложения будет игнорироваться, если вы отправляете компоненты с .config файлом, указывающим apply="yes" в publisherPolicy.

 

Администраторы приложений могут реализовать конфигурацию для каждого приложения, создавая и устанавливая файлы конфигурации приложения, а также обновляя базу данных совместимости приложений. Затем файл конфигурации приложения должен быть развернут и установлен в той же папке, что и исполняемый файл приложения. Список схемы файла см. в разделе Схема файла конфигурации приложения. База данных совместимости приложений должна быть распределена, как описано в наборе средств для обеспечения совместимости приложений.

Примечание

Если приложение выполняется в режиме Safemode, оно не получит важных исправлений безопасности или исправлений ошибок, которые могут возникнуть у издателя сборки в качестве файлов конфигурации издателя. Поэтому приложение, использующее конфигурацию для каждого приложения, может оставаться небезопасным или продолжать работать неправильно даже после того, как в системе будет применена новая сборка с этими исправлениями. По этой причине разработчики приложений никогда не должны предоставлять приложения с конфигурацией для каждого приложения. Конфигурация каждого приложения должна использоваться корпоративными администраторами только в качестве временного исправления, если приложение нарушается конфигурацией издателя. В этом случае постоянным решением является то, что разработчики сборки и разработчики приложения должны работать вместе, чтобы обеспечить полную обратную совместимость сборок с конфигурацией издателя.

 

Ниже приведен пример файла конфигурации приложения. Дополнительные сведения см. в разделе Файлы конфигурации приложения.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
 <windows>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
   <assemblyIdentity  processorArchitecture="X86" name="Microsoft.Windows.mysampleApp" type="win32" version="1.0.0.0"/>
   <publisherPolicy apply="no"/>                     
   <dependentAssembly>
    <assemblyIdentity type="win32" processorArchitecture="x86" name="Microsoft.Windows.SampleAssembly" publicKeyToken="0000000000000000"/>
    <bindingRedirect oldVersion="2.0.0.0" newVersion="2.0.1.0"/>
   </dependentAssembly>
  </assemblyBinding>
 </windows>
</configuration>

Администратор приложения должен добавить необходимые записи в базу данных совместимости приложений. Скачайте и установите windows Application Compatibility Toolkit 2.6 из https://www.microsoft.com/downloads. Создайте новую пользовательскую базу данных или обновите существующую базу данных с помощью администратора совместимости, как описано в наборе средств. Исправление совместимости, которое вы хотите выбрать для уровня совместимости приложения, — EnableAppConfig. Перед установкой новой базы данных совместимости необходимо всегда тестировать приложения.