Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модель размещаемого приложения позволяет создавать облегчённые приложения, которые наследуют исполняемый файл и точку входа от хост-приложения. Хостируемое приложение — это отдельный пакет, который содержит контент (скрипты, ресурсы, конфигурацию), но для выполнения использует среду выполнения хоста.
Как работают размещенные приложения
Главное приложение объявляет в своём манифесте расширение HostRuntime, тем самым делая его исполняемый файл доступным для других пакетов.
Размещенное приложение объявляет зависимость от этого узла и указывает, какое содержимое следует запустить. Когда пользователь запускает размещенное приложение, Windows запускает исполняемый файл узла и передает содержимое размещенного приложения в качестве контекста.
Эта модель полезна для:
- Скриптовые движки — хост предоставляет среду выполнения (например, Python, Node.js), а приложения, работающие в ней, — это отдельные скрипты или приложения.
- Игровые движки — хост предоставляет игровой движок, а размещённые приложения представляют собой отдельные игры.
- Фреймворки приложений — хост предоставляет среду выполнения фреймворка, а размещённые приложения представляют собой контент, который выполняется на нём.
Important
И для главных, и для размещённых приложений требуется идентификатор пакета MSIX. Размещенное приложение является подписанным пакетом MSIX, но его исполняемый файл поступает из узла.
Объявите среду выполнения хоста
В Package.appxmanifest хост-приложения добавьте расширение HostRuntime:
<Package xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10" ...>
<Applications>
<Application Id="App" Executable="MyHost.exe" EntryPoint="...">
<Extensions>
<uap10:Extension Category="windows.hostRuntime">
<uap10:HostRuntime Id="MyHostRuntime" />
</uap10:Extension>
</Extensions>
</Application>
</Applications>
</Package>
Значение Id — это то, на что ссылаются размещённые приложения, чтобы объявить свою зависимость.
Объявите размещённое приложение
В манифесте размещённого приложения объявите зависимость от среды выполнения хоста и укажите TrustLevel и RuntimeBehavior:
<Package xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10" ...>
<Dependencies>
<uap10:HostRuntimeDependency Name="HostAppPackageFamilyName"
Publisher="CN=HostPublisher"
MinVersion="1.0.0.0" />
</Dependencies>
<Applications>
<Application Id="App"
uap10:HostId="MyHostRuntime"
uap10:Parameters=""script.py"">
</Application>
</Applications>
</Package>
Ключевые атрибуты:
| Атрибут | Description |
|---|---|
HostRuntimeDependency.Name |
Имя семейства пакетов ведущего приложения |
HostId |
Соответствует HostRuntime.Id в главном приложении |
Parameters |
Аргументы командной строки, передаваемые исполняемому файлу хоста |
Создать пакет размещаемого приложения
Чтобы создать пакет размещённого приложения:
- Создайте стандартный проект MSIX или используйте
MakeAppx.exe. - Включите только файлы содержимого (скрипты, ресурсы, конфигурацию).
- Не включайте исполняемый файл — он предоставляется хостом.
- Объявите
HostRuntimeDependencyв манифесте. - Подпишите пакет с помощью доверенного сертификата для промышленной эксплуатации. Во время разработки можно зарегистрировать пакет без подписи (см. ниже).
Регистрация неподписанных пакетов (разработка)
В процессе разработки можно зарегистрировать неподписанный пакет размещаемого приложения:
Add-AppxPackage -Path "HostedApp.msix" -AllowUnsigned
Note
Регистрация неподписанных пакетов предназначена только для разработки. Для промышленной эксплуатации подпишите пакет доверенным сертификатом.
Пример: хост скриптов Python
Приложение среды выполнения Python может служить хостом:
-
Хост-приложение — упаковывает
python.exeи объявляетHostRuntime Id="PythonHost". -
Размещённое приложение — содержит скрипт Python (
app.py) и объявляетHostId="PythonHost"с помощьюParameters="app.py". - Когда пользователь запускает размещаемое приложение, Windows запускает
python.exe app.pyхост-приложения, используя каталог пакета размещаемого приложения в качестве рабочего каталога.
Связанные материалы
Windows developer