创建 Shell 启动器配置文件
若要配置 Shell 启动器,必须创建配置 XML 文件并将其应用于设备。 配置文件必须符合 架构,如 Shell Launcher XML 架构定义 (XSD) 中定义。
本文介绍如何配置 Shell 启动器配置文件,包括实际示例。
让我们首先看看 XML 文件的基本结构。 Shell 启动器配置文件包含:
- 一个或多个
profiles
。 每个profile
定义:- 替换标准 Windows shell (
Explorer.exe
) 的应用程序,该应用程序在用户登录时执行 - 应用程序退出时要执行的默认操作,以及应用程序退出时使用特定返回代码执行的操作
- 替换标准 Windows shell (
- 一个或多个
configs
。 每个config
将用户帐户关联到profile
注意
如果配置文件未关联到用户帐户,则它不起作用。
下面是 Shell 启动器配置文件的基本示例,其中包含一个配置文件和一个配置:
<?xml version="1.0" encoding="utf-8" ?>
<ShellLauncherConfiguration
xmlns="http://schemas.microsoft.com/ShellLauncher/2018/Configuration"
xmlns:V2="http://schemas.microsoft.com/ShellLauncher/2019/Configuration">
<Profiles>
<Profile Id="{GUID}">
<!-- Add configuration here as needed -->
</Profile>
</Profiles>
<Configs>
<Config>
<!-- Add configuration here as needed -->
</Config>
</Configs>
</ShellLauncherConfiguration>
版本控制
Shell 启动器配置 XML 是版本控制。 版本在 XML 根元素中定义,用于确定用于验证 XML 文件的架构。 版本还用于确定哪些功能可用于配置。 下面是文档示例中使用的版本、别名和命名空间的表:
版本 | Alias | 命名空间 |
---|---|---|
Windows 10 | V2 |
http://schemas.microsoft.com/ShellLauncher/2019/Configuration |
Windows 10 | 默认 | http://schemas.microsoft.com/ShellLauncher/2018/Configuration |
若要授权包含特定于版本的元素和属性的兼容配置 XML,请始终包含加载项架构的命名空间,并使用命名空间别名相应地修饰属性和元素。 例如,若要将展台应用程序配置为全屏执行,请使用以下示例。 请注意与命名空间关联的http://schemas.microsoft.com/ShellLauncher/2019/Configuration
别名V2
,该别名在 和 AllAppsFullScreen
属性上AppType
内联标记。
<?xml version="1.0" encoding="utf-8" ?>
<ShellLauncherConfiguration
xmlns="http://schemas.microsoft.com/ShellLauncher/2018/Configuration"
xmlns:V2="http://schemas.microsoft.com/ShellLauncher/2019/Configuration">
<Profiles>
<Profile Id="{GUID}">
<!-- Add configuration here as needed -->
<Shell Shell="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe" V2:AppType="Desktop" V2:AllAppsFullScreen="true">
</Profile>
</Profiles>
<Configs>
<Config>
<!-- Add configuration here as needed -->
</Config>
</Configs>
</ShellLauncherConfiguration>
可在此处找到 shell Launcher XML 架构定义 (XSD) 。
配置文件
配置文件可以包含一个或多个配置文件。 每个配置文件都有一个唯一标识符 Profile Id
和 (可选)一个 Name
。 例如:
<Profiles>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" Name="Microsoft Learn example">
<!-- Add configuration here as needed -->
</Profile>
</Profiles>
提示
在 Profile Id
XML 文件中必须是唯一的。 可以使用 PowerShell cmdlet New-Guid
生成 GUID。
可以定义在没有 Defaultprofile
其他配置文件与用户帐户关联时使用的 。 这可确保使用设备的每个用户都使用相同的应用程序。 示例:
<Profiles>
<DefaultProfile>
<!-- Add configuration here as needed -->
</DefaultProfile>
</Profiles>
Shell
每个配置文件定义一个 Shell
元素,其中包含有关要执行的应用程序的详细信息。 元素 Shell
具有以下属性:
属性 | 说明 | 详细信息 |
---|---|---|
Shell |
用作 Windows shell 的应用程序。 | - 对于通用 Windows 平台 (UWP) 应用,你必须提供应用用户模型 ID (AUMID) 。 了解如何 查找已安装应用的应用程序用户模型 ID。 - 对于桌面应用,请指定可执行文件的完整路径,它可以以 的形式 %variableName% 包含系统环境变量。 还可以指定应用可能需要的任何参数。 |
V2:AppType |
定义应用程序的类型。 | 允许的值为 Desktop 和 UWP 。 |
V2:AllAppsFullScreen |
定义是否以全屏方式执行所有应用程序的布尔值。 | - 设置为 true 时,Shell 启动器以全屏方式运行每个应用,或最大化桌面应用。- 设置为 或不设置为 时 false ,只有自定义 shell 应用在全屏模式下运行;用户启动的其他应用在窗口模式下运行。 |
示例:
<Profile Id="{GUID}">
<Shell Shell="" V2:AppType="" V2:AllAppsFullScreen="">
<!-- Add configuration here as needed -->
</Shell>
</Profile>
在下一个示例中,“天气”应用以全屏方式执行。
<?xml version="1.0" encoding="utf-8"?>
<ShellLauncherConfiguration xmlns="http://schemas.microsoft.com/ShellLauncher/2018/Configuration"
xmlns:V2="http://schemas.microsoft.com/ShellLauncher/2019/Configuration">
<Profiles>
<DefaultProfile>
<Shell Shell="Microsoft.BingWeather_8wekyb3d8bbwe!App" V2:AppType="UWP">
<DefaultAction Action="RestartShell"/>
</Shell>
</DefaultProfile>
</Profiles>
<Configs/>
</ShellLauncherConfiguration>
在下一个示例中,Microsoft Edge 以全屏方式执行,打开网站。 网站在处于非活动状态 2 分钟后重新加载。
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}">
<Shell Shell="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe --kiosk https://www.contoso.com --edge-kiosk-type=fullscreen --kiosk-idle-timeout-minutes=2" V2:AppType="Desktop" V2:AllAppsFullScreen="true">
<DefaultAction Action="RestartShell"/>
</Shell>
</Profile>
ReturnCodeActions
Shell 启动器定义四个操作来处理应用退出。 可以自定义 Shell 启动器,并根据不同的退出代码使用操作。 下面是 ReturnCodeActions
枚举:
RestartShell
RestartDevice
ShutdownDevice
DoNothing
这些操作可用作默认操作,也可以映射到特定的退出代码。 请参阅 Shell 启动器 ,了解如何将退出代码与 Shell 启动器 WMI 配合使用。
最多可以指定四个映射到四个退出代码的自定义操作,并为所有其他退出代码指定一个默认操作。 当应用退出时,如果在自定义操作映射中找不到退出代码,或者没有定义默认操作,则不会发生任何操作。 因此,至少应定义 DefaultAction
。
示例:
<Profile Id="{GUID}">
<Shell Shell="" V2:AppType="" V2:AllAppsFullScreen="">
<ReturnCodeActions>
<ReturnCodeAction ReturnCode="0" Action="RestartShell"/>
<ReturnCodeAction ReturnCode="-1" Action="RestartDevice"/>
<ReturnCodeAction ReturnCode="255" Action="ShutdownDevice"/>
<ReturnCodeAction ReturnCode="1" Action="DoNothing"/>
</ReturnCodeActions>
<DefaultAction Action="RestartDevice"/>
</Shell>
</Profile>
配置
在 下 Configs
,定义一个或多个用户帐户及其与配置文件的关联。
使用 <Account Name=""/>
指定单个帐户。
重要提示
在应用 Shell 启动器配置之前,请确保指定的用户帐户在设备上可用,否则会失败。
对于域和Microsoft Entra 帐户,只要设备已加入 Active Directory 或 Microsoft Entra 联接,就可以在设备加入的域林或租户中发现该帐户。 对于本地帐户,在为 Shell 启动器配置帐户之前,需要该帐户存在。
本地用户
本地帐户可以输入为 devicename\user
、 .\user
或仅 user
。
<Config>
<Account Name="Learn Example"/>
<Profile Id="{GUID}"/>
</Config>
Active Directory 用户
必须使用格式 domain\samAccountName
输入域帐户。
<Config>
<Account Name="contoso\user"/>
<Profile Id="{GUID}"/>
</Config>
Microsoft Entra 用户
Microsoft必须使用格式指定 Entra 帐户: AzureAD\{UPN}
。
AzureAD
必须 按原样提供,然后使用Microsoft Entra 用户主体名称 (UPN) 。
<Config>
<Account Name="azuread\user@contoso.onmicrosoft.com"/>
<Profile Id="{GUID}"/>
</Config>
用户帐户登录时,将应用关联的 Shell 启动器配置文件,加载配置文件中指定的应用程序。
自动登录帐户
使用 <AutoLogonAccount>
,Shell 启动器创建和管理用户帐户,以在设备重启后自动登录。 该帐户是名为 的 Kiosk
本地标准用户。
示例:
<Configs>
<Config>
<!--account managed by Shell Launcher-->
<AutoLogonAccount/>
<Profile Id="{GUID}"/>
</Config>
<Configs>
<!--local account-->
<Account Name="Learn Example"/>
<Profile ID="{GUID}"/>
</Configs>
<Configs>
<!--Microsoft Entra account-->
<Account Name="azuread\kiosk@contoso.com"/>
<Profile ID="{GUID}"/>
</Configs>
</Configs>
示例
下面是 Shell 启动器配置文件的完整示例,其中包含两个配置文件和三个配置:
<?xml version="1.0" encoding="utf-8"?>
<ShellLauncherConfiguration xmlns="http://schemas.microsoft.com/ShellLauncher/2018/Configuration" xmlns:V2="http://schemas.microsoft.com/ShellLauncher/2019/Configuration">
<Profiles>
<DefaultProfile>
<Shell Shell="%SystemRoot%\explorer.exe" />
</DefaultProfile>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F79}" Name="Weather">
<Shell Shell="Microsoft.BingWeather_8wekyb3d8bbwe!App" V2:AppType="UWP">
<DefaultAction Action="RestartShell" />
</Shell>
</Profile>
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" Name="Edge">
<Shell Shell="%ProgramFiles(x86)%\Microsoft\Edge\Application\msedge.exe --kiosk https://www.contoso.com --edge-kiosk-type=fullscreen --kiosk-idle-timeout-minutes=2" V2:AppType="Desktop" V2:AllAppsFullScreen="true">
<ReturnCodeActions>
<ReturnCodeAction ReturnCode="0" Action="RestartShell" />
<ReturnCodeAction ReturnCode="-1" Action="RestartDevice" />
<ReturnCodeAction ReturnCode="255" Action="ShutdownDevice" />
</ReturnCodeActions>
<DefaultAction Action="RestartShell" />
</Shell>
</Profile>
</Profiles>
<Configs>
<Config>
<AutoLogonAccount />
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" />
</Config>
<Config>
<Account Name="azuread\kiosk1@contoso.onmicrosoft.com" />
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F79}" />
</Config>
<Config>
<Account Name="azuread\kiosk2@contoso.onmicrosoft.com" />
<Profile Id="{EDB3036B-780D-487D-A375-69369D8A8F78}" />
</Config>
</Configs>
</ShellLauncherConfiguration>