

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 应用程序块
<a name="app-blocks"></a>

应用程序块代表一个虚拟硬盘（VHD），它存储在您账户的 Amazon S3 存储桶中，其中包含启动用户将使用的应用程序所需的应用程序文件和二进制文件。应用程序块还包括通知操作系统如何处理 VHD 文件的设置脚本。

应用程序块支持两种不同类型的打包：
+ 自定义 - 选择此选项可手动创建应用程序包（VHD）。有关更多信息，请参阅 [自定义应用程序块](custom-app-blocks.md)。
+ WorkSpaces 应用程序-选择此推荐选项，使用应用区块生成器创建您的应用程序包。有关更多信息，请参阅 [WorkSpaces 应用程序应用程序块](appstream-app-blocks.md)。

**Topics**
+ [自定义应用程序块](custom-app-blocks.md)
+ [WorkSpaces 应用程序应用程序块](appstream-app-blocks.md)
+ [不受支持的应用程序](app-blocks-unsupported.md)

# 自定义应用程序块
<a name="custom-app-blocks"></a>

弹性实例集流实例使用安装在虚拟硬盘（VHD）文件上的应用程序，这些文件存储在您账户的 Amazon S3 存储桶中。采用自定义打包的应用程序块可让您灵活地创建自己的 VHD 文件，并将其上传到您账户中的 Amazon S3 存储桶。

**Topics**
+ [创建 VHD](create-vhd.md)
+ [在 Amazon WorkSpaces 应用程序中为 VHD 创建安装脚本](create-setup-script.md)
+ [创建自定义应用程序块](create-app-block.md)
+ [更新应用程序块、VHD 和设置脚本](update-app-block.md)

# 创建 VHD
<a name="create-vhd"></a>

VHD 是一个单独的文件，挂载到操作系统后会被当作硬盘处理。VHD 可挂载为驱动器号和/或挂载到文件夹路径。挂载 VHD 后，您可以像对待任何其他硬盘一样对待它，包括安装应用程序或向其中复制用户需要的文件。

要创建应用程序块，您需要创建 VHD，在其中安装应用程序，然后将其分离。分离后，您可以在另一台 PC、EC2 实例或 WorkSpaces 应用程序映像生成器上测试您的 VHD，以验证应用程序是否按预期运行。完成后，将其上传到您账户中的 Amazon S3 存储桶并创建应用程序块。

**注意**  
本页介绍如何使用 VHD 交付应用程序；但是， WorkSpaces 应用程序流式传输实例将从 Amazon S3 下载任何对象。您存储在 Amazon S3 中的对象也可以是 zip 文件、应用程序安装程序或应用程序可执行文件本身。您可以在用户启动其应用程序之前，使用设置脚本在流实例上进行正确配置。  
在安装脚本 WorkSpaces 运行之前，Applications 流媒体实例最多会等待 120 秒让 VHD 完成下载。如果 VHD 未在这段时间内完成下载，则下载将停止，设置脚本也不会运行。  
我们建议 VHD 的最大大小为 1.5GB。您或许可以通过压缩来减小 VHD 的大小。挂载文件之前，您必须使用设置脚本对其进行解压缩，因为在挂载和启动应用程序之前，需要从 Amazon S3 完全下载该文件。应用程序启动和直播会话开始所需的时间越 VHDs大。

**为 Microsoft Windows 创建 VHD**

1. 从 Windows PC 或 Windows Amazon Elastic Compute Cloud（Amazon EC2）实例中，以管理权限打开命令提示符。

1. 输入以下命令启动 Microsoft **diskpart** 实用工具：

   **diskpart**

1. 输入以下命令创建未格式化且未初始化的 VHD 文件，其中 *<maximum file size>* VHD 文件的大小（以 MB 为单位）：

   **create vdisk file=C:\$1path\$1to\$1new\$1file.vhdx maximum=*<maximum file size>* type=expandable **

1. 输入以下命令选择新创建的 VHD：

   **select vdisk file=C:\$1path\$1to\$1new\$1file.vhdx**

1. 输入以下命令连接新创建的 VHD：

   **attach vdisk**

1. 输入以下命令初始化新创建的 VHD：

   **convert mbr**

1. 输入以下命令创建跨整个 VHD 的主分区：

   **create partition primary**

1. 输入以下命令格式化新创建的分区：

   **format fs=ntfs quick**

1. 您可以将新创建的 VHD 挂载到未使用的驱动器号和/或根卷上的文件夹路径。

   要挂载驱动器号，请输入：**assign letter=*<unused drive letter>***

   要挂载文件夹，请输入：**assign mount=*C:\$1path\$1to\$1empty\$1folder\$1to\$1mount\$1***
**注意**  
要挂载到文件夹路径，该文件夹必须已经存在且必须为空。

1. 现在，您可以使用在步骤 9 中选择的驱动器号或文件夹挂载路径将应用程序安装到 VHD。

将应用程序安装到 VHD 后，您需要先将其分离，然后才能安全地将其上传到 Amazon S3 存储桶。

**分离适用于 Microsoft Windows 的 VHD**

