Руководство по развертыванию .NET Framework для разработчиков

В этой статье содержатся сведения для разработчиков, которые хотят установить любую версию платформа .NET Framework от платформа .NET Framework 4.5 до платформа .NET Framework 4.8 со своими приложениями.

Вы можете скачать распространяемые пакеты и языковые пакеты для .NET Framework со следующих страниц скачивания:

Внимание

Содержимое платформы .NET Framework, подписанное ранее с помощью сертификатов, использующих алгоритм SHA1, перестанет использоваться, чтобы поддержать развитие отраслевых стандартов.

Следующие версии платформы .NET Framework достигнут окончания поддержки 26 апреля 2022 г.: 4.5.2, 4.6 и 4.6.1. После этой даты исправления безопасности, обновления и техническая поддержка для этих версий предоставляться не будут.

Если вы используете платформу .NET Framework 4.5.2, 4.6 или 4.6.1, обновите развернутую среду выполнения до более новой версии, например .NET Framework 4.6.2 до 26 апреля 2022 г., чтобы продолжить получать обновления и техническую поддержку.

Для версий .NET Framework 3.5 SP1 и 4.6.2–4.8 будут доступны обновленные установщики, подписанные с использованием SHA2. Дополнительные сведения см. в плане прекращения использования SHA1, записи блога, посвященной обновлению жизненного цикла .NET 4.5.2, 4.6 и 4.6.1 и часто задаваемых вопросах.

Важные примечания.

  • Версии платформа .NET Framework от платформа .NET Framework 4.5.1 до платформа .NET Framework 4.8 являются обновлениями на месте для платформа .NET Framework 4.5, что означает, что они используют ту же версию среды выполнения, но версии сборок обновляются и включают новые типы и члены.

  • .NET Framework 4.5 и более поздние версии поэтапно расширяют возможности .NET Framework 4. При установке .NET Framework 4.5 или более поздних версий в системе, где уже установлена платформа .NET Framework 4, сборки версии 4 заменяются более новыми версиями.

  • Если вы ссылаетесь на внештатный пакет Майкрософт в своем приложении, сборка будет включена в пакет приложения.

  • Для установки .NET Framework 4.5 и более поздних версий требуются права администратора.

  • .NET Framework 4.5 входит в состав в Windows 8 и Windows Server 2012, поэтому этот компонент не нужно развертывать вместе с приложением в этих операционных системах. Аналогично, .NET Framework 4.5.1 входит в состав в Windows 8.1 и Windows Server 2012 R2. Платформа .NET Framework 4.5.2 не входит в состав операционных систем. .NET Framework 4.6 входит в состав Windows 10, .NET Framework 4.6.1 — в состав ноябрьского обновления Windows 10, а .NET Framework 4.6.2 — в состав юбилейного обновления Windows 10. .NET Framework 4.7 входит в состав обновления Windows 10 Creators Update, .NET Framework 4.7.1 — в состав Windows 10 Fall Creators Update, а .NET Framework 4.7.2 — в обновления Windows 10 за октябрь и за апрель 2018 г. Платформа .NET Framework 4.8 входит в состав обновления Windows 10 за май 2019 г. и всех последующих обновлений Windows 10. Полный список требований к оборудованию и программному обеспечению см. в разделе Требования к системе для .NET Framework.

  • Начиная с .NET Framework 4.5, пользователи могут просматривать список запущенных приложений .NET Framework во время установки и легко закрывать их. Это помогает избежать перезапуска системы, вызываемого установкой .NET Framework. См. раздел Уменьшение перезапусков системы.

  • При удалении .NET Framework 4.5 или более поздней версии автоматически удаляются все существовавшие ранее файлы .NET Framework 4. Если вам нужно вернуться к .NET Framework 4, ее придется полностью переустановить со всеми обновлениями. Ознакомьтесь со статьей Installing the .NET Framework (Установка платформы .NET Framework).

  • Распространяемый пакет платформы .NET Framework 4.5 был обновлен 9 октября 2012 г., чтобы устранить проблему, связанную с неправильной отметкой времени в цифровом сертификате, которая вызывала преждевременное истечение срока действия цифровой подписи в файлах, создаваемых и подписываемых Microsoft. Если вы ранее установили распространяемый пакет платформы .NET Framework 4.5 от 16 августа 2012 г., рекомендуем обновить установленную копию до последнего распространяемого пакета, который доступен на странице скачивания .NET Framework. Дополнительные сведения об этой проблеме см. в статье Советы по безопасности (Microsoft) (2749655).

