> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Serve 命令

> Serve 命令

`serve` 命令用來將指定的配置提供給 CTA，以進行驗證體驗。

您可以提供已封裝的觸控調整組合 (使用 `pack` 命令建立)，或提供一組未封裝的配置。

下表顯示可搭配 `serve` 命令使用的各種選項。

| 選項 | 描述 |
| - | - |
| `--takx`, `--takx-file <takx-file>` | 要提供之觸控調整組合的路徑。此參數、`--layout-path` 參數或 `--takxconfig` 參數必須擇一提供。 |
| `--takxconfig`, `--takx-config-file <takx-config-file>` | 代表要提供之組合的 `takxconfig.json` 檔案路徑。此參數、`--layout-path` 參數或 `--takx` 參數必須擇一提供。 |
| `--layout-path <layout-path>` | 要包含在所提供組合中的根配置目錄路徑。此參數、`--takx-file` 參數或 `--takxconfig` 參數必須擇一提供。指定 `--takxconfig` 時，此引數會覆寫 `takxconfig.json` 檔案中指定的路徑。 |
| `--asset-path <asset-path>` | 要包含在所提供組合中的根資產目錄路徑。如果組合沒有資產，則不需要此參數。指定 `--takxconfig` 時，此引數會覆寫 `takxconfig.json` 檔案中指定的路徑。 |
| `--context file <context-file>` | 要包含在組合中的內容檔案路徑。如果組合沒有內容，則不需要此參數。指定 `--takxconfig` 時，此引數會覆寫 `takxconfig.json` 檔案中指定的路徑。 |
| `--default-layout <default-layout>` | 預設配置的名稱。這應該與配置路徑中其中一個檔案的名稱相符。指定 `--takxconfig` 時，此引數會覆寫 `takxconfig.json` 檔案中指定的預設值。 |
| `--version <version>` | 觸控調整組合的內容版本，例如 1.0.0.0。針對某個遊戲提交給 Microsoft 的每個觸控調整組合，其版本號碼在語意上都必須大於先前提交過的任何觸控調整組合。串流遊戲時所使用之觸控調整組合的版本號碼，可以透過呼叫 [XGameStreamingGetTouchBundleVersion](/zh-TW/reference/system/xgamestreaming/functions/xgamestreaminggettouchbundleversion) 取得。指定 `--takxconfig` 時，此引數會覆寫 `takxconfig.json` 檔案中指定的版本。 |
| `--version-name <version-name>` | 觸控調整組合內容版本的名稱，例如 "DLC 1"。與版本號碼不同，版本名稱是選用的，而且對其格式沒有任何要求。串流遊戲時所使用之觸控調整組合的版本名稱，可以透過呼叫 [XGameStreamingGetTouchBundleVersion](/zh-TW/reference/system/xgamestreaming/functions/xgamestreaminggettouchbundleversion) 取得。指定 `--takxconfig` 時，此引數會覆寫 `takxconfig.json` 檔案中指定的版本名稱。 |
| `--no-asset-optimization` | 確保不會為了有效率的儲存和通訊而最佳化資產。如果設定此選項，資產不會遭到修改。 |
| `--no-verify` | 確保不會驗證所產生的觸控調整組合是否有效 |
| `--language <language>` | 要包含在所產生並提供之組合中之語言的 IETF 語言標記。如果多次指定此參數，則會包含所有提供的語言。如果未指定此參數，則會將來源目錄中找到的所有配置和資產包含在所提供的組合中。指定 `--takxconfig` 時，此引數會覆寫 `takxconfig.json` 檔案中指定的語言。 |
| `--port <port>` | 提供觸控調整組合的連接埠。預設連接埠為 9269。 |
| `--host <host>` | 提供觸控調整組合的主機。預設主機為 `0.0.0.0`，會在所有網路介面上提供組合。使用 `localhost` 可讓伺服器僅以回送方式提供，或使用特定 IP 來控制伺服器要在哪個介面上提供。 |
| `--certificate-file <certificate-file>` | 用於驗證伺服器以進行安全 HTTPS 要求的 .pfx 憑證檔案路徑。此旗標是工具裝載經過驗證之 HTTPS 伺服器的必要條件。<br /><br />⚠️ **注意：**[Web 內容測試應用程式 (CTA)](/zh-TW/build/core-features/common/game-streaming/game-streaming-web-content-test-application) 只能連線至使用 `https` 和此選項的遠端側載伺服器。 |
| `--certificate-password <certificate-password>` | 存取憑證資料所需的密碼。 |
| `--password <password>` | 用於驗證用戶端的密碼。這是選用的旗標，可在透過 https 側載時限制用戶端存取觸控調整組合。若要成功驗證用戶端，提供的密碼必須與用戶端開發人員設定中提供的密碼相符。 |

