# Pack

> Creates a GZip tarball file from a package folder. The format and content of the file is the same as if the package was published to a package registry.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor.PackageManager](/engine/6000.6/script-reference/unityeditor/packagemanager.md)
* **Assembly:** UnityEditor.CoreModule

## Pack(string, string)

Creates a GZip tarball file from a package folder. The format and content of the file is the same as if the package was published to a package registry.

> **Warning:**
>
> **Deprecated.** Pack(string, string) is deprecated and will be removed in a later version. Use Pack(string, string, string) instead.

```csharp
public static PackRequest Pack(string packageFolder, string targetFolder)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Folder containing the package. `ArgumentException` is thrown if `packageFolder` is `null`, empty, or whitespace.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Folder where the Package Manager will write the GZip tarball file. The Package Manager will create this folder if it doesn't exist. `ArgumentException` is thrown if `targetFolder` is `null`, empty, or whitespace.

### Returns

| Type                                                                                              | Description                                                                                                                                                                                                                                                                                                                                |
| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [PackRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/packrequest.md) | A [PackRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/packrequest.md) instance, which you can use to get the [PackOperationResult](/engine/6000.6/script-reference/unityeditor/packagemanager/packoperationresult.md) representing the path of the generated tarball from the `PackRequest.Result` property. |

### Remarks

`Pack()` is an asynchronous operation. Before the operation is complete, you can use the `PackRequest` instance to monitor the asynchronous operation.

**Note:** Make sure any other Client operations have completed before calling this method. For more information, refer to the note on the [Client](/engine/6000.6/script-reference/unityeditor/packagemanager/client.md) class reference page.

### Examples

```csharp
using UnityEngine;
using UnityEditor.PackageManager;
using UnityEditor.PackageManager.Requests;

[ExecuteInEditMode]
public class PackageManagerClientPackExample : MonoBehaviour
{
    PackRequest m_PackRequest;

    void Start()
    {
        Debug.Log("Client.Pack example...");
        // Replace with your actual package folder, target output folder, and organization ID
        string packageFolder = "Packages/com.company.mypackage";
        string targetFolder = "Builds";
        string ownerOrgId = "1234567";

        m_PackRequest = Client.Pack(packageFolder, targetFolder, ownerOrgId);
    }

    void Update()
    {
        if (m_PackRequest != null && m_PackRequest.IsCompleted)
        {
            if (m_PackRequest.Status == StatusCode.Success)
            {
                Debug.Log($"Package successfully packed at: {m_PackRequest.Result.tarballPath}");
            }
            else
            {
                Debug.LogError($"Pack failed: {m_PackRequest.Error.message}");
            }

            m_PackRequest = null;
        }
    }
}
```

## Pack(string, string, string)

Creates a GZip tarball file from a package folder. The format and content of the file is the same as if the package was published to a package registry.

```csharp
public static PackRequest Pack(string packageFolder, string targetFolder, string ownerOrgId)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Folder containing the package. `ArgumentException` is thrown if `packageFolder` is `null`, empty, or whitespace.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Folder where the Package Manager will write the GZip tarball file. The Package Manager will create this folder if it doesn't exist. `ArgumentException` is thrown if `targetFolder` is `null`, empty, or whitespace.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The ID of the organization that owns the package. `ArgumentException` is thrown if `ownerOrgId` is `null`, empty, or whitespace.

### Returns

| Type                                                                                              | Description                                                                                                                                                                                                                                                                                                                                |
| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [PackRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/packrequest.md) | A [PackRequest](/engine/6000.6/script-reference/unityeditor/packagemanager/requests/packrequest.md) instance, which you can use to get the [PackOperationResult](/engine/6000.6/script-reference/unityeditor/packagemanager/packoperationresult.md) representing the path of the generated tarball from the `PackRequest.Result` property. |

### Remarks

`Pack()` is an asynchronous operation. Before the operation is complete, you can use the `PackRequest` instance to monitor the asynchronous operation.

**Note:** Make sure any other Client operations have completed before calling this method. For more information, refer to the note on the [Client](/engine/6000.6/script-reference/unityeditor/packagemanager/client.md) class reference page.

### Examples

```csharp
using UnityEngine;
using UnityEditor.PackageManager;
using UnityEditor.PackageManager.Requests;

[ExecuteInEditMode]
public class PackageManagerClientPackExample : MonoBehaviour
{
    PackRequest m_PackRequest;

    void Start()
    {
        Debug.Log("Client.Pack example...");
        // Replace with your actual package folder, target output folder, and organization ID
        string packageFolder = "Packages/com.company.mypackage";
        string targetFolder = "Builds";
        string ownerOrgId = "1234567";

        m_PackRequest = Client.Pack(packageFolder, targetFolder, ownerOrgId);
    }

    void Update()
    {
        if (m_PackRequest != null && m_PackRequest.IsCompleted)
        {
            if (m_PackRequest.Status == StatusCode.Success)
            {
                Debug.Log($"Package successfully packed at: {m_PackRequest.Result.tarballPath}");
            }
            else
            {
                Debug.LogError($"Pack failed: {m_PackRequest.Error.message}");
            }

            m_PackRequest = null;
        }
    }
}
```