Сведения о способах развертывания платформы .NET Framework и ее системных зависимостей по сети см. в разделе Руководство по развертыванию для администраторов.

Варианты развертывания приложения

Когда приложение готово к публикации на веб-сервере или в другом централизованном расположении, откуда пользователи смогут его устанавливать, можно выбрать один из нескольких методов развертывания. Некоторые из этих методов предусмотрены в Visual Studio. В таблице ниже перечислены варианты развертывания приложения с указанием распространяемого пакета .NET Framework, соответствующего каждому варианту. Помимо этого, можно написать для приложения собственную программу установки; дополнительные сведения см. в подразделе Привязка установки .NET Framework к установке приложения.

Стратегия развертывания приложения Доступные методы развертывания Используемый распространяемый пакет .NET Framework
Установка из Интернета - InstallAware
- InstallShield
- Набор инструментов WiX
- Установка вручную
Web installer
Установка с диска - InstallAware
- InstallShield
- Набор инструментов WiX
- Установка вручную
автономный установщик.
Установка из локальной сети (для корпоративных приложений) - ClickOnce Веб-установщик (см. ограничения в ClickOnce ) или автономный установщик

Распространяемые пакеты

Платформа .NET Framework доступна в виде двух распространяемых компонентов пакетов: веб-установщик (начальный загрузчик) и автономный установщик (автономный распространяемый компонент). Все файлы для скачивания .NET Framework размещаются на этой странице. В следующей таблице сравниваются два пакета:

Web installer автономный установщик.
Требуется подключение к Интернету? Да Нет
Размер загрузки Меньший (включает только установщик для целевой платформы) * Больший*
Языковые пакеты Включены** Устанавливаются отдельно, если только не используется пакет, предназначенный для всех ОС
Метод развертывания Поддерживает все методы:

- ClickOnce
- InstallAware
- InstallShield
- Windows Installer XML (WiX)
- Установка вручную
- Пользовательская установка (привязка)
Поддерживает все методы:

- ClickOnce
- InstallAware
- InstallShield
- Windows Installer XML (WiX)
- Установка вручную
- Пользовательская установка (привязка)

* Автономный установщик больше, так как он содержит компоненты для всех целевых платформ. По завершении работы программы установки операционная система Windows кэширует только использовавшийся установщик. Если удалить автономный установщик после установки, используемое место на диске будет таким же, как при использовании веб-установщика. Если средство, используемое для создания программы установки приложения (например, InstallAware или InstallShield), предусматривает папку для файлов установки, которая удаляется после установки, автономный установщик может быть удален автоматически путем помещения его в папку установки.

** При использовании веб-установщика с пользовательской установкой можно использовать параметры языка по умолчанию на основе заданного пользователем параметра многоязычного пользовательского интерфейса (MUI) или задать другой языковой пакет с помощью параметра /LCID в командной строке. Примеры см. в подразделе Привязка с использованием пользовательского интерфейса .NET Framework по умолчанию .

Методы развертывания

Существует четыре метода развертывания:

Эти методы развертывания подробно рассмотрены в следующих подразделах.

Установка зависимости от платформы .NET Framework

Если для развертывания приложения используется ClickOnce, InstallAware, InstallShield или WiX, можно добавить зависимость от .NET Framework, чтобы платформу можно было установить в ходе установки приложения.

развертывание ClickOnce

Развертывание ClickOnce доступно для проектов, созданных при помощи Visual Basic и Visual C#, но недоступно для Visual C++.

