Easily Create and Publish Universal Packages with Inedo's Universal Package Explorer

The Universal Package Explorer is a Windows desktop application that makes it easy to create, view, and publish Universal Packages. You can load a .upack file from disk, or directly from a ProGet Universal Feed.

If you want to go through the full step-by-step tutorial, and create and publish a universal package yourself, you can find that here.

Now that you're familiar with the Universal Package Explorer, and if you feel comfortable with the concept of Packages, and the Universal Package Format, you should be ready to jump in and get started! If you're not sure, or you want a quick refresher on these, read on:

What are Packages?

Packages are a simple concept that pretty much everyone can understand.

Conceptually speaking, a package is like a uniform-sized shipping box with uniform, machine- and human-readable labels describing the package. Inside the box are the things you want to deliver, and the box may even include assembly, installation, delivery or other instructions on what to do with the contents.

Technically speaking, a package file is just a zip file containing the actual content you want to distribute, as well as a manifest file that describes the package itself. A lot of times, the package files have a special file extension (like .nuget for NuGet packages), but you can open them with any old zip file reader.

Third-party Packages vs Universal Packages

Third-party package formats were each designed with a very specific use case in mind and, as such, are more complex. The best practice to follow is if there is a third-party package format designed for your specific use case, consider using it instead of universal packages.

Why Universal Packages?

Often, you'll find that third-party packages are actually too specific for your use case. For example, if you want to package a plug-in for your own application, or you want to package a web application or service, none of the third-party formats would be appropriate.

This is where the Universal Package format comes in: it provides the best combination of simplicity, utility, and extensibility. It is designed for both general-purpose use, and as a platform for creating a new proprietary package format.

The Universal Package Explorer

Creating a Universal Package is easy, especially with the Universal Package Explorer!

You can also easily see all the contents within a package, as well as look at the metadata and edit it using the graphical user interface. What's nice about the Universal Package Explorer is that you can easily add files, view them, and then publish your packages to a feed. This makes it a lot simpler than working with zip files directly, or command-line tools.

But if using the GUI isn't your jam, you can also always use upack.exe on the command-line, UPackLib.NET to programmatically interact with and deploy packages, the ProGet Jenkins Plugin, or the Push to ProGet Visual Studio Extension.

Why Package in the first place?

The greatest advantage to packaging your own applications and components is so that they can serve as a common language for describing how your software is bundled into smaller services, and then delivered across your organization.

Note: When you start using packages for your own applications and components, it's important to move to a package-oriented mindset. This is where the concept of package-oriented development comes in.

Packages and The Inedo Suite

All of our tools work well together, and with others. Plus, the free versions are basically unlimited, so you can use them right away!

Here's a brief rundown of how our tools interact with packages:

ProGet - helps you package applications and components so you can ensure your software is built only once, and then deployed consistently across environments; centralize your organization's software applications and components to provide uniform access to developers and servers, no matter where they are in your network

Hedgehog - deploys your packages to the server and cloud; you can deploy simple universal packages or advanced Romp-based packages that bundle infrastructure configuration and deployment code

Otter - provision servers and manage their configuration by ensuring that certain packages (Universal, PowerShell, Chocolatey) are installed; also see what packages have been installed on different servers, by any tool

BuildMaster - create all kinds of packages (development, machine, or universal), test them through various environments, and release them internally (on your live ProGet feed) or on a public gallery or customer location


Now that you're officially all caught up, follow the simple step-by-step tutorial to start easily creating Universal Packages with the UPE, and then publishing them to a ProGet Universal Feed.

Good Luck!

P.S. If you ever need help, the Q&A Forum is an excellent place to start.