There are currently the following types of apps:
- Typ
group
: app groups, with only a list of dependencies - Typ
meta
: apps with a fully customized setup process - Typ
default
: Windows executables from a downloaded file, archive, or setup - Typ
node-package
: Node.js packages, installable with NPM - Typ
python-package
: Python packages for Python 2 and 3 from PyPI, installable with PIP - Typ
python2-package
: Python packages for Python 2 from PyPI, installable with PIP - Typ
python3-package
: Python packages for Python 3 from PyPI, installable with PIP - Typ
python-wheel
: Python wheels for Python 2 and 3 from a downloaded.whl
file, installable with PIP - Typ
python2-wheel
: Python wheels for Python 2 from a downloaded.whl
file, installable with PIP - Typ
python3-wheel
: Python wheels for Python 3 from a downloaded.whl
file, installable with PIP - Typ
ruby-package
: Ruby packages, installable with Gem - Typ
nuget-package
: NuGet packages, installable with NuGet
Group App
An app is a Group App if its Typ
is set to group
.
Technically a Group App behaves the same like a Meta App, but is is supposed to be used as a collection of dependencies only. That way, if the Group App is activated, all of its dependencies are implicitly activated too. They are a way to make the activation process of apps more comfortable or flexible.
Meta App
An app is a Meta App if its Typ
is set to meta
.
A Meta App is an app without an actual program. It can be used to fully customize the download and setup process of an app with custom scripts.
Default Windows App
An app is a Default Windows App if its Typ
property
is set to default
or not set at all.
A Default Windows App is the definition for some kind of script or binary executable for the Windows operating system. In contrast to other apps, a Default Windows App has a program resource, which can be downloaded as a file. The resource can be an executable on its own, or an archive of some kind, even a setup or installer EXE.
A Default Windows App is extracted, and installed simply by copying its files into its target directory. Optionally some custom scripts can be executed during the setup process, to perform some additional configuration for the app.
Node.js Package
An app is a Node.js Package if its Typ
property is set to node-package
.
A Node.js Package is downloaded and installed by npm the Node.js package manager.
To determine, if a Node.js Package is already installed, the existence of its package folder in
node_modules
in the Node.js directory is checked.
Python Package
An app is a Python Package if its Typ
property is set to
python-package
, python2-package
, or python3-package
.
A Python Package is downloaded and installed via PIP the Python package manager. Python Packages can be defined for Python 2 and Python 3 separately, or for both.
A package of typ python2-package
automatically depends on Python 2 and is installed
only with the PIP of Python 2.
A package of typ python3-package
automatically depends on Python 3 and is installed
only with the PIP of Python 3.
However, a package of typ python-package
has slightly more complicated semantics.
- If neither Python 2 nor Python 3 is activated explicitly, the package automatically depends on Python 3 but is installed with the PIP of all explictly or implictly activated Python versions.
- If only one of both Python versions is activated explicitly, the package automatically depends on the explicitly activated version but is installed with the PIP of all explictly or implictly activated Python versions.
- If both Python versions are activated explicitly, the package automatically depends on Python 3 but is installed with the PIP of both Python versions.
This means, a python-package
implictly activates Python 3 if no Python version
is explicitly activated, and it is installed in all activated Python versions.
To determine, if a Python Package is already installed, the existence of its package folder in
lib\site-packages
in the Python directory is checked.
Python Wheel
An app is a Python Wheel if its Typ
property is set to
python-wheel
, python2-wheel
, or python3-wheel
.
A Python Wheel is downloaded from the Url
and cached under the ResourceName
.
The downloaded .whl
file is then installed via PIP the Python package manager.
Python Wheels can be defined for Python 2 and Python 3 seperatly, or for both.
The dependency and activation semantics are identical with Python Packages.
To determine, if a Python Wheel is already installed, the existence of its package folder in
lib\site-packages
in the Python directory is checked.
Ruby Package
An app is a Ruby Package if its Typ
property is set to ruby-package
.
A Ruby Package is actually a gem and is downloaded and installed by the Ruby package manager, also called gem.
To determine, if a Ruby gem is already installed, the existence of its package folder in
lib\ruby\gems\<ruby-version>\gems
in the Ruby directory is checked.
NuGet Package
An app is a NuGet Package if its Typ
property is set to nuget-package
.
A NuGet Package is one package from https://www.nuget.org/packages and all of its dependencies.
The package and its dependencies are installed inside of the apps target directory
lib\<AppDir>
side-by-side.
The individual package folders in the app target directory lib\<AppDir>\<PackageName>
are created without a version number, to simplify building paths.
To determine, if a NuGet Package is already installed,
the existence of the *.nupkg
file of the main package
lib\<AppDir>\<PackageName>\<PackageName>.nupkg
is checked.