Чтобы выбрать развертывание ClickOnce и добавить зависимость от .NET Framework, выполните в Visual Studio следующие действия:

  1. Откройте проект приложения, который требуется опубликовать.

  2. В обозревателе решений откройте контекстное меню своего проекта и выберите Свойства.

  3. Выберите область Публикация .

  4. Нажмите кнопку Необходимые компоненты .

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

  6. В списке необходимых компонентов найдите и выберите версию .NET Framework, которую вы использовали для сборки своего проекта.

  7. Выберите вариант с указанием расположения источника для необходимых компонентов и нажмите кнопку ОК.

    При предоставлении URL-адреса в качестве расположения загрузки .NET Framework можно указать либо страницу скачивания .NET Framework, либо свой сайт. При размещении распространяемого пакета на своем сервере этот пакет должен представлять собой автономный установщик, а не веб-установщик. Ссылка на веб-установщик может вести только на страницу скачивания .NET Framework. URL-адрес может также указывать диск, на котором распространяется приложение.

  8. В диалоговом окне Страницы свойств выберите ОК.

Развертывание InstallAware

InstallAware позволяет создавать пакеты для приложения Windows (APPX), установщика Windows (MSI), машинного кода (EXE) и App-V (Application Virtualization) из одного источника. Вы можете легко добавить любую версию .NET Framework в установку. При необходимости настройте установку, изменив скрипты по умолчанию. Например, InstallAware предварительно устанавливает сертификаты в Windows 7, без которых установка .NET Framework 4.7 завершается сбоем. Дополнительные сведения об InstallAware см. на сайте InstallAware для установщика Windows.

Развертывание InstallShield

InstallShield создает пакеты приложений для Windows (MSIX, APPX), пакеты установщика Windows (MSI) и установщики машинного кода (EXE). InstallShield также обеспечивает интеграцию с Visual Studio. Дополнительные сведения см. на веб-сайте InstallShield.

Развертывание с помощью Windows Installer XML (WiX)

Набор инструментов Windows Installer XML (WiX) собирает установочные пакеты Windows из исходного кода XML. WiX поддерживает среду командной строки, которая может быть интегрирована в процесс сборки для сборки пакетов установки MSI и MSM. С помощью WiX можно указать .NET Framework в качестве необходимого компонентаили создать формирователь цепочки для полного управления развертыванием .NET Framework. Дополнительные сведения о WiX см. на веб-сайте набора инструментов Windows Installer XML (WiX) .

Установка .NET Framework вручную

В некоторых случаях автоматически устанавливать .NET Framework вместе с приложением может быть нецелесообразно. В этом случае можно обязать пользователей установить платформу .NET Framework самостоятельно. Распространяемый пакет доступен в двух пакетах. В процессе установки дайте пользователям указания о том, как найти и установить .NET Framework.

Привязка установки .NET Framework к установке приложения

При создании для приложения собственной программы установки можно привязать процесс установки .NET Framework к процессу установки приложения (создать цепочку). При привязке существует два варианта пользовательского интерфейса для установки .NET Framework:

  • использование пользовательского интерфейса по умолчанию, предоставляемого установщиком .NET Framework;

  • создание собственного пользовательского интерфейса для установки .NET Framework для единообразия с программой установки приложения.

Оба метода позволяют использовать как веб-установщик, так и автономный установщик. У каждого пакета есть свои преимущества:

  • при использовании веб-установщика процесс установки .NET Framework принимает решение, какой требуется установочный пакет, и загружает из Интернета и устанавливает только этот пакет;

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

Привязка с использованием пользовательского интерфейса .NET Framework по умолчанию

Чтобы автоматически привязать процесс установки .NET Framework и дать установщику платформы .NET Framework возможность предоставить пользовательский интерфейс, добавьте в свою программу установки следующую команду:

<.NET Framework redistributable> /q /norestart /ChainingPackage <PackageName>

Например, если вы исполняете программу Contoso.exe и вам нужно автоматически установить автономный распространяемый пакет .NET Framework 4.5, используйте следующую команду:

dotNetFx45_Full_x86_x64.exe /q /norestart /ChainingPackage Contoso

