OS-specific differences¶
The Linux version and Windows version of Zero Install share the same feed format. For most common use-cases they behave identically on the command-line. There are however some OS-specific differences.
Version number¶
The version numbers of the Linux and Windows versions of Zero Install are loosely coupled. If the first two components of the version number are the same (e.g. 2.1 and 2.1.3) they generally support the same features.
Command-line interface¶
The command-line interface of the Linux and Windows versions are largely identical, with the following exceptions:
0install add|destroy|show|whatchanged
- These app commands are only available in the Linux version so far.
0install man
- This man-page integration command is only available in the Linux version.
0install catalog search|refresh|add|remove|reset|list
- These catalog commands are only available in the Windows version so far.
0install add|remove|alias|integrate|update-all|repair-apps|sync
- These desktop integration commands are only available in the Windows version so far.
0install store list-implementations|purge
- These cache management commands are only available in the Windows version so far.
0install export
and0install store export
- These implementation exporting commands are only available in the Windows version so far.
0install self deploy|remove|update
- These maintenance commands are only available in the Windows version.
0install run --no-wait
- On *nix systems Zero Install replaces itself with the application it launches using
exec()
. Since there is no directexec()
equivalent on Windows Zero Install launches a child process and waits for it to exit. This Windows-only command-line argument causes Zero Install to return immediately instead without waiting for the child to exit. 0install --dry-run
- Not implemented in the Windows version.
0install --console|gui
- These command-line arguments are not available in the Windows version. Instead it uses separate executables,
0install
and0install-win
, to select console or GUI mode. 0install --background|batch
- These command-line arguments are only available in the Windows version.
0install select|download|run --customize
- This command-line argument is only available in the Windows version.
Configuration files and caches¶
The Linux and Windows versions mostly use the same formats for configuration files and caches. However, due to some limitations of the Windows filesystem they are not directly interchangeable.
~/.config/0install.net/injector/interfaces
on Linux contains file names with colons in them. In the Windows counterpart %appdata%\0install.net\injector\interfaces
these are encoded as %3a
.
When extracting implementations Zero Install preserves executable-bits and symlinks and considers them when calculating manifest digests.
Windows does not have a concept of executable bits. Instead, Zero Install for Windows stores this information in a file called .xbit
in the top-level directory of each implementation.
On Windows Administrator privileges are required to create symlinks. Therefore Zero Install creates Cygwin-style symlinks instead of "real" NTFS symlinks.
See also: File locations
Other differences¶
The Windows version:
- uses NTFS ACLs instead of POSIX octets to make implementation directories read-only.
- provides in-process extraction code for all supported archive formats, since there is usually no
tar
,unzip
, etc. in thePATH
on Windows systems - transparently handles Unix-style
$ENVIRONMENT_VARIABLES
rather than expecting them in the platform-specific%WINDOWS%
style. - creates binaries instead of shell scripts for command-line aliases and
<executable-in-*>
bindings.
Cross-platform use¶
The Windows version of Zero Install is written in in C#. It is primarily intended to be be used on Windows NT-based operating systems. However, the Zero Install .NET API it is based on is written with cross-platform support in mind and works on Linux using .NET Core.
The Linux version of Zero Install is writtin in OCaml. It is primarily intended to be be used on Unixoid operating systems such as Linux and OS X. It can also be compiled for Windows, however, it lacks a number of Windows-specific features such as support for NTFS ACLs.
The Windows version of Zero Install internally uses parts of the Linux version via the JSON API.
Feature comparison¶
Windows Version | Linux Version | |
---|---|---|
Feed format | Full support | Full support |
Shared cache | Yes (using Windows service) | Yes (using store helper) |
Native package manager integration | No | Yes |
Apps with cached selection | No | Yes |
Catalog (recommended feeds and short names) | Yes | No |
Desktop integration (menu entries, file type associations, etc.) | Yes | Limited |
App list synchronization | Yes | No |
Portable mode | Yes | No |
Runs on Windows | Yes | Limited |
Runs on Linux | Limited | Yes |
Runs on macOS | Limited | Yes |