- 18 May 2022
- 2 Minutes to read
- Updated on 18 May 2022
- 2 Minutes to read
What is UPack
UPack is a technology-neutral packaging platform that allows you to uniformly distribute your applications and components across environments to enable consistent deployment and testing.
Package your applications and components directly from the Visual Studio Extension or the Jenkins Plug-in, or using free and open-source tools including the Universal Package Explorer or the cross-platform UPack Command-line Interface.
Include any metadata, such as git branch name or commit-id, or customer-specific package information; or even extend the package format itself for delivering content and features within your own applications and services using UPackLib.NET or the API.
Distribute your packages securely, 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.
Discover which packages have been installed on a machine with upack or UPackLib.NET to see where the package came from, which tool installed it, and which user triggered the deployment. Universal Packages also have a built-in audit history that lets you track changes or repackaging back to the source.
Universal Package Feeds were designed to be provide immediate, out-of-the-box functionality for most packaging needs, and also to serve as a platform that you can easily extend or interact with.
Universal Feed API Versions
|1.5.0||Added version ranges to |
|1.3.0||Added Feed Metadata Endpoint|
Added Download VPack Endpoint
|1.2.0||Added Virtual Packages|
Added package hash to package identification string (dependencies, package history)
|1.1.0||Added Download Package File Endpoint|
Universal Package Versions
The Universal Package Files themselves are designed to be both backwards- and forwards-compatible. This is easily accomplished because the minimum requirements for what makes a universal package are incredibly minimal. Thus, changes will always be additive and their usage will be optional.
In the extremely unlikely event that a future version of this specification is not compatible (we can think of absolutely no reason this would ever be), these would likely be exposed as a totally different format (like a .upack2 extension).
All of the UPack tools adhere to the following set of specifications. The specifications were designed to be easy to understand and implement for your own use cases.
A ZIP archive containing any sort of content, along with a simple, JSON-formatted manifest file describing that content using built-in or additional metadata.
A JSON-formatted file that behaves like a universal package, but with contents that are downloaded and assembled at install time.
A JSON-formatted file that describes what packages are installed in a particular context (on a server, in an application), as well as when it was installed, who installed it, and why it was installed. It also provides for a package cache, in case packages need to be reinstalled or audited.
An HTTP-based API used to list, download, and publish universal package files to a web-based package manager like ProGet.