Поделиться через


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

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

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

Заметка

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

 

Начиная с Windows Server 2003 конфигурация для каждого приложения переопределит конфигурацию издателя , если файл конфигурации приложения указывает apply="yes" в publisherPolicy, а флаг EnableAppConfig установлен для приложения в базе данных совместимости приложений. Эта возможность переопределить конфигурацию издателя с помощью конфигурации каждого приложения позволяет запускать приложение в Safemode. Дополнительные сведения о базе данных совместимости приложений и 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 2.6 из https://www.microsoft.com/downloads. Создайте пользовательскую или обновите существующую базу данных с помощью администратора совместимости, как описано в наборе средств. Исправление совместимости, которое вы хотите выбрать для уровня совместимости для приложения, — EnableAppConfig. Перед установкой новой базы данных совместимости необходимо всегда тестировать приложения.