Можно использовать дополнительные параметры командной строки для настройки установки. Например:

  • Чтобы предоставить пользователю возможность закрыть работающие приложения .NET Framework для минимизации перезапусков системы, установите пассивный режим и используйте параметр /showrmui следующим образом:

    dotNetFx45_Full_x86_x64.exe /norestart /passive /showrmui /ChainingPackage Contoso

    Эта команда позволяет диспетчеру перезапуска выводить окно сообщения, которое дает пользователям возможность закрыть приложения .NET Framework, прежде чем устанавливать платформу .NET Framework.

  • При использовании веб-установщика можно использовать параметр /LCID для указания языкового пакета. Например, чтобы привязать веб-установщик .NET Framework 4.5 к программе установки Contoso и установить японский языковой пакет, добавьте в процесс установки приложения следующую команду:

    dotNetFx45_Full_setup.exe /q /norestart /ChainingPackage Contoso /LCID 1041

    Если параметр /LCID опущен, программа установки установит языковой пакет, соответствующий параметру MUI пользователя.

    Примечание.

    Даты выпусков языковых пакетов могут быть разными. Если требуемый языковой пакет отсутствует в центре загрузки, программа установки установит .NET Framework без языкового пакета. Если .NET Framework уже установлена на компьютере пользователя, программа установки установит только языковой пакет.

Полный список параметров см. в подразделе Параметры командной строки .

Стандартные коды возврата см. в подразделе Коды возврата .

Связывание с использованием настраиваемого пользовательского интерфейса

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

Обнаружение .NET Framework

Если установка выполнена успешно, установщик .NET Framework записывает разделы реестра. Можно узнать, установлена ли в системе .NET Framework 4.5 или более поздняя версия, проверив папку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full в реестре на наличие значения DWORD с именем Release. (Обратите внимание, что "Настройка NET Framework" не начинается с периода.) Существование этого ключа указывает, что на этом компьютере установлена платформа .NET Framework 4.5 или более поздней версии. Значение Release показывает, какая версия .NET Framework установлена.

Внимание

При попытке определить наличие конкретной версии проверьте значение, большее или равное значению ключевого слова release.

Версия Значение DWORD "Release"
платформа .NET Framework 4.8.1 533325
Платформа .NET Framework 4.8, установленная в обновлениях Windows 10 за май и октябрь 2020 г. 528372
Платформа .NET Framework 4.8, установленная в обновлениях Windows 10 за май и ноябрь 2019 г. 528040
Платформа .NET Framework 4.8, установленная во всех версиях ОС, отличных от указанных версий обновления Windows 10 528049
Платформа .NET Framework 4.7.2, установленная в Windows 10 с обновлением за апрель 2018 г. и в Windows Server, версия 1803 461808
Платформа .NET Framework 4.7.2, установленная на остальных версиях ОС, кроме Windows 10 с обновлением за апрель 2018 г. и Windows Server, версия 1803. Сюда также относится обновление Windows 10 за октябрь 2018 г. 461814
Платформа .NET Framework 4.7.1, установленная в Windows 10 Fall Creators Update и в Windows Server, версия 1709 461308
Платформа .NET Framework 4.7.1, установленная на остальных версиях ОС, кроме Windows 10 Fall Creators Update и Windows Server, версия 1709 461310
.NET Framework 4.7 установлена в обновлении Windows 10 Creators Update 460798
.NET Framework 4.7 установлена во всех версиях ОС, за исключением обновления Windows 10 Creators Update 460805
.NET Framework 4.6, установленная в выпусках Windows 10 Anniversary Edition и Windows Server 2016 394802
.NET Framework 4.5, установленная во всех версиях операционной системы, отличных от Windows 10 Anniversary Edition и Windows Server 2016 394806
.NET Framework 4.8, установленная в Windows 10 с обновлением за ноябрь 394254
.NET Framework 4.6.1, установленная во всех версиях ОС, за исключением Windows 10 с обновлением за ноябрь 394271
.NET Framework 4.6, установленная в Windows 10 393295
.NET Framework 4.6, установленная во всех версиях ОС, за исключением Windows 10 393297
.NET Framework 4.5.2 379893
Платформа .NET Framework 4.5.1, установленная с Windows 8.1 или Windows Server 2012 R2 378675
Установка .NET Framework 4.5.1 в Windows 8, Windows 7 378758
.NET Framework 4.5 378389

