# Publish a Pack

CMSIS-Pack: Publish a Pack

| CMSIS-Pack Version 1.5.0 Delivery Mechanism for Software Packs

- Main Page
- Usage and Description

All Pages
Publish a Pack

There are multiple ways to distribute a software pack:

# Local Installation

The easiest way to distribute a software pack is attaching it to an email or using other means of electronic distribution (for example using a company internal file server). The installation of a software pack is usually triggered by double-clicking the Pack file. The pack management tool is invoked and the Pack is installed on the local machine. After installation, the Pack will be shown in the list of installed packs (tool dependent). If the PDSC file does not contain a valid `<url>` element, a manual installation is required to update a software pack. Otherwise, pack management tools can check for updates on the server or the local machine that is specified by `<url>`.

Local installation and update from URL

Note
  For automatic updates on a local machine, specify the `<url>` using the file URI scheme.

# Web Download

Any web server can be used to host a software pack (specified by the `<url>` element in the PDSC file). At this location, the following files can be present:

1. <vendor>.<name>.pdsc [required]: pack description file.
2. <vendor>.<name>.<version>.pack [required]: pack file where <version> refers to the latest version specified in the PDSC file.
3. <vendor>.pidx [optional]: list with all packs hosted and maintained by the vendor (refer to Package Index File (pidx))
4. <vendor>.vidx [optional]: list of package index files known to the vendor (refer to Vendor Index File (vidx))

All previous versions listed in the <releases> section of the PDSC file should be present in that folder as well. This will enable customers to revert updates or to be able to download a specific version of a software pack (for code maintenance purposes for example).

Web installation and update

Note
  - It is important to understand how the <url> element works. If you specify a URL, for example www.keil.com/pack, then you have to make the PDSC file and the corresponding PACK file(s) available for download at that exact location. The naming of the files follow the standard naming rules. For example, the ARM::CMSIS PDSC and Pack files are available here:
    www.keil.com/pack/ARM.CMSIS.pdsc and
    www.keil.com/pack/ARM.CMSIS.5.0.1.pack and
    www.keil.com/pack/ARM.CMSIS.5.0.0.pack and ...
    At the specified location, you need to have one (unversioned) PDSC file and can have multiple versioned Pack files, but at least the latest one.
  - If the URL or the PDSC/Pack files become unavailable (temporarily or permanently), users will not be able to retrieve updates.
  - Do not replace PDSC/Pack files without updating the version number because the Pack management tools will not recognize the update unless the version has been changed.
  - Older packs should remain available.

# Publishing on www.keil.com/pack

Arm maintains a list of available software packs. If you wish to add your packs to that list, send either your vendor.pidx file or your PDSC file to the following email address: CMSIS@arm.com. The PIDX file will be processed and all referenced PDSC files will be validated. The following content will be processed in order to generate the web site (www.keil.com/dd2/pack) and index file (www.keil.com/pack/index.pidx):

- Version
- Release Notes
- Devices
- Boards
- Examples
- Software Components

Please allow up to seven working days for the process. If the files contain any errors, you will be notified. Otherwise, the information is added to the index server.

# Moving a pack from one URL to another

Sometimes, it is necessary to rehost a pack. This implies that you need to change the <url> element in the PDSC file. To ensure that the pack is found by the indexer of the keil.com server, follow this procedure:

- Create a new version of the pack: update the PDSC file with the new URL ("url_B") and make sure to increment the version
- Place a copy of this latest PDSC at url_B and url_A (the original URL).
- Place a copy of the new pack in url_B (only)
- Copy all packs from url_A to url_B
- Inform Arm about the new URL by either
  - updating the <vendor>.pidx with url_B for this pack or
  - sending a link to the PDSC file via email if your company does not maintain a <vendor>.pidx

Note
  - PDSC and pack versions need to be accessible from the same new URL
  - You must keep url_A alive as is. But there is no need to maintain/update url_A going forward otherwise users with an old PDSC file will no longer find the pack versions.