Internet Explorer is no longer supported. Many things will still work, but your experience will be degraded and some things won't function. Please use a modern browser such as Edge, Chrome, or Firefox.

UPack Overview

view on GitHub

What is UPack

UPack is a technology-neutral packaging platform that allows you to deploy your applications and components uniformly across different environments for consistent deployment and testing.

Package

Package your applications and components directly from the Visual Studio Extension or Jenkins plug-in, or use free and open-source tools such as Universal Package Explorer or the cross-platform UPack Command-line Interface.

Extend

Include any metadata, such as the Git branch name or commit ID, or custom package information; or even extend the package format itself to provide content and functionality within your own applications and services using  UPackLib.NET or the API.

Distribute

Securely distribute your packages to any number of clients and endpoints using ProGet's universal feeds, or simply store them on disk or a network share. Use virtual packages to mix and match other packages and external content to simplify and standardize distribution.

Deploy

Deploy your packages to servers and the cloud with BuildMaster, or use the UPack command-line interface to install them on a workstation or server. Alternatively, use the UPackLib.NET library or open specifications to deploy, install, or configure packages as your application requires.

Discover

You can use upack or UPackLib.NET to find out which packages have been installed on a machine. NET shows you where the package came from, which tool installed it, and which user triggered the installation. Universal Packages also have a built-in audit history that lets you track changes or repackaging back to the source.

Versioning

Universal Package Feeds are designed to provide out-of-the-box, out-of-the-box functionality for most packaging needs and also serve as a platform that you can easily extend or interact with.

Universal Feed API Versions

Version

Notes

1.5.0

Added version ranges to dependencies in package manifest

1.4.0

Added shortDescription to package manifest

1.3.0

Added Feed Metadata Endpoint
Added Download VPack Endpoint

1.2.0

Added Virtual Packages
Added tags to packages
Added Repackaging
Added package hash to package identification string (dependencies, package history)

1.1.1

Increased group length from 50 to 250

1.1.0

Added Download Package File Endpoint

1.0.0

Introduction

Universal Package Versions

The Universal Package Files themselves are designed to be both backward- and forward-compatible. This is easy to do because the minimum requirements for a Universal Package are incredibly low. Therefore, changes will always be additive and their use will be optional. 

In the extremely unlikely event that a future version of this specification is incompatible (we can think of absolutely no reason why this would ever be the case), it would likely be released in a completely different format (e.g., with the .upack2 extension).

UPack Specifications:

All UPack tools adhere to the following specifications. The specifications have been designed to be easy to understand and implement for your own use cases.

Universal Package

A ZIP archive containing any type of content, along with a simple JSON-formatted manifest file describing that content with built-in or additional metadata.

Virtual Package

A JSON-formatted file behaves like a universal package, but its contents are downloaded and compiled at install time.

Universal Package Registry

A JSON-formatted file that describes which packages are installed in a given context (on a server, in an application), when they were installed, who installed them, and why they were installed. It also contains a package cache in case packages need to be reinstalled or audited.

Universal Feed

An HTTP-based API that's used to list, download, and publish universal package files in a web-based package manager such as ProGet.