Обнаружение языковых пакетов

Вы можете проверить, установлен ли определенный языковой пакет, проверка HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\LCID в реестре для значения DWORD с именемRelease. (Обратите внимание, что папка "NET Framework Setup" не начинается с точки.) LCID задает код языка; список кодов см. на странице поддерживаемых языков .

Например, чтобы проверить, установлен ли уже японский полный языковой пакет (LCID=1041), извлеките следующее именованное значение из реестра:

Значение
Ключ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\1041
Формат ввода Выпуск
Тип DWORD

Чтобы определить, установлен ли окончательный выпуск языкового пакета для определенной версии .NET Framework с 4.5 по 4.7.2, проверьте значение DWORD раздела RELEASE, описанное в предыдущем разделе (Обнаружение .NET Framework).

Привязка языковых пакетов к установке приложения

Платформа .NET Framework предоставляет набор автономных исполняемых файлов языковых пакетов, содержащих локализованные ресурсы для конкретных языков и региональных параметров. Эти пакеты можно получить со следующих страниц загрузки .NET Framework:

Внимание

Языковые пакеты не содержат компоненты платформы .NET Framework, необходимые для запуска приложения. Необходимо настроить платформу .NET Framework с помощью веб-установщика или автономного установщика перед установкой языкового пакета.

Начиная с платформа .NET Framework 4.5.1 имена пакетов принимают форму NDP-КБ-x86-x64-allOS<>>numberversion<-<culture>.exe, где version номер версии платформа .NET Framework, number является номером статьи базы знаний Майкрософт и culture указывает страну или регион. Пример одного из этих пакетов — NDP452-KB2901907-x86-x64-AllOS-JPN.exe. Имена пакетов, перечислены в разделе Redistributable Packages ранее в этой статье.

Чтобы установить языковой пакет с помощью автономного установщика .NET Framework , необходимо привязать его к установке приложения. Например, для развертывания автономного установщика .NET Framework 4.5.1 с японским языковым пакетом используйте следующую команду:

NDP451-KB2858728-x86-x64-AllOS-JPN.exe /q /norestart /ChainingPackage <ProductName>

Привязывать языковые пакеты при использовании веб-установщика не обязательно: программа установки установит языковой пакет, соответствующий параметру MUI пользователя. Если требуется установить другой язык, можно использовать параметр /LCID для задания языкового пакета.

Полный список параметров командной строки см. в подразделе Параметры командной строки .

Устранение неполадок

Коды возврата

В следующей таблице перечислены наиболее распространенные коды возврата установщика распространяемого пакета .NET Framework. Коды возврата одинаковы для всех версий установщика. Ссылки на подробные сведения см. в следующем подразделе.

Код возврата Description
0 Установка успешно завершена.
1602 Установка отменена пользователем.
1603 При установке произошла неустранимая ошибка.
1641 Для завершения установки необходима перезагрузка. Сообщение указывает на успешное завершение действия.
3010 Для завершения установки необходима перезагрузка. Сообщение указывает на успешное завершение действия.
5100 Компьютер пользователя не отвечает системным требованиям.

Коды ошибок загрузки

Ознакомьтесь со следующими ресурсами:

Другие коды ошибок

Ознакомьтесь со следующими ресурсами:

Удаление .NET Framework

Начиная с Windows 8, вы можете удалить .NET Framework 4.5 или более поздних версий в разделе включения или отключения компонентов Windows на панели управления. В более ранних версиях Windows платформу .NET Framework 4.5 или более поздних версий можно удалить с помощью пункта Установка и удаление программ на панели управления.

Внимание

Для Windows 7 и более ранних операционных систем удаление платформа .NET Framework 4.5.1 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 или 4.8.1 не восстанавливает платформа .NET Framework 4.5 файлов, а удаление платформа .NET Framework 4.5 не восстанавливается. платформа .NET Framework 4 файла. Чтобы вернуться к более старой версии, необходимо переустановить платформу со всеми обновлениями.

Приложение

Параметры командной строки

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

