在工厂 OS 中使用诊断 Win32 应用
使用工厂 OS win32_manufacturing 和 win32_development 产品配置,可以在运行制造、预配和硬件验证流程期间,在容器中运行现有的 Win32 制造和诊断应用。 这些工厂 OS 产品配置使用 Hyper-V 来提供容器支持,并使用 RDP 在主机与来宾操作系统之间进行通信。
为包含 win32 支持的工厂 OS 映像创建工作区
若要开始创建包含 win32 支持的工厂 OS 映像,必须创建一个新工作区:
以管理员身份打开 Windows 系统工具包环境。
运行
PrepWSKWorkspace
,并指定FactoryOS
产品以及win32_manufacturing
或win32_development
产品配置:PrepWSKWorkspace C:\FactoryOSWin32Manufacturing -Product FactoryOS -ProductConfiguration win32_manufacturing
新工作区中的 OEMInput.xml 包含用于在映像中包含容器的功能。
自定义映像。 按照 [创建工厂 OS 映像](build-a-Factory OS-image.md#5-add-drivers) 中从步骤 5 开始的说明完成映像自定义。 参阅下面的将资料添加到容器,了解如何使用测试内容文件夹向容器添加资料。
与工厂 OS 中的容器交互
可以通过 shell 启动和控制台启动来控制工厂 OS 容器并与之交互。
Shell 启动
启动进入工厂 OS shell 后,可使用以下方式来与容器交互:
- 使用 Factory Orchestrator 任务列表,包括特殊的 Factory Orchestrator XML 文件
- 在设备上使用 Factory Orchestrator 应用或 API 远程或本地交互
- 通过远程桌面应用在本地交互,这会在容器中启动命令提示符
控制台启动
在控制台启动模式下启动进入工厂 OS 后,可使用以下方式来与容器交互:
- 使用 Factory Orchestrator 任务列表,包括特殊的 Factory Orchestrator XMl 文件
- 在设备上使用 Factory Orchestrator API 远程或本地交互
- 使用 Factory Orchestrator 应用远程交互
将资料添加到容器
使用此产品配置生成工厂 OS 映像时,可以在映像生成和运行时期间部署和运行诊断 Win32 应用:
- 在创建映像期间添加容器应用:在测试内容文件夹中包含一个名为
Container
的文件夹:Container
文件夹中的内容将在工厂 OS 和位于C:\TestContent\Container
的容器中可用- 在重启后,只会保留容器中
Container
文件夹的内容。 重启设备时,在容器中所做的所有其他文件更改和注册表更改都将被删除
- 在运行时添加应用:如果你正在运行一台设备并需要将某个应用添加到容器,可以:
- 使用 Factory Orchestrator 应用或 API 在本地或远程将文件复制到容器
- 使用 TShell 的
put-device
命令将文件复制到C:\TestContent\Container
文件夹 - 使用 sftp 将文件复制到
C:\TestContent\Container
文件夹
运行 GUI win32 应用
如果你有一个需要 GUI 的 win32 应用,请使用工厂 OS 中包含的远程桌面 UWP 应用。 以下说明假设你有一台正在运行的工厂 OS 设备,其中包含一个加载了 GUI 应用的容器:
- 在 Factory Orchestrator 中,转到“命令提示符”选项卡。
- 选中“在容器中运行”。
- 单击出现的“显示容器 UI”按钮。
- 现在你已连接到设备上的容器,应会在该容器的左下角看到最小化的命令提示符。 可以最大化此命令提示符并使用它来启动应用。
返回到工厂 OS
可通过以下方式返回到工厂 OS:
- 单击位于远程桌面应用窗口的中上方位置的“...”
- 持续按 Alt + Tab,直到看到 Factory Orchestrator 或你要切换到的其他应用。
如果不小心关闭了命令提示符窗口
返回到工厂 OS:
- 单击位于远程桌面应用窗口的中上方位置的“...”
- 持续按 Alt+Tab,直到看到 Factory Orchestrator
在 Factory Orchestrator 中,转到“命令提示符”选项卡
选中“在容器中运行”
在“命令”文本框中运行以下命令:
RunAsRdUser "c:\windows\system32\cmd.exe` `/C start cmd.exe`
单击“运行”图标
单击“显示容器 UI”按钮,命令提示符现在将再次可见
在容器中运行 win32 应用作为 Factory Orchestrator 任务列表的一部分
在 Factory Orchestrator 中创建任务时,可以通过选中“在容器中运行?”复选框,将该任务配置为在容器中运行:
为此,还可以创建 FactoryOrchestratorXML 文件并将 RunInContainer="true" 属性添加到要在容器中运行的任务。
- 运行任务列表时,Factory Orchestrator 会自动检测容器中运行的任务是否需要 GUI。
- 如果该任务需要 GUI,则会自动与容器建立远程桌面连接。 建立连接后,该任务将自动启动。 当程序关闭时,远程桌面连接将终止,任务列表中的下一个任务将自动启动。
支持范围
应用类别
并非所有应用类别都在容器支持范围内。下面是工厂 OS 容器中应用兼容性的支持范围内和支持范围外的类别的宽泛列表:
- 范围内:
- 未打包的 Win32 控制台应用
- UI 受限的未打包 Win32 应用
- 打包的 Win32 控制台应用
- UI 受限的打包 Win32 应用
- 超出范围:
- 需要高规格硬件的应用类别,例如专业视频编辑
- 需要在主机与来宾操作系统之间支持 COM(组件对象模型)的应用
不支持的方案
某些方案不受支持:
区域 | 方案 |
---|---|
媒体传输协议 (MTP) |
|
USB 打印 | 打印机支持 |
虚拟化 | 安装自身的虚拟机监控程序的应用 |
安装自身的驱动程序的应用 | 由于需要跨容器边界交互,安装并启动驱动程序的 Win32 应用可能会出现意外行为 |
屏幕捕获 | 尝试创建主机操作系统屏幕截图的应用 |
需要 shell 集成的应用 | 需要任务栏交互或其他 shell 交互的应用 |