../../Personas/Mike learns about a new app, and wants to install it.
../../Personas/Mike opens the Dash to search, and enters the first part of the app's name, "foo". The Dash is already showing a list of results, which includes the app that ../../Personas/Mike is looking for.
The Dash queries the package index using ../../Interfaces/ClickPackageIndex. Query results include URLs for icons, but icons are fetched separately.
Are package descriptions actually needed in these results?
../../Personas/Mike taps the app to preview it, displaying a larger preview, some descriptive text, and installation size.
The Dash fetches package details using ../../Interfaces/ClickPackageIndex, which inludes the sames information as query results.
Ratings and reviews are fetched from using ../../Interfaces/RatingsAndReviews
- The graphical installer will query the Click packaging system to determine disk space cost of installing a new application or version. For instance, if it's just an upgrade on a single user system space used would be: sizeof(new) - sizeof(old). But if there is another user that has the same version it is: sizeof(new). If it's upgrading to a version already installed by another user and this user is the last user for the selected version it is: -1 * sizeof(old).
Seeing that it is well-rated, free, and not too big, ../../Personas/Mike taps the Install button.
The Dash gives the package name to the package downloader (how?).
- While the app is downloaded and installed to the device, the screen updates to show progress, then finally an Open button.
- The downloader fetches the package in the background and then installs it.
- Upon installation of the package there will be a set of hooks run. There are two types of hooks, system hooks and user hooks. An example of a system hook would be one that builds the apparmor profile and installs it. An example of a user hook would be one that takes the desktop file template and puts it in ~/.local/share/applications with paths that can be resolved to the user selected installed version of the app.
The Dash monitors download and installation progress how?
../../Personas/Mike is not asked to grant permissions to the app at this time.
Variation: Recommended app
Instead of searching in the Dash, Mike sees an interesting app recommended to him in the App Lense.
Variation: Paid app
The app costs money, but the amount is reasonable. ../../Personas/Mike taps the Install button, and then what?
Variation: Double-tap from results, free app
The screen updates to show progress and completion, but no open button in the current view.
Variation: Double-tap from results, paid app
Variation: 3rd-party app
../../Personas/Mike downloads or copies a click-package to his device, and then....
Variation: App with multiple launchers
Variation: A user installs an app already installed by another user
During installation, only the user-hooks are run, in the context of the new user; the system-hooks are not run.
Variation: A user install a paid app already installed by another user
The new user is billed the sames as if the app were not installed (i.e. apps are billed per-user).