Вариант Описание
/CEIPConsent Перезаписывает поведение по умолчанию и отправляет анонимные сведения об установке в корпорацию Microsoft для совершенствования процедуры развертывания в будущем. Этот параметр можно использовать, только если программа установки запрашивает согласие пользователя и только если пользователь разрешает отправлять анонимную статистку в корпорацию Microsoft.
/chainingpackagepackageName Указывает имя исполняемого файла, осуществляющего привязку. Эти сведения отправляются в корпорацию Microsoft в качестве анонимной статистики для совершенствования процедуры развертывания в будущем.

Если в имени пакета присутствуют пробелы, в качестве разделителей необходимо использовать двойные кавычки (например, /chainingpackage "Lucerne Publishing"). Пример привязываемого пакета см. в разделе Получение сведений о ходе выполнения из пакета установки.
/LCIDLCID

где параметр LCID задает код языка (список кодов см. на странице поддерживаемых языков).
Устанавливает языковой пакет, определенный параметром LCID , и обеспечивает принудительное отображение пользовательского интерфейса на этом языке (если не включен автоматический режим).

Для веб-установщика этот параметр обеспечивает установку (привязку) языкового пакета из Интернета. Примечание. Используйте этот параметр только с веб-установщиком.
/Журналаfile | folder Задает расположение файла журнала. Значение по умолчанию — временная папка для процесса, а имя файла по умолчанию основано на пакете. Если файл имеет расширение .txt, создается текстовый журнал. Если указано любое другое расширение или никакого расширения, создается журнал в формате HTML.
/msioptions Задает параметры для передачи элементам MSI и MSP; например: /msioptions "PROPERTY1='Value'".
/norestart Запрещает программе установки автоматически перезагружать компьютер. При использовании этого параметра привязываемое приложение должно захватить код возврата и обработать перезагрузку (см. раздел Получение сведений о ходе выполнения из пакета установки).
/passive Задает пассивный режим. Отображает индикатор выполнения, чтобы показать, что установка выполняется, но не выводит никаких приглашений и сообщений об ошибках. В этом режиме, при объединении в цепочку с программой установки, привязываемый пакет должен обрабатывать коды возврата.
/pipe Создает канал связи, чтобы привязываемый пакет мог получать информацию о ходе выполнения.
/promptrestart Только пассивный режим; если программе установки необходима перезагрузка, она выводит соответствующий запрос для пользователя. При использовании этого параметра требуется вмешательство пользователя, если необходима перезагрузка.
/q Устанавливает тихий режим.
/repair Включение функции исправления.
/serialdownload Обеспечивает, что установка происходит только после загрузки пакета.
/showfinalerror Задает пассивный режим. Отображает ошибки только в том случае, если установка не выполнена успешно. При использовании этого параметра в случае ошибки установки требуется вмешательство пользователя.
/showrmui Используется только с параметром /passive . Выводит окно сообщения, в котором пользователю предлагается закрыть работающие в данный момент приложения .NET Framework. Это окно сообщения ведет себя одинаково как в пассивном, так и не в пассивном режиме.
/uninstall Удаляет распространяемый пакет .NET Framework.

Поддерживаемые языки

В приведенной ниже таблице перечислены языковые пакеты .NET Framework, доступные для платформы .NET Framework 4.5 и более поздних версий.

LCID Язык — страна/регион Культура
1025 Арабский — Саудовская Аравия ar
1028 Китайский (традиционное письмо) zh-Hant
1029 чешский cs
1030 датский da
1031 Немецкий (Германия) de
1032 Греческий el
1035 Финский fi
1036 Французский (Франция) fr
1037 Иврит he
1038 венгерский hu
1040 Итальянский (Италия) it
1041 Японский ja
1042 Корейский ko
1043 Голландский (Нидерланды) nl
1044 Норвежский букмол no
1045 Польский pl
1046 Португальский (Бразилия) pt-BR
1049 русский ru
1053 Шведский sv
1055 Турецкий tr
2052 Китайский (упрощенное письмо) zh-Hans
2070 Португальский (Португалия) pt-PT
3082 Испанский (Испания, современная сортировка) es

См. также