### 安全性考量

`serve` 命令適用於本機開發。它會從開發電腦暫時裝載觸控調整組合，讓串流用戶端可在反覆開發期間載入這些組合。不應將其公開至公用網際網路。

<Info>
  請使用最符合您案例的最窄主機繫結：

  * 只有本機電腦需要連線時，請使用 `--host localhost`。
  * 串流用戶端需要透過一個已知的本機網路介面連線時，請使用 `--host <specific IP address>`。
  * 只有在您打算接聽開發電腦上的每個網路介面時，才使用 `--host 0.0.0.0`。如果防火牆和網路規則允許，同一網路上的其他裝置可能可以連線到側載伺服器。

  在您積極進行反覆開發時，預設的 HTTP 接聽程式適用於受信任的本機側載工作階段。當您繫結到 `localhost` 以外的位址、使用共用或不受信任的網路，或需要讓伺服器保持可連線的時間超過目前的測試階段時，請強化設定。在這些情況下，建議依照[憑證產生指示](#certificate-generation-instructions)中所述，使用 `--certificate-file` 搭配 `--certificate-password` 來採用 HTTPS。如果您想要限制用戶端存取所提供的組合，請加入 `--password`。
</Info>

使用 `--password` 時，請在本機為側載工作階段選擇或產生該值，並在用戶端的開發人員設定中輸入相同的值。此密碼會保護對該本機 HTTPS 側載工作階段的存取；Microsoft 不會替您管理或輪替它。若要輪替密碼，請使用新密碼重新啟動 `tak serve`，並更新用戶端設定。

### 範例

使用下列程式碼範例，在主機上提供觸控調整組合。

***

在預設連接埠和主機上提供 layout-path 中的所有配置，並宣告特定的版本/版本名稱

```
C:\>tak serve --layout-path C:\tmp\layouts --version 1.0.0.2 --versionName DLC2
Verifying touch adaptation bundle 'C:\tmp\layouts'.
Now listening on: http://0.0.0.0:9269
Application started. Press Ctrl+C to shut down.
Hosting environment: Production
Content root path: C:\tmp
```

***

僅透過 localhost 提供指定的觸控調整組合

```
C:\>tak serve --takx-file C:\tmp\MyGameLayouts.takx --host localhost
Now listening on: http://localhost:9269
Application started. Press Ctrl+C to shut down.
Hosting environment: Production
Content root path: C:\tmp
```

***

### 憑證產生指示

若要裝載經過驗證的安全伺服器來側載觸控組合，需要憑證。您可以使用任何適當的 SSL 憑證，但下列指示也會建立憑證

1. 從 [XBOX Game Streaming Tools GitHub](https://github.com/microsoft/xbox-game-streaming-tools/blob/main/touch-adaptation-kit/scripts/Create-SelfSignedCertificate.ps1) 取得用於產生自我簽署憑證的指令碼

   a. 瀏覽至上述連結，選取 'raw'，然後將指令碼內容複製並貼到本機電腦上的文件中

   b. 或者，在 Powershell 中執行下列命令來下載指令碼

```powershell theme={null}
    Invoke-WebRequest -Uri https://raw.githubusercontent.com/microsoft/xbox-game-streaming-tools/main/touch-adaptation-kit/scripts/Create-SelfSignedCertificate.ps1 -Out ./Create-SelfSignedCertificate.ps1
```

<Note>
  Create-SelfSignedCertificate.ps1 指令碼僅適用於 Windows。其他作業系統上可能有可產生有效自我簽署憑證的工具
</Note>

2. 在 Powershell 中執行下載的指令碼。
3. 指令碼會提示您輸入用來保護憑證的密碼。在此輸入密碼以進行設定。此密碼將用作 serve 命令之 -certificate-password 旗標的輸入。
   這會產生兩個檔案：`sideload.pfx` 和 `sideload.cer`。`sideload.pfx` 憑證檔案的路徑要做為 serve 命令之 -certificate-file 旗標的輸入。

### 在不同的用戶端上信任憑證

將 .cer 檔案載入您的裝置。您可以透過電子郵件、OneDrive、USB、ADB、AirDrop 等方式完成此操作。依照適用於該裝置的一般方式信任憑證。

#### Windows

1. 按兩下 `sideload.cer` 檔案
2. 選取 \[安裝憑證]。這會開啟憑證匯入精靈。
3. 選取 \[目前使用者] 做為存放位置。
4. 在下一個視窗中，選取 \[將所有憑證放入以下的存放區]，然後選取 \[瀏覽受信任的根憑證授權單位]。

#### Android

1. 在您的 Android 裝置上，瀏覽至 \[設定] > \[安全性] > \[進階] > \[加密與憑證] > \[從儲存空間安裝]。
2. 選取 **CA 憑證**，然後瀏覽至上一節中下載的 `sideload.cer` 檔案以安裝憑證

   安裝後，即可在 \[信任的憑證] > \[使用者] 下檢視此憑證

如需詳細資訊，請參閱 [Google 的文件](https://support.google.com/pixelphone/answer/2844832?hl=en)。

#### iOS

1. 瀏覽至 iOS 裝置上的「檔案」應用程式，將 .cer 檔案安裝至您的裝置描述檔
2. 系統應會根據 .cer 檔案描述檔名稱產生新的描述檔。這可以在 \[設定] > \[一般] > \[描述檔與裝置管理] 下找到。
3. 安裝憑證。憑證簽章應顯示為已驗證。
4. 若要測試已安裝的憑證，請瀏覽至 \[設定] > \[一般] > \[關於本機] > \[憑證信任設定]。為剛安裝的根憑證啟用完全信任。

如需詳細資訊，請參閱 [Apple 的文件](https://support.apple.com/en-us/HT204477)。

### 範例

使用下列程式碼範例，在主機上安全地提供觸控調整組合。

***

透過 https 在預設主機和連接埠上提供配置路徑中的所有配置

```
C:\>  tak serve --layout-path C:\tmp\layouts --certificate-file C:\tmp\sideload.pfx --certificate-password "password"
Adding local loopback exemption for PC app connections.
OK.
Hosting starting
Now listening on: https://0.0.0.0:9269
Application started. Press Ctrl+C to shut down.
Hosting environment: Production
Content root path: C:\tmp
Hosting started
```

***

在驗證用戶端後，於預設主機和連接埠上安全地提供配置路徑中的所有配置。

```
C:\>  tak serve --layout-path C:\tmp\layouts --certificate-file C:\tmp\sideload.pfx --certificate-password "certificatePassword" -password "password"
Adding local loopback exemption for PC app connections.
OK.
Hosting starting
User profile is available. Using 'AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
Now listening on: https://0.0.0.0:9269
Application started. Press Ctrl+C to shut down.
Hosting environment: Production
```

***

## 另請參閱

[觸控調整套件命令列工具 (tak.exe)](/zh-TW/build/core-features/common/game-streaming/tak-command-line-tool/game-streaming-tak-command-line)


## Related topics

- [Verify 命令](/zh-CN/build/core-features/common/game-streaming/tak-command-line-tool/game-streaming-tak-command-line-verify-command.md)
- [Pack 命令](/zh-CN/build/core-features/common/game-streaming/tak-command-line-tool/game-streaming-tak-command-line-pack-command.md)
- [Touch Adaptation Kit (TAK) 命令行工具参考](/zh-CN/build/core-features/common/game-streaming/tak-command-line-tool/index.md)
- [部署触控布局](/zh-CN/build/core-features/common/game-streaming/building-touch-layouts/game-streaming-touch-deploying-touch-layout.md)
- [Create 命令](/zh-CN/build/core-features/common/game-streaming/tak-command-line-tool/game-streaming-tak-command-line-create-command.md)
