core features of Zero Install implemented in .NET
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Fixed documentation building Nov 19, 2018
feed Moved icons to top-level, tweaked NuGet package metadata Oct 1, 2018
lib Fixed spelling Dec 16, 2017
samples Improved code formatting Apr 23, 2018
src Updated NanoByte.Common, improved FeedEditing Jan 15, 2019
.editorconfig Build API docs on Travis CI and publish to GitHub Pages Oct 2, 2018
.gitattributes Extracted from 0install-win repo Aug 21, 2017
.gitignore Improved .gitignore Nov 11, 2018
.travis.yml Fixed Travis documentation build Jan 8, 2019
3rd party code.txt Tweaked docs Nov 12, 2018
COPYING.txt Applied EditorConfig Apr 15, 2018
GitVersion.yml Updated GitVersion configuration Nov 10, 2018
README.md Tweaked docs Nov 12, 2018
Translation-Download.ps1 Merged Commands and Commands.Cli from https://github.com/0install/0in… Jun 10, 2018
Translation-Upload.ps1 Merged Commands and Commands.Cli from https://github.com/0install/0in… Jun 10, 2018
appveyor.yml Build API docs on Travis CI and publish to GitHub Pages Oct 2, 2018
build.ps1 Renamed release/ to feed/ Sep 28, 2018
build.sh Switched versioning to GitVersion Mar 18, 2018
icon.ico Moved icons to top-level, tweaked NuGet package metadata Oct 1, 2018
icon.png Moved icons to top-level, tweaked NuGet package metadata Oct 1, 2018
icon.svg Moved icons to top-level, tweaked NuGet package metadata Oct 1, 2018
package-dependencies.dot Redesigned readme and api docs Oct 18, 2018
package-dependencies.svg Redesigned readme and api docs Oct 18, 2018

README.md

Zero Install .NET

API documentation Build status
This is the .NET implementation of Zero Install. It can be used as a command-line tool on various platforms or be embedded into .NET applications as a set of libraries. It provides the basis for Zero Install for Windows.

Zero Install is a decentralized cross-platform software installation system. You can learn more at 0install.net.

Command-line

Zero Install .NET provides the 0install command-line tool. There are a number of ways you can get it:

  • You can get a .NET Framework version of the 0install command by downloading Zero Install for Windows. (recommended)

  • If you already have some version of Zero Install (.NET-based or otherwise) on your system you can use it to download and run a .NET Core version of the 0install command like this:

    0install run http://0install.de/feeds/0install-dotnet.xml
    
  • You can also manually install .NET Core and then download a Zero Install .NET Release, extract the archive and run:

    dotnet 0install.dll
    

Libraries

You can use the following NuGet packages to integrate Zero Install features into your own application:

ZeroInstall.Store
Data model for the feed format, signature verification, management of on-disk caches

ZeroInstall.Services
Core services like solving dependencies, downloading implementations and execution selections

ZeroInstall.Services.Interfaces
Interfaces/abstractions for types from ZeroInstall.Services package

ZeroInstall.DesktopIntegration
Methods for integrating applications with desktop environments (creating menu entries, etc.)

ZeroInstall.Commands
Command-line interface for Zero Install (both an actual CLI and a library for building other clients)

ZeroInstall.Publish
Utilities for creating and modifying feed files

Dependencies

Building

The source code is in src/, a project for API documentation is in doc/ and generated build artifacts are placed in artifacts/.
There is a template in feed/ for generating a Zero Install feed from the artifacts. For official releases this is published at: http://0install.de/feeds/0install-dotnet.xml

You need Visual Studio 2017 to perform a full build of this project. You can build the cross-platform components on Linux using only the .NET Core SDK 2.1+. Additionally installing Mono 5.10+ allows more components to be built. The build scripts will automatically adjust accordingly.

Run .\build.ps1 on Windows or ./build.sh on Linux. These scripts take a version number as an input argument. The source code itself contains no version numbers. Instead the version is picked by continuous integration using GitVersion.

Contributing

We welcome contributions to this project such as bug reports, recommendations, pull requests and translations. If you have any questions feel free to pitch in on our friendly mailing list.

This repository contains an EditorConfig file. Please make sure to use an editor that supports it to ensure consistent code style, file encoding, etc.. For full tooling support for all style and naming conventions consider using JetBrain's ReSharper or Rider products.