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

# 管理 PC 上的 XGameSave 資料 (xgamesaveutil.exe)

> 管理 PC 上的 XGameSave 資料 (xgamesaveutil.exe)

使用此工具管理 PC 上的 `XGameSave` 資料。請勿在遊戲執行時使用。這樣做可能會使遊戲的遊戲存檔處於不確定的狀態。

此工具需要在您的電腦上安裝遊戲套件。這項需求與主機不同，在主機上，透過 Visual Studio 部署就足以讓 `xbstorage` 與遊戲的遊戲存檔互動。您可以使用 [makepkg](https://docs.xbox.com/zh-TW/build/core-features/common/packaging/deployment/makepkg.md) 產生 PC 套件，並使用 [wdapp install](https://docs.xbox.com/zh-TW/tools/tools-pc/commandlinetools/gr-wdapp.md) 安裝。

> [!NOTE]
>
> 如果您需要管理主機上的 `XGameSave` 資料，必須使用[管理主機上的 XGameSave 儲存空間 (xbstorage.exe)](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xbstorage.md)。

| 命令 | 描述 |
| - | - |
| [reset](#xgamesaveutil_reset) | 僅刪除電腦上指定套件系列名稱 (PFN) 與服務設定識別碼 (SCID) 的本機資料，不影響雲端中的存檔。 |
| [import](#xgamesaveutil_import) | 將指定 XML 檔案中的資料匯入 `XGameSave` 儲存空間。 |
| [export](#xgamesaveutil_export) | 將 `XGameSave` 儲存空間中的資料匯出至指定的 XML 檔案。 |
| [delete](#xgamesaveutil_delete) | 刪除 `XGameSave` 儲存空間中的資料。 |
| [generate](#xgamesaveutil_generate) | 產生虛擬資料，並將其儲存至指定的 XML 檔案。 |

## xgamesaveutil reset

```
xgamesaveutil reset [/pfn:<PFN>] [/scid:<SCID>] [/context:<infile>]
```

僅刪除電腦上指定 PFN 與 SCID 的本機資料，不影響雲端中的存檔。如果在呼叫 `xgamesaveutil reset` 之後啟動遊戲，雲端中現有的存檔會同步至裝置。

有兩種方式可以指定要刪除之資料的位置：

* 如果使用 **/context** 參數，且 \<infile> 所指定的檔案具有正確填入的 *ContextDescription* 區段，
  則會使用該檔案來指定目標 PFN 與 SCID。

* PFN 與 SCID 可以透過命令列參數部分或完整指定，其優先順序高於輸入檔案中所指定之 PFN 與 SCID 的
  對應元素。

| 選項 | 描述 |
| - | - |
| /context:\<infile> | 指定要用於應用程式 PFN 與 SCID 的檔案。 |
| /pfn:\<PFN> | 指定要從中刪除資料之應用程式的套件系列名稱 (PFN)。應用程式必須已安裝。 |
| /scid:\<SCID> | 指定服務設定識別碼 (SCID)。此值來自您的 XBOX 服務設定。 |

**範例**

```cmd theme={null}
xgamesaveutil reset /context:target.xml
xgamesaveutil reset /pfn:MyGame_xxxxxx /scid:2AAEB34B-DAB2-4879-B625-D970069C1D22
```

## xgamesaveutil import

```
xgamesaveutil import <filename> [/pfn:<PFN>] [/scid:<SCID>] [/replace]
```

將 *filename* 中指定的資料匯入儲存空間。此 XML 檔案包含資料。如需範例，
請參閱本文中的 [xgamesaveutil generate](#xgamesaveutil_generate)。如需檔案 XML 格式的詳細資訊，請參閱
本文中的[匯入與匯出檔案格式](#xgamesaveutil_fileformat)。

有兩種方式可以指定要將 `XGameSave` 資料匯入至何處：

* 如果使用 **/context** 參數，且 \<filename> 所指定的檔案具有正確填入的 *ContextDescription* 區段，
  則會使用該檔案來指定目標 PFN 與 SCID。

* PFN 與 SCID 可以透過命令列參數部分或完整指定，其優先順序高於輸入檔案中所指定之 PFN 與 SCID 的
  對應元素。

| 選項 | 描述 |
| - | - |
| /pfn:\<PFN> | 指定要從中刪除資料之應用程式的套件系列名稱 (PFN)。應用程式必須已安裝。 |
| /scid:\<SCID> | 指定服務設定識別碼 (SCID)。此值來自您的 XBOX 服務設定。 |
| /replace | 執行匯入之前刪除所有容器。 |

**範例**

```cmd theme={null}
xgamesaveutil import mydata.xml
xgamesaveutil import mydata.xml /replace
xgamesaveutil import mydata.xml /pfn:MyGame_xxxxxx /scid:2AAEB34B-DAB2-4879-B625-D970069C1D22
```

> [!NOTE]
>
> 在 PC 上，此工具會將匯入的資料直接寫入本機儲存空間。它**不會**在匯入之前或之後與雲端同步，也**不會**自動將匯入的資料上傳至雲端。資料會在下次遊戲啟動並取得遊戲存檔提供者 (例如，呼叫 [XGameSaveInitializeProvider](https://docs.xbox.com/zh-TW/reference/system/xgamesave/functions/xgamesaveinitializeprovider.md)) 時上傳。
>
> 這與主機工具 (`xbstorage`) 不同，後者會在匯入之前與雲端同步，並在匯入之後立即上傳資料。

如果具有相同主要服務設定識別碼 (SCID) 的遊戲正在執行，此作業可能會造成競爭情況，並使
`XGameSave` 儲存空間的內容處於不確定的狀態。

如果未指定 **/replace**，則在寫入輸入檔案中指定的 Blob 之前，會先清除輸入檔案中指定的容器。
`XGameSave` 儲存空間中未在輸入檔案中指定的容器不會受到影響。

## xgamesaveutil export

```cmd theme={null}
xgamesaveutil export <outfile> [/pfn:<PFN>] [/scid:<SCID>] [/context:<infile>]
```

將 `XGameSave` 儲存空間中的資料匯出至 **outfile** 所指定的檔案。此 XML 檔案包含匯出的資料。如需範例，請參閱 [xgamesaveutil generate](#xgamesaveutil_generate)。如需 XML 格式的詳細資料，請參閱[匯入與匯出檔案格式](#xgamesaveutil_fileformat)。

有兩種方式可以指定要從何處匯出 `XGameSave` 資料：

* 如果使用 **/context** 參數，且 \<infile> 所指定的檔案具有正確填入的 *ContextDescription* 區段，
  則會使用該檔案來指定目標 PFN 與 SCID。

* PFN 與 SCID 可以透過命令列參數部分或完整指定，其優先順序高於輸入檔案中所指定之 PFN 與 SCID 的
  對應元素。

| 選項 | 描述 |
| - | - |
| /pfn:\<PFN> | 指定要從中匯出資料之應用程式的套件系列名稱 (PFN)。應用程式必須已安裝。 |
| /scid:\<SCID> | 指定服務設定識別碼 (SCID)。此值來自您的 XBOX 服務設定。 |

**範例**

```cmd theme={null}
xgamesaveutil export exporteddata.xml /context:target.xml
xgamesaveutil export exporteddata.xml /pfn:MyGame_xxxxxx /scid:2AAEB34B-DAB2-4879-B625-D970069C1D22
```

> [!NOTE]
>
> 在 PC 上，此工具會直接從本機儲存空間讀取資料。它**不會**在匯出之前與雲端同步。匯出的資料反映的是目前磁碟上的內容，可能不包含最新的雲端資料。

如果具有相同主要 SCID 的應用程式正在執行，此作業可能會造成競爭情況，並使
`XGameSave` 儲存空間的內容處於不確定的狀態。

## xgamesaveutil delete

```cmd theme={null}
xgamesaveutil delete [/pfn:<PFN>] [/scid:<SCID>] [/context:<infile>]
```

刪除 `XGameSave` 儲存空間中的所有資料。

若要正確執行此作業，您必須：

1. 確定遊戲未在執行
2. 執行 `xgamesaveutil delete` 以立即刪除本機資料。
3. 啟動遊戲並取得遊戲存檔提供者。這可讓 `xgamesaveutil` 自動刪除雲端資料。

有兩種方式可以指定要從何處刪除 `XGameSave` 資料：

* 如果使用 **/context** 參數，且 \<infile> 所指定的檔案具有正確填入的 *ContextDescription* 區段，
  則會使用該檔案來指定目標 PFN 與 SCID。

* PFN 與 SCID 可以透過命令列參數部分或完整指定，其優先順序高於輸入檔案中所指定之 PFN 與 SCID 的
  對應元素。

| 選項 | 描述 |
| - | - |
| /pfn:\<PFN> | 指定要從中刪除資料之應用程式的套件系列名稱 (PFN)。應用程式必須已安裝。 |
| /scid:\<SCID> | 指定服務設定識別碼 (SCID)。此值來自您的 XBOX 服務設定。 |

**範例**

```cmd theme={null}
xgamesaveutil delete /context:target.xml
xgamesaveutil delete /pfn:MyGame_xxxxxx /scid:2AAEB34B-DAB2-4879-B625-D970069C1D22 
```

刪除指定的 `XGameSave` 儲存空間之前，系統會嘗試使用與執行中的應用程式取得儲存空間時相同的
邏輯與雲端進行同步。

如果具有相同主要 SCID 的應用程式正在執行，此作業可能會造成競爭情況，並使
`XGameSave` 儲存空間的內容處於不確定的狀態。

## xgamesaveutil generate

```cmd theme={null}
xgamesaveutil generate <filename> [/containers:<n>] [/blobs:<n>] [/blobsize:<n>]
```

產生虛擬資料，並將其儲存至 \<filename> 所指定的檔案。如需檔案 XML 格式的詳細資訊，
請參閱本文中的[匯入與匯出檔案格式](#xgamesaveutil_fileformat)。

SCID 會設為 00000000-0000-0000-0000-000000000000。您可以在檔案產生後直接編輯檔案來
變更這些值。

| 選項 | 描述 |
| - | - |
| /containers:\<n> | 指定要產生多少個容器。預設值為 2。 |
| /blobs:\<n> | 指定每個容器要產生多少個 Blob。預設值為 3。 |
| /blobsize:\<n> | 指定每個 Blob 的位元組數。預設值為 1024。 |

**範例**

```cmd theme={null}
xgamesaveutil generate dummydata.xml
xgamesaveutil generate dummydata.xml /containers:4
xgamesaveutil generate dummydata.xml /blobs:10
xgamesaveutil generate dummydata.xml /containers:4 /blobs:10
xgamesaveutil generate dummydata.xml /containers:4 /blobs:10 /blobsize:512
```

位元組資料是簡單的遞增序列。例如，5 位元組的 Blob 會具有下列位元組：00 01 02 03 04。

若要指定每位使用者的 `XGameSave` 儲存空間，請將 XML 檔案中的 **Account** 節點變更為類似下列範例的內容。

```
<Account msa="user@example.com"/>  
```

## 匯入與匯出檔案格式

與 **import**、**export** 及 **generate** 命令搭配使用的 XML 檔案具有下列範例所示的格式。

```xml theme={null}
  <?xml version="1.0" encoding="UTF-8"?> 
  <XbConnectedStorageSpace> 
    <ContextDescription> 
      <Account msa="user@example.com"/>
      <Title scid="00000000-0000-0000-0000-000000000000" /> 
    </ContextDescription> 
    <Data> 
      <Containers> 
        <Container name="Container1"> 
          <Blobs> 
            <Blob name="Blob1"> 
              <![CDATA[... ]]>
            </Blob> 
            ... 
            <Blob name="BlobN"> 
              <![CDATA[... ]]>
            </Blob> 
          </Blobs>
        </Container> 
        ... 
        <Container name="ContainerN"> 
        ... 
        </Container> 
      </Containers> 
    </Data> 
  </XbConnectedStorageSpace>  
```

此 XML 檔案中的資料格式與平台上的格式並不相同。此格式將來可能會變更，
因此應將這些檔案視為中繼或公用程式格式，而非封存格式。

**ContextDescription** 節點為選用。如果您要為使用者建立 `XGameSave` 儲存空間，可以使用
`<Account msa="user@example.com"/>` 取代 `<Account machine="true"/>`。否則，可以在命令列上
為匯入指定內容。

Blob 與容器應具有產生檔案所針對之遊戲或應用程式為其指定的對應名稱。

每個 Blob 的內容應為包裝在 **CDATA** 標記中的字串，此字串是藉由呼叫
**CryptBinaryToStringW** 並搭配旗標 **CRYPT\_STRING\_BASE64**，提供該 Blob 的資料作為原始位元組
陣列所產生。反之，可以呼叫 **CryptStringToBinary** 並提供先前加密的字串，將 Blob 資料轉換回來。
如需使用這兩個函式的範例，請參閱
[CryptBinaryToString returns invalid bytes](https://social.msdn.microsoft.com/Forums/vstudio/9acac904-c226-4ae0-9b7f-261993b9fda2/cryptbinarytostring-returns-invalid-bytes?forum=vcgeneral)。

## 另請參閱

[遊戲存檔概觀](https://docs.xbox.com/zh-TW/build/core-features/common/game-save/game-saves-overview.md)
[XGameSaveFiles 概觀](https://docs.xbox.com/zh-TW/build/core-features/common/game-save/xgamesavefiles.md)
[管理主機上的 XGameSave 儲存空間 (xbstorage.exe)](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xbstorage.md)


## Related topics

- [管理主機上的 XGameSave 儲存空間 (xbstorage.exe)](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xbstorage.md)
- [PC 開發的命令列工具](https://docs.xbox.com/zh-TW/tools/tools-pc/commandlinetools/gr-commandlinetools-toc.md)
- [Game Saves 工具](https://docs.xbox.com/zh-TW/build/core-features/common/game-save/game-saves-tools.md)
- [命令列工具](https://docs.xbox.com/zh-TW/tools/tools-pc/commandlinetools/index.md)
- [XGameSave API 概觀](https://docs.xbox.com/zh-TW/build/core-features/common/game-save/xgamesave.md)
