Packages enable the importing and exporting of repository content. For example, you can use packages to install new functionality, transfer content between instances, and back up repository content.
Packages can be accessed and/or maintained from the following pages:
- Package Manager, which you use to manage the packages in your local AEM instance.
- Package Share, a centralized server holding both publicly available packages and those private to your company. The public packages can contain hotfixes, new functionality, documentation, etc.
You can transfer packages between Package Manager, Package Share, and your file system.
A package is a zip file holding repository content in the form of a file-system serialization (called "vault" serialization). This provides an easy-to-use-and-edit representation of files and folders.
Packages include content, both page-content and project-related content, selected using filters.
A package also contains vault meta information, including the filter definitions and import configuration information. Additional content properties (that are not used for package extraction) can be included in the package, such as a description, a visual image, or an icon; these properties are for the content package consumer and for informational purposes only.
Packages represent the current version of the content at the time the package is built. They do not include any previous versions of the content that AEM keeps in the repository.
You can perform the following actions on or with packages:
- Create new packages; defining package settings and filters as required
- Preview package contents (before build)
- Build packages
- View package information
- View package contents (after build)
- Modify the definition for existing packages
- Rebuild existing packages
- Rewrap packages
- Download packages from AEM to your file system
- Upload packages from your file system into your local AEM instance
- Validate package content before installation
- Perform a dry run installation
- Install packages (AEM does not automatically install packages after uploading)
- Delete packages
- Download packages, such as hotfixes, from the Package Share library
- Upload packages to the company-internal section of the Package Share library
You can edit a variety of Package Settings to define aspects such as the package description, related bugs, dependencies and provider information.
|Name||The name of the package.|
|Group||The name of the group to add the package to, for organizing packages. Type the name of a new group, or select an existing group.|
|Version||Text to use for the custom version.|
|Description||A brief description of the package. HTML markup can be used for formatting.|
|Thumbnail||The icon that appears with the package listing. Click Browse to select a local file.|
|Name||The name of the provider.||AEM Geometrixx
|URL||URL of the provider.||http://www.aem-geometrixx.com|
|Link||Package-specific link to a provider page.||http://www.aem-geometrixx.com/mypackage.html|
Specify how the access control information defined in the package is handled when the package is imported:
The default value is Ignore.
|Tested With||The product name and version this package is targeted to or is compatible with.||AEM6|
|Fixed Bugs/Issues||A text field allowing you to list details of bugs fixed with this package. Please list each bug on a separate line.||bug-nr summary|
|Depends on||Lists dependency information that needs to be respected whenever other packages are necessary to let the current package run as expected. This field is important when using hotfixes.||groupId:name:version|
|Replaces||A list of deprecated packages that this package replaces. Before installing, check that this package includes all necessary content from the obsolete packages so no content is overwritten.||groupId:name:version|
Filters identify the repository nodes to include in the package. A Filter Definition specifies the following information:
- The Root Path of the content to include.
- Rules that include or exclude specific nodes below the root path.
Filters can include zero or more rules. When no rules are defined, the package contains all content below the root path.
You can define one or more filter definitions for a package. Use more than one filter to include content from multiple root paths.
|include||You can define a path, or use a regular expression to specify all the nodes that you want to include.
Including a directory will:
|exclude||You can specify a path or use a regular expression to specify all the nodes that you want to exclude.
Excluding a directory will exclude that directory and all files and folders in that directory (i.e. the entire subtree).
One package can contain multiple filter definitions, so that nodes from different locations can easily be combined into one package.
Package filters are most often defined when you first create the package, but they can be edited at a later time as well (after which the package should be rebuilt).
You can attach screenshots to your package to provide a visual representation of what the content looks like; for example, by providing screenshots of new functionality.
You can also attach an icon to your package to provide a quick-reference visual representation of what the package contains. This is then shown in the package list and can help you easily identify the package, or the class of package.
To avoid confusion, use a descriptive icon for your package and do not use one of the official icons.
The Package Manager manages the packages on your local AEM installation. After you have assigned the necessary permissions you can use the Package Manager for various actions, including configuring, building, downloading and installing your packages. The key elements to be configured are:
To grant users the right to create, modify, upload, and install packages, you must give them the appropriate permissions at the following locations:
- /etc/packages (full rights excluding delete)
- the node that contains the package contents
See Setting permissions for instructions on changing permissions.
- Group Name
The target group (or folder) name. Groups are intended to be used to help you organize your packages.
A folder will be created for the group if it does not already exist. If you leave the group name blank, it will create the package in the main package list (Home > Packages).
- Package Name
The name of your new package. Select a descriptive name to help you (and others) easily identify the contents of the package.
A textual field for you to indicate a version. This will be appended to the package name to form the name of the zip file.
Click OK to create the package.
- Group Name
Add Screenshots to the package as required. One instance is available when the package is created, add more if required by using Package Screenshot from sidekick.
Add the actual image by double-clicking the image component in the Screenshots area, adding an image, and clicking OK.
Define the Package Filters by dragging instances of the Filter Definition from the sidekick, then double-clicking to open for editing:
- Root Path
The content to be packaged; this can be the root of a subtree.
Rules are optional; for simple package definitions, it is not necessary to specify include or exclude rules.
If needed, you can define either Include or Exclude rules to exactly define the package contents.
Add rules using the + symbol, alternatively remove rules using the - symbol. Rules are applied according to their order so position them as required using the Up and Down buttons.
Then click OK to save the filter.
You can use as many filter definitions as you need, though care must be taken to ensure they do not conflict. Use Preview to confirm what the package contents will be.
- Root Path
A package is often built at the same time as you create the package definition, but you can return at a later point in time to either build, or rebuild the package. This can be useful if the content within the repository has changed.
Before building the package it can be useful to preview the contents of the package. To do this click Preview.
Once a package has been built it can be rewrapped, if required.
Rewrapping changes the package information - without changing the package content. Package information is the thumbnail, description, etc., in other words everything you can edit with the Package Settings dialog (to open this click Edit).
A major use case for rewrap is when preparing a package for the package share. For example, you might have an existing package and decide to share it with others. For that you want to add a thumbnail and add a description. Instead of recreating the entire package with all its functionality (which might take some time and bears the risk that the package is no longer identical to the original) you can rewrap it and just add the thumbnail and description.
Click the package icon of the package you want to view. This will open the package page listing information about the package definition:
You can also edit and perform certain actions on the package from this page.
The buttons available will depend on whether the package has already been built or not.
This section describes how to download a package from AEM to your file system by using Package Manager.
See Package Share for information on downloading hotfixes, feature packs, and packages from the public area and your company's internal area of package share.
From Package Share you can:
- download packages from Package Share directly into your local AEM instance.
Upon download the package is imported into your repository, after which you can immediately install it on your local instance using the Package Manager. These packages include hotfixes and other shared packages.
- download packages from Package Share to your file system.
See Uploading packages to the company-internal Package Share to upload a package to your company's private area of Package Share.
You can either type the file name directly, or use the Browse... dialog to select the required package from your local file system (after selection click OK).
- Force Upload
If a package with this name already exists you can click this to force upload (and overwrite the existing package).
Click OK so that the new package is uploaded and listed in the Package Manager list.
To make the content available to AEM, be sure to install the package.
Before installing a package, you may wish to verify its content. Because packages can modify overlaid files under /apps and/or add, modify, and remove ACLs, it is often useful to validate these changes before installing.
The validation mechanism can check the following characteristics of the package:
- OSGi Package Imports
This validation inspects the package for all JAR files (OSGi bundles), extracts their manifest.xml (which contains the versioned dependencies on which said OSGi bundle relies) and verifies the AEM instance exports said dependencies with the correct versions.
How It's Reported
Any versioned dependencies that cannot be satisfied by the AEM instance are listed in the Activity Log of the Package Manager.
If dependencies are unsatisfied, then the OSGi bundles in the package with those dependencies will not start. This results in a broken application deployment as anything relying on the un-started OSGi bundle will in turn not function properly.
To resolve errors due to unsatisfied OSGi bundles, the dependency version in the bundle with unsatisfied imports needs to be adjusted.
This validation determines if the package being installed contains a file that is already overlaid in the destination AEM instance.
For example, given an existing overlay at /apps/sling/servlet/errorhandler/404.jsp, a package that contains /libs/sling/servlet/errorhandler/404.jsp, such that it will change the existing file at /libs/sling/servlet/errorhandler/404.jsp.
How It's Reported
Any such overlays are described in the Activity Log of the Package Manager.
An error state means that the package is attempting to deploy a file that is already overlaid, thus the changes in the package will be overridden (and thus "hidden") by the overlay and not take effect.
To resolve this issue, the maintainer of the of the overlay file in /apps must review the changes to the overlaid file in /libs and incorporate the changes as needed into the overlay (/apps), and redeploy the overlaid file.
Note that the validation mechanism has no way to reconcile if the overlaid content has been properly incorporated into the overlay file. Therefore this validation will continue to report over conflicts even after the necessary changes have been made.
This validation checks which permissions are being added, how they will be handled (merge/replace), and if the current permissions will be impacted.
How It's Reported
The permissions are described in the Activity Log of the Package Manager.
No explicit errors can be provided. The validation simply indicates whether any new ACL permissions will be added or impacted by installing the package.
Using the information provided by the validation, the impacted nodes can be reviewed in CRXDE and the ACLs can be adjusting in the package as needed.
As best practice it is recommended that packages should not affect AEM-provided ACLs as this may result in unexpected product behavior.
Validation of packages can be done in two different ways:
- Via the Package Manager UI
- Via HTTP POST request such as with cURL
Validation should always occur after uploading the package but before installing it.
The type parameter can be any comma separated unordered list consisting of:
The value of type defaults to osgiPackageImports if not passed.
The response to a validation HTTP POST request will be a JSON object with the results of the validation.
Installing a package can overwrite or delete existing content. Only upload a package if you are sure that it does not delete or overwrite content that you need.
To see the contents, or impact, of a package you can:
- Perform a test installation of the package without modifying any of the contents:
Open the package (click on the package icon or name) and click Test Install.
- See a list of package contents:
Open the package and click Contents.
Immediately prior to installation of your package, a snapshot package is created to contain the content that will be overwritten.
This snapshot will be re-installed if/when you uninstall your package.
If you are installing digital assets, you must:
- First, deactivate the WorkflowLauncher.
Use the Components menu option of the OSGi console to deactivate com.day.cq.workflow.launcher.impl.WorkflowLauncherImpl.
- Next, when installation is complete, reactivate the WorkflowLauncher.
Deactivating the WorkflowLauncher ensures that the Assets importer framework does not (unintentionally) manipulate the assets upon installation.
There is an alternative way to upload and install packages to your instance. In your file system, you have a crx-quicksart folder alongside with your jar and license.properties file. You need to create a folder named install under crx-quickstart. You will then have something like this: <aem_home>/crx-quickstart/install
In this install, folder, you can add directly your packages. They will automatically be uploaded and installed on your instance. When it's done, you can see the packages in the Package Manager.
If your instance is running, adding a package to the install folder will launch directly the upload and the installation on the instance. If your instance is not running, the packages you put in the install folder will be installed at startup in the alphabetical order.
You can also do this before even starting the instance for the first time. To do that, you need to create the crx-quickstart folder manually, create the install folder under it and put your pacakges there. Then when you launch your instance for the first time, the packages will be installed in the alphabetical order.
AEM lets you uninstall packages. This action reverts the contents of the repository that are impacted to the snapshot made immediately prior to the package installation.
Upon installation, a snapshot package is created containing the content that will be overwritten.
This package will be re-installed when you uninstall the package.
The installed files/nodes from the package are not deleted.
If this package has already been installed, then the installed content will not be deleted.
The Package Share is a centralized server made publicly available to share Content-Packages.
With Package Share, you can download these packages, which can include official hotfixes, feature sets, updates or sample content generated by other users.
You can also upload and share packages within your company.
There is no anonymous access to the Package Share; that is, only registered users are allowed to view, download and upload packages.
Access to the Package Share is available for our partners and customers. Registration details must be submitted for access rights to be assigned.
To gain access to Package Share:
Any Package Share user that has not been assigned to a customer, must join a community to see those resources by clicking Join next to the package share login.
Then select Package Share. You will be required to either:
- login with your Adobe ID
- Create an Adobe ID
The first time you login with your Adobe ID, you must complete the validation of your email address.
If you have forgotten your password, please use the Help pages link (also on the sign in dialog).
The first time you sign into Package Share with your Adobe ID your email address will be validated.
- You will receive an email containing a link.
- You need to click on this link.
- A webpage will be opened.
The action of opening this webpage is taken as validation.
- Sign in will continue.
If you need access to Package Share, you will need to register for an Adobe ID:
- The Package Share sign-in page offers a link for registering an Adobe ID.
- You can register for an Adobe ID from certain Adobe desktop software.
- Alternatively, you can register online on the Adobe Sign In page.
An Adobe ID can be created by providing:
- your e-mail address
- a password of your choice
- some additional information such as your name and country of residence
The validity of your application will be checked before:
- Your user account is created with the required/allowed permissions.
- Your account is added to your company's group.
A user from one of our partner companies can also be a member of his/her customer groups.
You may experience problems when trying to access Package Share from a pure IPv6 environment.
This is because package share is service hosted on a server, meaning your connection is made through various networks on the internet. It cannot be ensured that all the connecting networks support IPv6; if not the connection might fail.
To avoid this issue, you can access Package Share from an IPv4 network, download the package and then upload it to the IPv6 environment.
Package Share is currently unavailable if your company runs an http proxy that requires authentication.
Package Share is only available when your AEM server has access to the Internet without authentication being required. To configure the proxy for all services that use the http client (including package share) use the OSGi configuration of the Day Commons HTTP Client 3.1 bundle.
In Package Share packages are arranged in tree subtrees:
- Adobe packages provided by Adobe.
- Shared packages that have been provided by others companies and have been made public by Adobe.
- Your company packages that are private.
Package Share offers a search bar you can use for searching specific keywords or/and tags. Both keywords and tags support multiple values.
- To search for multiple keywords you have to separate each keyword by a space.
- To search for multiple tags you have to select each of them in the package trees.
You can also change the conditional operator from OR to AND on the right side of the filter summary bar.
To download packages from Package Share and install them on your local instance, it is easier to access Package Share from your AEM instance. This will download the package and immediately register it in your Package Manager, from where it can be installed.
Using your account details, log into Package Share. The landing page is shown, listing the Adobe folder, the Shared folder and one specific to your company.
Before starting to download packages from Package Share, make sure you have the required access.
Go back or navigate to the Package Manager on your AEM instance. Then navigate to the package you just downloaded.
To find the package you downloaded, follow the same path as in Package Share. For example, if you downloaded a package from the following path in Package Share:
Packages > Public > Hotfixes
Then in Package Manager on your local instance the package will also appear under:
Packages > Public > Hotfixes
If the package has already been installed on your instance, the Installed indicator appears next to the package instead of the Install button.
Installing a package can overwrite existing content in the repository. Therefore, we recommend that you perform a Test Install first. This allows you to inspect whether the content that the package contains conflicts with your existing content.
Downloading and installing is very convenient, but if required you can also download the package and save it to your local file system:
With Package Share, you can upload packages to your company-internal area of package share. This makes them available for sharing within your company.
These packages are not available to the general AEM community, but are available to all users registered with your company.
To upload a package to Package Share, you first have to create a group folder named after your company on your local Package Manager. For example, geometrixx. All packages to be uploaded for sharing must be placed in this group folder.
Packages in the Package Manager home list or in other folders cannot be shared.
To modify a package available on Package Share, you need to download it, re-build it, and then upload it again to Package Share.
You can share packages outside your organization, but not publicly. These packages would be considered as semi-private. To share these semi-private packages you will need some help from Adobe Support. To do this, open a ticket with Adobe Support requesting a package be made available outside your organization. They will ask you for a list of Adobe ID's you want to grant access to your packages.