UPack Overview
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 |
1.4.0 | Added |
1.3.0 | Added Feed Metadata Endpoint |
1.2.0 | Added Virtual Packages |
1.1.1 | Increased |
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.