1. 输入以下命令启动 Microsoft diskpart 实用工具：

   **diskpart**

1. 输入以下命令选择 VHD：

   **select vdisk file=*C:\$1path\$1to\$1new\$1file.vhdx***

1. 输入以下命令分离 VHD：

   **detach vdisk**

1. VHD 现已分离，可以在另一台 Windows PC、Amazon EC2 实例或 WorkSpaces 应用程序映像生成器上进行测试。

**创建适用于 Linux 的 VHD**

1. 打开终端：
   + 对于 Amazon Linux 2：使用 EC2 实例、 WorkSpaces 应用程序映像生成器或 WorkSpaces 由亚马逊 Linux 提供支持 2
   + 对于 Ubuntu Pro 24.04 LTS：使用 EC2 实例或 WorkSpaces 由 Ubuntu Pro 提供支持

1. 创建未格式化且未初始化的 VHD 文件：

   **dd if=/dev/zero of=*<name of file>* bs=*<size of VHD>* count=1**

1. 输入以下命令将文件系统添加到创建的 VHD 中：

   **sudo mkfs -t ext4 *<name of file>***
**注意**  
您可能会看到一条消息，指出该文件不是块特殊设备。无论如何，您都可以选择继续。

1. 输入以下命令创建一个空文件夹以用作挂载点：

   **sudo mkdir */path/to/mount/point***

1. 运行以下命令将新创建的 VHD 挂载到文件系统路径：

   **sudo mount -t auto -o loop *<name of file>* */path/to/mount/point***

1. 现在，您可以使用在步骤 4 中选择的文件夹挂载路径将应用程序安装到 VHD。
**注意**  
在 VHD 上创建的文件和文件夹的默认权限会阻止非管理员用户启动应用程序或读取文件。验证权限并在必要时进行更改。

将应用程序安装到 VHD 后，您需要先将其分离，然后才能安全地将其上传到 Amazon S3 存储桶。

**分离适用于 Linux 的 VHD**

1. 打开一个终端会话，然后输入以下命令：

   **sudo umount */path/to/mount/point***

1. VHD 现已拆卸，可以在另一个亚马逊 Linux 2/Ubuntu Pro 24.04 LTS Amazon EC2 实例、亚马逊 Linux WorkSpaces 2 应用程序映像生成器或亚马逊 Linux 2/Ubuntu Personal 上进行测试。 WorkSpaces 

# 在 Amazon WorkSpaces 应用程序中为 VHD 创建安装脚本
<a name="create-setup-script"></a>

WorkSpaces 应用程序使用您提供的安装脚本在应用程序启动之前装载 VHD。您还可以使用设置脚本来完成使应用程序正常运行所需的其他任务。例如，您可以通过安装脚本配置注册表项 DLLs、注册、管理先决条件或修改用户配置文件。 WorkSpaces 应用程序提供了可用于装载 VHD 的脚本示例。您将需要修改这些脚本以满足 VHD 和应用程序的需求。

**注意**  
使用应用程序打包的应用程序块不需要安装脚本。 WorkSpaces 但是，您可以提供可选的设置后脚本来自定义应用程序安装。

使用以下链接下载示例脚本：
+ [Ubuntu Pro 24.04 LTS 和亚马逊 Linux 2 bash 脚本](samples/Linux-mount-vhd-script2.zip)
+ [Microsoft Windows Powershell 脚本](samples/Windows-mount-vhd-script3.zip)
**注意**  
WorkSpaces 应用程序和 Microsoft Windows 操作系统会保留驱动器号 A 到 E。不要在这些驱动器号上安装 VHDs 或网络共享。

WorkSpaces 应用程序将安装脚本和 VHD 下载到队列流媒体实例上的目录中，然后运行安装脚本。设置脚本在具有完全管理员权限的操作系统上运行。安装脚本在微软 Windows 的`SYSTEM`上下文中运行，在亚马逊 Linux 2 或 Ubuntu Pro 24.04 LTS 上以`root`用户身份运行。

VHD 的文件系统位置和设置脚本：
+ Ubuntu Pro 24.04 LTS：

  `/opt/appstream/AppBlocks/appblock-name/`  
**`appblock-name` **  
VHD 和设置脚本对应的应用程序块的名称。
+ Amazon Linux 2：

  `/opt/appstream/AppBlocks/appblock-name/`  
