> For the complete documentation index, see [llms.txt](https://docs.verifone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verifone.com/support-us/verifone-hq/vhq-software-management/configuring-software-packages/adding-packages.md).

# Adding packages

This section discusses adding packages in VHQ.

{% hint style="info" %}
**Use this when** you need to upload a new software package to the Download Library.
{% endhint %}

You can add a software package to the *Download library*.

## Add a package

{% stepper %}
{% step %}

### Open the Download Library

Go to **Device Management** > **Manage Downloads** > **Download Library**, then select the folder (create a new one if required).
{% endstep %}

{% step %}

### Choose a folder

Click the folder where you want to add the package (*Root* is the default).
{% endstep %}

{% step %}

### Click Add Package

<figure><img src="https://verifone.cloud/sites/default/files/inline-images/image_58.png" alt="Add package icon"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Browse and select the package

You can upload bundles (.TGZ, .tar files) for V/OS-based devices, VPI packages (.ZIP files), and Carbon tablet files (.APK files) for eVo-based devices. The .bintbl extension is used for VCL BIN table updates.

* The maximum file name length for packages uploaded to the VHQ download library is 248 characters, though the actual length may be further constrained by the target device:
  * MX8xx and MX760 devices: maximum 32 characters.
  * Verix eVo devices: maximum 32 characters.
  * MX9xx and Ux devices: maximum 85 characters.
    {% endstep %}

{% step %}

### Fill in the package details

1. Enter the **Package Name**.
2. Select the compatible device models from the *Model(s)* drop-down, or select **All Models**.
3. Select the **Package Type**: Application, Bundle, Feature Enablement License, Form, OS, Parameter File, or Service Pack.
4. Enter the **Package Version** and **Tags** (tags help you search for the package later in *Download library*).
5. Set the post-installation action to **Reboot**, **Restart application(s)**, or **None**. If a download job has multiple packages with reboot specified, the server suppresses the reboot instruction on all but the last package.
   {% endstep %}

{% step %}

### Click Add

The package is added to *Download Library*.

<figure><img src="https://verifone.cloud/sites/default/files/inline-images/image_59.png" alt="Add package screen" width="375"><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

On upload, the VHQ server checks for a manifest file or control file inside the package. If one exists, **Validate for Download Automation** remains selected by default and the package qualifies for automated download. If neither exists, the checkbox remains unselected and the software must be scheduled manually.

{% hint style="info" %}
The V/OS bundles must contain control files, and VPI packages must contain manifest files, to qualify for automated downloads. See [V/OS Bundle](/support-us/verifone-hq/vhq-software-management/v-os-bundle.md) and [VPI Package](/support-us/verifone-hq/vhq-software-management/vpi-package.md) for details.
{% endhint %}

## Package upload size

By default, the package file name can be 50 characters — contact the VCS team to change the configured value. Package file names uploaded through VHQ or the API are validated against this length; exceeding it shows: *File name cannot exceed 50 characters*. This change doesn't affect existing packages or path names created before the enhancement.

## Guidelines

* **The Post Install action** is not supported for VX, Carbon, and PWM family packages. Carbon APK supports .zip. MX, Engage, and UX all support post-install actions for .tgz and .zip.
* **Package Type** and **File version** are for user information only — they aren't used in any processing logic.
* **Post Install Action: Restart Application(s)** doesn't restart the VHQ application on a device; it restarts all other running applications. If VHQ itself must restart after a download, select **Reboot** before uploading the file.

## Validation rules

VHQ validates a package against the following scenarios during upload:

* VHQ won't allow adding a package with content identical to an existing one.
* Uploading a .zip or .tgz package containing files with duplicate names (including across nested folders) is restricted, with an error indicating duplicate files were found.
* A CP package (.zip) must include a manifest file in JSON format with *Name*, *ID*, *Version*, *Type*, *Purpose*, and *Signatures*:

```json
"schema_version": "1.0", "application": {
 	"name": "ValidTestApp",
 	"id": "validTest-695973514",
 	"version": "1.0.0",
 	"type": "CP_ANDROID",
 	"purpose": "CP_INSTALL",
 	"signatures": [
 	"Android"
 	]
 	}
}
```

* CP package "purpose" can be "CP\_INSTALL" or "CP\_UNINSTALL" — both require a manifest file. CP\_INSTALL requires an .apk file (only one is considered if multiple are present).

```json5
package: name='com.verifone.poc.validtestapp' versionCode='1' versionName='1.0.0' sdkVersion:'22'
targetSdkVersion:'22'
application: label='ValidTestApp' icon='res/mipmap-mdpi-v4/ic_launcher.png'
launchable activity name='com.verifone.poc.validtestapp.MainActivity'label='' icon=''
uses-feature:'android.hardware.touchscreen' main
supports-screens: 'small' 'normal' 'large' 'xlarge' supports-any-density: 'true'
locales: '--_--'
densities: '160' '240' '320' '480' '640'
```

* The name and version in the manifest file must match the label and version in the .apk file — mismatches are rejected.
* Uploading an uninstall package without its corresponding install package is rejected.
* A CP package can contain only one application.
* An OTA .zip must contain a build.prop file on extraction.
* The application purpose must be CP\_ANDROID or CP\_TERMAPP for automated download; other types can still be uploaded manually.
* CP install packages can't be CP\_TERMAPP — they must be CP\_ANDROID.
* A CP\_ANDROID install package must contain the .apk file, or the upload is rejected.
* CP\_UNINSTALL packages don't have .apk files.

{% hint style="info" %}
If Package1.tgz and Package2.tgz both contain files abc.tgz and 123.tgz, VHQ won't allow the second package to be added.
{% endhint %}

In the *Add package* screen, the tab next to the package details lists the applications — including *Bundle Name*, *Bundle Version*, application name, application version, and the parameter definition file. This tab is only visible if the package is eligible for download automation.

<details>

<summary>Keywords</summary>

Also called: add package, upload package, download library upload. Search terms: manifest file, control file, package validation.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verifone.com/support-us/verifone-hq/vhq-software-management/configuring-software-packages/adding-packages.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
