Настройка приложения в Windows XP

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

Примечание

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

 

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

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

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

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

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

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