The Application ID is the string "$(click_package)_$(application)_$(version)" (without the quotes and with the obvious substitutions made). `click_package` is the dotted name of the click package; a package `com.ubuntu.foo_0.5_all.click` would have `click_package` of `com.ubuntu.foo`. `application` is the hook name from your `manifest.json` file (obtainable for an installed package with `click info com.ubuntu.foo`). The `manifest.json` will contain a section like: `"hooks": { "myapphookname": { "desktop": "FooApp.desktop" } }`. The `application` here is `myapphookname`. '''version''' is the installed version number. This ID is used for identifying the application throughout the system: * Click * Mir * HUD * [[../AppArmorProfile|AppArmorProfile]] * Content Hub * Download manager * Infographic (libusermetrics) * etc The following restrictions to the components apply, from various parts of the system: || || filesystem || store^1^ || apparmor^2^ || deb^3^^,^^4^ || intersection || || click_package || [^\0/]+ || [a-zA-Z0-9.-]+ || [a-zA-Z0-9+.:~-]+ || [a-z0-9][a-z0-9+.-]+ || [a-z0-9][a-z0-9.-]+ || || application || [^\0/]+ || || [a-zA-Z0-9+.:~-]+ || [a-zA-Z0-9+.-]+ || [a-zA-Z0-9+.:~-]+ || || version || [^\0/]+ || [0-9.]+ || [a-zA-Z0-9+.:~-]+ || [0-9][a-zA-Z0-9.+:~-]*|| [0-9][0-9.]* || 0. The store supports debian versioning (ie, same as the 'deb' entry) but the !AppStore interface uses a reduced scheme to keep it simple for users 0. [[https://wiki.ubuntu.com/SecurityTeam/Specifications/ApplicationConfinement/Manifest#Security_keys|security manifest definition]] 0. [[http://bazaar.launchpad.net/~click-hackers/click/trunk/view/head:/doc/file-format.rst|click file-format definition]] 0. [[http://bazaar.launchpad.net/~click-hackers/click/trunk/view/head:/doc/hooks.rst|click hooks definition]] Additionally, version should be structured more or less as you would expect, and be strictly monotonically increasing (new versions should always be greater than old versions). Alternate nomenclatures: * 'APP_ID' and '`${id}`' (from click documentation) are synomymous with '!ApplicationId'. The full regex for a valid APP_ID is:{{{ [a-z0-9][a-z0-9+.-]+_[a-zA-Z0-9+.-]+_[0-9][a-zA-Z0-9.+:~-]* }}} * 'click package name' ("name" in the click manifest) and 'APP_PKGNAME' are synonymous with $(click_package) * 'application name' and 'appname' are synonymous with $(application) * 'APP_VERSION' is synonymous with $(version) '''Note:''' as of 2013-09-18 only one $(application) is allowed per click package. Future versions will support specifying multiple $(application)s per click package (this is already supported in the click manifest and click-apparmor, where the keys to the click manifest's hooks dictionary define the values for each $(application)).