**`appblock-name` **  
VHD 和设置脚本对应的应用程序块的名称。
+ Microsoft Windows：

  `C:\AppStream\AppBlocks\appblock-name\`  
**`appblock-name` **  
VHD 和设置脚本对应的应用程序块的名称。

WorkSpaces 应用程序保持文件名与对象上的文件名相同。例如，如果您的应用程序块名为 `MyApps`，VHD 名为 `apps.vhd`，设置脚本名为 `mount-apps.ps1`，那么 Windows 流实例的完整路径为：
+ VHD

  `C:\AppStream\AppBlocks\MyApps\apps.vhd`
+ 设置脚本

  `C:\AppStream\AppBlocks\MyApps\mount-apps.ps1`

WorkSpaces 当您的设置脚本在队列流实例上运行时，应用程序会捕获标准错误和标准输出，并将输出上传到您账户中的 Amazon S3 存储桶。您可以使用这些日志来识别和解决设置脚本中可能遇到的问题。存储桶以特定格式命名，如下所述：

```
appstream-logs-region-code-account-id-without-hyphens-random-identifier
```

**`region-code` **  
这是在其中创建弹性队列的 AWS 区域代码。

**`account-id-without-hyphens` **  
您的 AWS 账户标识符。随机 ID 确保与该区域中的其他存储桶不发生冲突。存储桶名称的第一部分 appstream-logs 不随账户或区域而改变。

例如，如果您在美国西部（俄勒冈）区域 (us-west-2) 创建了一个弹性队列，账号为 123456789012 WorkSpaces ，则应用程序将在该地区的账户中创建一个名称显示的 Amazon S3 存储桶。只有具有足够权限的管理员才能删除此存储桶。

```
appstream-logs-us-west-2-1234567890123-abcdefg
```

存储在您账户的 S3 存储桶中的日志文件所在的文件夹路径使用以下结构：

```
bucket-name/fleet-name/instance-id/appblock-name/
```

**`bucket-name` **  
存储设置脚本日志的 Amazon S3 存储桶的名称。该名称格式如本节中前面所述。

**`Instance-id` **  
设置脚本运行所在的流实例的唯一标识符

**`appblock-name` **  
设置脚本对应的应用程序块的名称。

以下示例文件夹结构适用于从 `test-fleet` 启动的流式传输会话。该会话来自 AWS 账户 ID 为 123456789012，应用程序区块名称为美国西部（俄勒冈）区域（us-west-2）的 testappblock：

`appstream-logs-us-west-2-1234567890123-abcdefg/test-fleet/i-084427ab4a1cff7f5/testappblock/`

此示例文件夹结构包含一个用于标准输出的日志文件和一个用于标准错误的日志文件。

**Topics**
+ [在 Amazon 应用程序中执行 WorkSpaces 应用程序区块设置脚本](script-execution.md)

# 在 Amazon 应用程序中执行 WorkSpaces 应用程序区块设置脚本
<a name="script-execution"></a>

下图指示了设置脚本在这个过程中的运行位置。运行顺序取决于是否在与弹性实例集关联的堆栈上启用了应用程序设置持久性。

**注意**  
WorkSpaces 应用程序使用您的 VPC 详细信息从 Amazon S3 存储桶中下载 VHD 和设置脚本。您的 VPC 必须提供对 Amazon S3 存储桶的访问权限。有关更多信息，请参阅 [将 Amazon S3 VPC 终端节点用于 WorkSpaces 应用程序功能](managing-network-vpce-iam-policy.md)。

应用程序设置持久性已启用：

![\[应用程序设置持久性已启用。\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/images/app-settings-enabled.png)


应用程序设置持久性已禁用：

![\[应用程序设置持久性已禁用。\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/images/app-settings-disabled.png)


# 创建自定义应用程序块
<a name="create-app-block"></a>

创建 VHD 和设置脚本并将其上传到您的 S3 存储桶后，即可使用 WorkSpaces 应用程序控制台创建应用程序块资源。 AWS 账户要了解有关在 Amazon S3 存储桶中存储 VHD 和设置脚本的更多信息，请参阅[将应用程序图标、设置脚本、会话脚本和 VHD 存储在 S3 存储桶中](store-s3-bucket.md)。

**注意**  
您必须具有 IAM 权限才能对 Amazon S3 存储桶中的 VHD 和设置脚本对象执行 `S3:GetObject` 操作，以创建应用程序块资源。

**创建应用程序块资源**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序**、**应用程序块**和**创建应用程序块**。

1. 对于应用程序块打包，请选择**自定义**。

1. 对于**应用程序块详细信息**，请键入应用程序块的唯一名称标识符。或者，您也可以指定以下内容：
   + **显示名称** - 应用程序块的易记名称。
   + **描述** - 应用程序块的描述。

1. 对于**脚本设置**下的 **S3 中的虚拟硬盘对象**，要么输入代表 VHD 对象的 S3 URI，要么选择**浏览 S3** 导航到您的 S3 存储桶并找到 VHD 对象。

1. 对于**脚本设置**下的 **S3 中的设置脚本对象**，要么输入表示设置脚本对象的 S3 URI，要么选择**浏览 S3** 导航到您的 S3 存储桶并找到设置脚本对象。

1. 对于**脚本设置**下的**设置脚本可执行文件**，请输入设置脚本所需的可执行文件。
**注意**  
如果您的设置脚本可以直接执行，请输入设置脚本的文件名。如果您的安装脚本依赖于其他可执行文件（例如 Microsoft PowerShell）来执行，请输入该可执行文件的路径。  
 PowerShell 在微软 Windows 上通往微软的路径：  
`C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`

1. 或者，对于**脚本设置**下的**设置脚本可执行文件参数**，请输入需要提供给设置脚本可执行文件用于执行设置脚本的参数。
**注意**  
如果您使用的是 Microsoft PowerShell 脚本，则必须指定带有安装脚本名称的 “-File” 参数作为可执行参数。此外，请确保执行策略允许您的脚本运行。[要了解更多信息，请参阅[关于\$1execution\$1Polic](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2) ies和什么是？ PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.2) 。

1. 对于**脚本设置**下的**执行持续时间(秒)**，请输入设置脚本的超时持续时间。
**注意**  
以秒为单位的执行持续时间是 WorkSpaces 应用程序在继续运行安装脚本之前等待多长时间。如果您的设置脚本未在这段时间内完成，则系统会向您的用户显示一条错误消息，并且应用程序将尝试启动。设置脚本将在执行持续时间结束后终止。

1. （可选）对于**标签**，为应用程序块资源创建标签

1. 检查您输入的信息，然后选择**创建**。

1. 如果您的应用程序块已成功创建，则控制台顶部会显示一条成功消息。如果发生错误，则会显示一条描述性错误消息，您将需要再次尝试创建应用程序块。

# 更新应用程序块、VHD 和设置脚本
<a name="update-app-block"></a>

应用程序块资源是不可变的，一旦创建，就不允许对其进行更改。如果需要对 VHD 或设置脚本进行向后兼容的更新，建议将新版本文件上传到 Amazon S3 存储桶，覆盖当前版本文件。新的弹性实例集流式传输会话将下载并使用这些对象的最新版本。

如果需要对 VHD 或设置脚本进行向后不兼容的更新，建议将它们作为新对象上传到 Amazon S3 存储桶，并创建新的应用程序块和应用程序资源。然后，您就可以在更改时段或其他中断期间管理向用户的部署。

# WorkSpaces 应用程序应用程序块
<a name="appstream-app-blocks"></a>

弹性实例集流实例使用安装在虚拟硬盘（VHD）文件上的应用程序，这些文件存储在您账户的 Amazon S3 存储桶中。对于采用自定义打包的应用程序块，您可以灵活地创建自己的 VHD 文件并将其上传到您账户中的 Amazon S3 存储桶。或者，对于带有应用程序打包的 WorkSpaces 应用程序块，您可以利用应用程序块生成器，它可以处理应用程序的打包，创建 VHD 文件并将其上传到您的 Amazon S3 存储桶。

通过使用 Applications 打包的应用程序块，您不仅无需手动构建 VHD 文件，而且还无需设置脚本。 WorkSpaces 它扩展了应用程序与弹性队列的兼容性，并减少了创建应用程序块所需的手动管理步骤。 WorkSpaces 应用程序无需任何设置脚本即可使用 WorkSpaces 应用程序打包自动处理应用程序块的设置。但是，您仍然可以提供可选的设置后脚本来根据需要自定义安装。

**Topics**
+ [概述](appstream-app-blocks-overview.md)
+ [不受支持的应用程序](appstream-app-blocks-unsupported.md)
+ [创建 WorkSpaces 应用程序应用程序块](appstream-app-blocks-create.md)
+ [激活应用程序块](appstream-app-blocks-activate.md)
+ [使用现有的应用程序包创建应用程序块](appstream-app-blocks-create-VHD.md)
+ [测试应用程序块](appstream-app-blocks-test.md)
+ [在 Amazon 应用程序中关联 WorkSpaces 应用程序块](appstream-app-blocks-associate.md)
+ [在 Amaz WorkSpaces on 应用程序中取消关联应用程序块](appstream-app-blocks-disassociate.md)

# 概述
<a name="appstream-app-blocks-overview"></a>

要使用应用程序打包创建 WorkSpaces 应用块，您需要使用应用区块生成器启动直播会话。启动会话后，您可以下载应用程序安装程序并启用录制选项。从那时起，Applications 将使用 WorkSpaces 应用程序重定向技术记录在应用程序块生成器上所做的文件系统和注册表更改。

应用程序重定向使用 Windows 筛选器驱动程序框架来拦截和重定向文件系统和注册表更改。此重定向与正在安装的应用程序无缝连接。应用程序将继续与 C: 驱动器上的原始文件位置进行交互。例如，如果在设置了应用程序重定向的计算机上运行 TestApplication “” 的安装程序，则该安装程序将默认安装到 C:\$1Program Files\$1 TestApplication。但在后台，所有文件和文件夹都将重定向到已挂载的虚拟硬盘（VHD），并将创建一个从原始文件位置到实际文件位置的链接。在计算机上，似乎仍 TestApplication 会安装在 C:\$1Program Files\$1 TestApplication。

记录所有安装更改后，VHD 文件将上传到您账户中的 Amazon S3 存储桶。

当用户使用 Elastic 队列请求会话时， WorkSpaces 应用程序会下载 VHD 文件，设置应用程序，运行安装后的设置脚本（可选），然后开始应用程序流式传输。

**注意**  
应用程序重定向技术不记录 %USERPROFILE% 下的任何文件系统更改，但在 %APPDATA% 和 %LOCALAPPDATA% 目录下创建的新目录除外。  
应用程序重定向技术不记录当前用户 HKEY\$1CURRENT\$1USER（HKCU）下的任何注册表更改。

# 不受支持的应用程序
<a name="appstream-app-blocks-unsupported"></a>

在以下情况下，应用程序在安装或运行时可能会失败：
+ **在安装过程中进行基于位置检查的应用程序**：如果应用程序的安装过程验证了已安装文件的实际位置，则可能会导致失败。由于 WorkSpaces 应用程序会将文件重定向到应用程序块 VHD，因此只有指向实际文件的链接才会保留在原始位置。

如果您不确定您的应用程序是否属于这些类别中的任何一个，则可以使用 WorkSpaces 应用程序打包来创建应用程序块。此过程涉及在应用程序块生成器实例上安装您的应用程序。如果无法在应用程序块生成器实例上安装应用程序，可以采取以下措施：
+ 检查日志。您的应用区块生成器实例的错误日志文件可在 C:\$1\$1 AppStreamAppBlocks\$1 ErrorLog 中找到。此日志记录所有安装失败，包括 RegKeys/File 操作处理。如果您在 ErrorLog 中看到以下任何日志，则表明应用程序块生成器当前不支持对您的 WorkSpaces 应用程序进行打包：
  + “无法创建符号链接”
  + “服务不支持文件重命名”

  如果没有 errorLog 文件，或者此文件为空，请查看应用程序安装日志以确定失败的原因。
+ 报告问题。选择**报告问题**按钮，该按钮位于应用程序块生成器的应用程序生成器助手中。选择此选项将从您的 WorkSpaces 应用程序区块生成器实例中收集所有应用程序日志，并将其提交给 WorkSpaces 应用程序团队寻求帮助。
+ 使用自定义打包创建应用程序块：如果您无法使用应用程序块生成器打包应用程序，可以尝试使用自定义打包方法来创建应用程序块。有关更多信息，请参阅 [自定义应用程序块](custom-app-blocks.md)。
+ 如果您需要更多帮助，请联系 AWS Support。有关更多信息，请参阅 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。

在为 WorkSpaces 应用程序使用应用程序打包时，请务必考虑这些潜在的局限性，并相应地进行规划。

# 创建 WorkSpaces 应用程序应用程序块
<a name="appstream-app-blocks-create"></a>

按照以下步骤创建应用程序打包类型的 WorkSpaces 应用块。

## 步骤 1：配置应用程序块
<a name="appstream-app-blocks-create-step1"></a>

**配置应用程序块**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**和**创建应用程序块**。

1. 对于应用程序块打包，请选择**WorkSpaces 应用程序**。

1. 对于**应用程序块详细信息**，请键入应用程序块的唯一名称标识符。或者，您也可以指定以下内容：
   + **名称** - 应用程序块的唯一名称。
   + **显示名称**（可选）- 应用程序块的易记名称。
   + **描述**（可选）- 对应用程序块的描述。

1. （可选）带有 WorkSpaces 应用程序打包的应用程序块不需要安装脚本。您可以选择为安装后步骤提供以下**高级选项**：
   + 对于 **S3 中的设置后脚本对象**，要么输入表示设置后脚本对象的 Amazon S3 URI，要么选择**浏览 S3** 导航到您的 Amazon S3 存储桶并找到设置脚本对象。
   + 对于**设置后脚本可执行文件**，请输入设置后脚本所需的可执行文件。
**注意**  
如果您的设置脚本可以直接执行，请输入设置脚本的文件名。如果您的安装脚本依赖于其他可执行文件（例如 Microsoft PowerShell）来执行，请输入该可执行文件的路径。  
 PowerShell 在微软 Windows 上通往微软的路径：  
`C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`  
或者，对于**脚本设置**下的**设置脚本可执行文件参数**，请输入需要提供给设置脚本可执行文件用于执行设置脚本的参数。
**注意**  
如果您使用的是 Microsoft PowerShell 脚本，则必须指定带有安装脚本名称的 “-File” 参数作为可执行参数。此外，请确保执行策略允许您的脚本运行。[要了解更多信息，请参阅[关于\$1execution\$1Polic](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2) ies和什么是？ PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.2) 。  
对于**脚本设置**下的**执行持续时间(秒)**，请输入设置脚本的超时持续时间。
**注意**  
以秒为单位的执行持续时间是 WorkSpaces 应用程序在继续运行安装脚本之前等待多长时间。如果您的设置脚本未在这段时间内完成，则系统会向您的用户显示一条错误消息，并且应用程序将尝试启动。设置脚本将在执行持续时间结束后终止。

1. 在**导入设置**下，选择**创建新的应用程序块应用程序文件**。在**导入设置**下的 **S3 位置**中，输入代表存储桶的 Amazon S3 URI，或者选择**浏览 S3** 导航到您的 Amazon S3 存储桶并选择相应的存储桶。Amazon S3 存储桶列表是全局列表，列出了所有区域的所有存储桶。请确保在要创建应用程序块的区域中选择存储桶。有关设置存储桶权限的更多信息，请参阅[将应用程序图标、设置脚本、会话脚本和 VHD 存储在 S3 存储桶中](store-s3-bucket.md)。

1. 选择应用程序块生成器。只有未与其他应用程序块关联的应用程序块生成器才可用。如果列表为空，则要么创建一个新的应用程序块生成器，要么取消关联现有的应用程序块生成器以供使用。应用程序块生成器是一种可重复使用的资源，可用于创建应用程序包。
**注意**  
如果未在此处选择应用程序块生成器，您仍然可以在**非活动**状态下创建应用程序块，并稍后激活该应用程序块。有关更多信息，请参阅 [激活应用程序块](appstream-app-blocks-activate.md)。

1. （可选）对于**标签**，为应用程序块资源创建标签。

1. 选择**下一步**。

1. 检查您输入的信息，然后选择以下选项之一：
   + 如果未在步骤 7 中选择应用程序块生成器，请选择**创建应用程序块**。
   +  如果在步骤 7 中选择了应用程序块生成器，请选择**启动应用程序块生成器**。然后继续执行步骤 2，使用应用程序块生成器流式传输会话创建您的应用程序包。

此时，您的应用程序块资源已创建，但它处于**非活动**状态，无法用于弹性实例集。

## 步骤 2：创建应用程序包
<a name="appstream-app-blocks-create-step2"></a>

使用应用程序块生成器流实例来打包您的应用程序并激活应用程序块。使用应用程序块生成器创建的应用程序块将具有 WorkSpaces 应用程序打包，应用程序包将上传到您的 Amazon S3 存储桶中 AWS 账户。

**创建应用程序包**

1. 流式传输会话开启后，应用程序生成器助手会自动启动。如果无法启动，请使用桌面图标手动启动。

1. 初始屏幕提供了有关应用程序打包过程的说明。

1. 使用以下选项之一，将应用程序安装程序引入应用程序块生成器流式传输会话：
   + 从 Web 下载应用程序安装程序。
   + 使用您的流式传输会话文件接口。
   + 使用机器角色从其他 AWS 服务下载应用程序安装程序。

1. 安装完所有必需的应用程序安装程序后，请停止在实例上运行的所有其他应用程序，然后选择**开始录制**。应用程序块生成器开始录制系统更改，并且屏幕上显示**正在录制**。

1. 开始逐个安装您的应用程序。

1. 完成应用程序安装后，请选择**停止录制**，系统将停止录制更改。如果要对应用程序包进行更多更改，例如添加更多应用程序或删除已安装的应用程序，请选择**开始录制**，并确保系统处于**正在录制**模式。
**注意**  
如果您的应用程序安装失败，请选择**报告问题**以从实例收集与 WorkSpaces 应用程序相关的日志，并将问题报告给 WorkSpaces 应用程序团队。完成后，结束应用程序块生成器流式传输会话。您可以尝试使用新的应用程序块生成器实例重新启动创建应用程序块的过程。如果问题仍然存在，请尝试使用自定义打包创建应用程序块。

1. 安装完所有应用程序后，请选择**停止录制**。您可以使用“开始”菜单或使用“文件资源管理器”浏览应用程序来测试应用程序。

1. 选择**下一步**以查看应用程序块详细信息。
**注意**  
弹性实例集的应用程序包（VHD）文件的建议大小应小于 1.5GB。如果 VHD 文件大小超过 1.5GB，请尝试减少一个应用程序块中打包的应用程序数量。  
如果卸载应用程序，应用程序包（VHD）文件大小不会缩小。使用新的应用程序块流式传输会话重新启动应用程序打包过程，并减少安装的应用程序数量。

1. 选择**完成应用程序块创建并断开连接**以创建应用程序包并将其上传到 Amazon S3 存储桶。如果成功，流式传输会话将自动断开连接，并且应用程序块将处于**活动**状态。
**注意**  
如果您的应用程序安装失败，请选择**报告问题**以从实例收集与 WorkSpaces 应用程序相关的日志，并将问题报告给 WorkSpaces 应用程序团队。完成后，结束应用程序块生成器流式传输会话。您可以尝试使用新的应用程序块生成器实例重新启动创建应用程序块的过程。如果问题仍然存在，请尝试使用自定义打包创建应用程序块。

# 激活应用程序块
<a name="appstream-app-blocks-activate"></a>

如果创建了带有 WorkSpaces 应用程序打包的应用程序块，但应用程序包 (VHD) 未附加到该块，则该应用程序块将处于非活动状态，并且无法用于将应用程序与 Elastic 队列关联起来。要激活应用程序块，必须将应用程序包（VHD）与该应用程序块关联。

**创建应用程序包**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**。

1. 选择要激活的**非活动**应用程序块，然后从**操作**菜单中选择**激活**。

1. 选择应用程序块生成器，然后选择**启动应用程序块生成器**。
   + 如果列表为空，则说明您要么没有应用程序块生成器，要么您的所有应用程序块生成器都与其他应用程序块关联。此时要么创建一个新的应用程序块生成器，要么取消关联某个现有的应用程序块生成器并对其进行测试。
   + 如果该应用程序块生成器已与某个应用程序块关联，则可以继续使用该生成器来激活应用程序块。
   + 如果所选的应用程序块生成器未与某个应用程序块关联，则它将与您选择的应用程序块关联，并将启动流式传输会话。会话结束后，该应用程序块生成器仍与此应用程序块关联。

1. 应用程序块流式传输会话启动后，请按照[步骤 2：创建应用程序包](appstream-app-blocks-create.md#appstream-app-blocks-create-step2)中的步骤创建您的应用程序包（VHD）并激活应用程序块。

# 使用现有的应用程序包创建应用程序块
<a name="appstream-app-blocks-create-VHD"></a>

您可以将现有的应用程序包 (VHD) 与 WorkSpaces 应用程序打包一起使用来创建 WorkSpaces 应用程序块。为此，请将应用程序包（VHD）文件从源 Amazon S3 存储桶复制到另一个目标 Amazon S3 存储桶。目标存储桶可以位于不同的区域。

**使用现有的应用程序包创建应用程序块**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**和**创建应用程序块**。

1. 对于应用程序块打包，请选择**WorkSpaces 应用程序**。

1. 对于**应用程序块详细信息**，请键入应用程序块的唯一名称标识符。或者，您也可以指定以下内容：
   + **名称** - 应用程序块的唯一名称。
   + **显示名称**（可选）- 应用程序块的易记名称。
   + **描述**（可选）- 对应用程序块的描述。

1. （可选）带有 WorkSpaces 应用程序打包的应用程序块不需要安装脚本。您可以选择为安装后步骤提供以下**高级选项**：
   + 对于 **S3 中的设置后脚本对象**，要么输入表示设置后脚本对象的 Amazon S3 URI，要么选择**浏览 S3** 导航到您的 Amazon S3 存储桶并找到设置脚本对象。
   + 对于**设置后脚本可执行文件**，请输入设置后脚本所需的可执行文件。
**注意**  
如果您的设置后脚本可以直接执行，请输入设置后脚本的文件名。如果您的安装后脚本依赖于其他可执行文件（例如 Microsoft PowerShell）来执行，请输入该可执行文件的路径。  
 PowerShell 在微软 Windows 上通往微软的路径：  
`C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`  
或者，对于**设置后脚本可执行文件参数**，请输入需要提供给设置脚本可执行文件用于执行设置脚本的参数。
**注意**  
如果您使用的是 Microsoft PowerShell 脚本，则必须指定带有安装后脚本名称的 “-File” 参数作为可执行参数。此外，请确保执行策略允许您的脚本运行。[要了解更多信息，请参阅[关于\$1execution\$1Polic](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2) ies和什么是？ PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.2) 。  
对于**脚本设置**下的**执行持续时间(秒)**，请输入设置脚本的超时持续时间。
**注意**  
以秒为单位的执行持续时间是 WorkSpaces 应用程序等待安装后脚本运行的时间，然后再继续。如果您的设置后脚本未在这段时间内完成，则系统会向您的用户显示一条错误消息，并且应用程序将尝试启动。设置脚本将在执行持续时间结束后终止。

1. 在**导入设置**下选择**使用现有的应用程序块应用程序文件**。对于 **S3 位置**，您可以在代表应用程序包（VHD）的 Amazon S3 存储桶中输入对象的 Amazon S3 URI；或者，选择**浏览 S3** 导航到您的 Amazon S3 存储桶，然后在 Amazon S3 存储桶中选择该对象。Amazon S3 存储桶列表是全局列表，列出了所有区域的所有存储桶。请确保在要创建应用程序块的区域中选择存储桶。

1. 选择**下一步**。

1. 检查您输入的信息，然后选择**创建应用程序块**。

此时，您的应用程序块资源已创建并处于**活动**状态。

# 测试应用程序块
<a name="appstream-app-blocks-test"></a>

您可以使用应用程序块生成器来测试应用程序块并验证应用程序功能。对于此选项，您无需启动弹性实例集。您还可以创建多个具有不同实例类型或大小的应用程序块生成器，并使用不同的计算选项测试应用程序的性能。

**注意**  
只有带有应用程序打包的应用程序块才支持测试 WorkSpaces 应用程序块选项。

**测试应用程序块**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**。

1. 选择要测试的应用程序块，然后从**操作**菜单中选择**测试**。

1. 选择应用程序块生成器，然后选择**启动并测试应用程序块**。
   + 如果列表为空，则说明您要么没有应用程序块生成器，要么您的所有应用程序块生成器都与其他应用程序块关联。此时要么创建一个新的应用程序块生成器，要么取消关联某个现有的应用程序块生成器并对其进行测试。
   + 如果该应用程序块生成器已与某个应用程序块关联，则可以继续使用该生成器来激活应用程序块。
   + 如果所选的应用程序块生成器未与某个应用程序块关联，则它将与您选择的应用程序块关联，并将启动流式传输会话。会话结束后，该应用程序块生成器仍与此应用程序块关联。

1. 在桌面流式传输模式下，应用程序块生成器会在单独的浏览器窗口中启动。该服务从 Amazon S3 存储桶下载应用程序块，并将其安装在应用程序块生成器实例上。

1. 现在可以对您的应用程序进行流式传输和测试。您可以通过在“文件资源管理器”中浏览或使用“开始”菜单来打开应用程序。

1. 完成测试后，结束流式传输会话。

# 在 Amazon 应用程序中关联 WorkSpaces 应用程序块
<a name="appstream-app-blocks-associate"></a>

要使用应用程序打包创建、测试或激活您的 WorkSpaces 应用块，您需要将其与应用区块生成器相关联。一个应用程序块生成器只能与一个应用程序块关联，反之亦然。

**注意**  
只有带有 WorkSpaces 应用程序打包的应用程序块才支持关联和取消关联应用程序块。

**在 Amazon Applications 中将应用区块与 WorkSpaces 应用区块生成器相关联**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**。

1. 选择应用程序块，然后从**操作**菜单中选择**关联**。

1. 选择应用程序块生成器，然后选择**关联应用程序块生成器**。

   如果列表为空，则说明您要么没有应用程序块生成器，要么您的所有应用程序块生成器都与其他应用程序块关联。此时要么创建一个新的应用程序块生成器，要么取消关联某个现有的应用程序块生成器，然后再关联。

# 在 Amaz WorkSpaces on 应用程序中取消关联应用程序块
<a name="appstream-app-blocks-disassociate"></a>

如果您的所有应用程序块生成器都与其他应用程序块关联，并且您要测试、创建或激活另一个应用程序块，则可以创建一个新的应用程序块生成器，也可以取消现有应用程序块生成器与应用程序块的关联并将其与新的应用程序块一起使用。

**注意**  
只有带有 WorkSpaces 应用程序打包的应用程序块才支持关联和取消关联应用程序块。  
只有当应用程序块生成器处于 **STOPPED** 状态时，才允许取消关联。

**取消应用程序块与应用程序块生成器的关联**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**。

1. 选择应用程序块，然后从**操作**菜单中选择**取消关联**。

1. 选择已关联的应用程序块生成器，然后选择**取消关联应用程序块生成器**。

# 不受支持的应用程序
<a name="app-blocks-unsupported"></a>

在以下情况下，应用程序在安装或运行时可能会失败：
+ **安装后需要重新启动的应用程序**：如果应用程序在安装后需要执行额外的更改或配置，而这些更改或配置需要重新启动，则可能会失败。目前，应用程序块不支持重新启动，这可能会使应用程序无法完成所需的安装后步骤。
+ **依赖于用户特定详细信息的**应用程序：仅打算在应用区块生成器上为当前登录的用户安装的应用程序，或者在安装过程中依赖应用程序块生成器上登录的用户详细信息（例如安全标识符 (SIDs)）的应用程序，可能无法在 Elastic 队列上正常运行。这是由于登录用户在弹性实例集环境中发生了更改。此外，应用程序重定向不会记录 %USERPROFILE% 下的所有目录。但是，您可以选择配置设置后脚本，以便根据环境动态更改应用程序配置。
+ **依赖于计算机特定详细信息的应用程序**：在安装过程中依赖于应用程序块生成器上计算机特定详细信息（如网络适配器 GUID）的应用程序可能会在弹性实例集上遇到问题。这是因为在弹性队列环境中，包括网络适配器 GUIDs在内的机器细节可能会发生变化。要解决这个问题，您可以配置设置后脚本来处理这些计算机特定详细信息的配置。

如果您不确定您的应用程序是否属于这些类别中的任何一个，则可以使用 WorkSpaces 应用程序打包来创建应用程序块。此过程涉及在应用程序块生成器实例上安装您的应用程序。如果无法在应用程序块生成器实例上安装应用程序，可以采取以下措施：
+ 检查日志。您的应用区块生成器实例的错误日志文件可在 C:\$1\$1 AppStreamAppBlocks\$1 ErrorLog 中找到。此日志记录了所有安装失败情况，包括注册表项和文件操作处理。如果您在 ErrorLog 中看到以下任何日志，则表明应用程序块生成器当前不支持对您的 WorkSpaces 应用程序进行打包：
  + “无法创建符号链接”
  + “服务不支持文件重命名”

  如果没有 errorLog 文件，或者此文件为空，请查看应用程序安装日志以确定失败的原因。
+ 报告问题。选择**报告问题**按钮，该按钮位于应用程序块生成器的应用程序生成器助手中。选择此选项将从您的 WorkSpaces 应用程序区块生成器实例中收集所有应用程序日志，并将其提交给 WorkSpaces 应用程序团队。
+ 使用自定义打包创建应用程序块：如果您无法使用应用程序块生成器打包应用程序，可以尝试使用自定义打包方法来创建应用程序块。有关更多信息，请参阅 [自定义应用程序块](custom-app-blocks.md)。
+ 如果您需要更多帮助，请联系 AWS Support。有关更多信息，请参阅 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。

在为 WorkSpaces 应用程序使用应用程序打包时，请务必考虑这些潜在的局限性，并相应地进行规划。