

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

# 在 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)
