| An app, a package, and metadata? |
An app is a set of features that you’re developing for your customers. Metadata is the technical representation of Salesforce features like custom objects, Apex classes, and Lightning pages. An app is composed of a set of metadata. A package is the container for your app’s Salesforce metadata. Packages are used to distribute the app that you build. When a package is installed in an org, the app’s metadata is deployed to the org. |
| A package and package version? |
Your app, and thus your package, evolves over time. Whenever you change, add, or remove
the metadata in your package, you create a new package version. Each package version is an
immutable artifact, a static snapshot of your metadata at a specific point in time. So while
your package evolves continuously, you take snapshots of it when it's in a stable state in
the form of a package version. Technically speaking, when we say “Install a package,” we
really mean install a specific package version. |
| A package install and package upgrade? |
A package install refers to the first time a version of the package is installed in an org. When a package is installed, the metadata associated with the package is deployed into the org. A package upgrade refers to the installation of a new package version in an org that already has a previous version of the package installed. During a package upgrade, metadata changes are deployed. An upgrade can include deploying new metadata, modifying existing metadata, or deleting or deprecating metadata. At any given point in time, an org can only ever have one version of a package installed in that org. |