Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,090 of 9,090 pages
About the help in other languages
All help pages

How the setup wizard uses packages

What the setup wizard does with packages, step by step - Site types (index download, list, download and import with requirements, upload), Package language options, and Create sites (install scripts and installation of…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/site-packages/basics/how-the-setup-wizard-uses-packages.md

On this page

How the setup wizard uses packages

This page is for administrators who run the web setup wizard and for developers who need to know what it does with packages behind the screens. It answers: where the list of site packages comes from, what is downloaded and when, where it goes, and how the chosen package becomes a site. The screens themselves, with every message, are described in The setup wizard; this page follows the packages.

Contents

  1. The steps that touch packages
  2. Site types: building the list
  3. Site types: choosing a package
  4. Site types: uploading a package
  5. Package language options
  6. Create sites
  7. Where the files go
  8. When something fails
  9. Related pages

The steps that touch packages

The wizard's steps are listed in kernel/setup/steps/ezstep_data.php (StepTable). Three of them work with packages:

StepClass and fileWhat it does with packages
Site types ("Site package" on screen)eZStepSiteTypes, ezstep_site_types.phpReads the index, lists the site packages, downloads and imports the chosen one and its requirements
Package language optionseZStepPackageLanguageOptions, ezstep_package_language_options.phpCompares the languages of the required packages with the site's languages
Create siteseZStepCreateSites, ezstep_create_sites.phpRuns the install scripts and installs the required packages

Note

There is a fourth step class for packages, eZStepSitePackages (ezstep_site_packages.php, "Site functionality", choosing additional packages), but its entry in StepTable is commented out: the wizard never shows it, and its kickstart.ini keys have no effect. It stays off on purpose (checked for 6.0.15): it offers the packages of the 3.x "addons" repository by the lists of eZSetupFunctionality(), a function that no longer exists, so the step would stop with a fatal error, and no package of the index is an addon. What it was for is covered otherwise: a site package's requirements, down the whole chain, are downloaded by Site types and installed by Create sites.

Site types: building the list

When the step is built, it works out the index address from settings/package.ini:

[RepositorySettings]
RemotePackagesIndexURL=https://exponential.packages.exponential.earth/exponential/6.0/6.0.15
RemotePackagesIndexURLBase=https://exponential.packages.exponential.earth/exponential

RemotePackagesIndexURL is used when it is not empty; otherwise the base plus /<major.minor>/<full version>/. The step appends index.xml. Then, on every display:

  1. Remote list. Download index.xml into the cache directory's packages/ folder (with the retries of DownloadAttempts and DownloadRetryDelays[], see Package server settings), parse it, delete the copy, and keep the entries whose type is site. If the download fails, use index.xml from the system repository (var/storage/packages/<Vendor>/index.xml, Vendor=7x) when there is one. From 6.0.15 on the index of every further package server follows, adding the packages the earlier ones do not list (Further package servers).
  2. Local list. Every package of type site already in the local repository, in any vendor directory.
  3. Status of requirements. For each local site package, each <require> is marked imported when a package of that name exists with a version that meets its min-version.
  4. Merge. One entry per name. A local package wins, unless the remote entry's version compares higher (eZPackageVersion::compareFull()). An entry without a download URL counts as imported.
  5. Preselect the first imported site package, so Next installs it without a download.

The page also shows the index address ("Remote repository URL") so you can see which server is used.

Site types: choosing a package

The radio button posts eZSetup_site_type: the plain name for an imported package, name|url for a remote one. On Next (eZStepSiteTypes::processPostData()):

ChoiceWhat happens
A remote entrydownloadAndImportPackage() in force mode: an imported copy of the same name is removed from the repository first, then the archive is downloaded, imported with eZPackage::import(), and the downloaded file is deleted
An imported entryThe package is fetched from the repository; nothing is downloaded

Then, in both cases, downloadDependantPackages() checks every <require> of the site package: kept when imported and new enough, otherwise removed and downloaded again from the URL the index gives. The rules are in Dependencies and install order. Only after all requirements are in does the wizard go on.

Site types: uploading a package

The Upload package field (PackageBinaryFile, button UploadPackageButton) imports an .ezpkg from your computer with eZPackage::import() and shows the same page again, now with the package in the local list. This is how you install a site package that is not on the package server, or install without network access. A package that is already imported is not imported again (a warning is logged); anything that is not a package gives "Uploaded file is not an Exponential package". The archive is checked as described in The .ezpkg file.

Package language options

The step reads the languages of the content classes and objects in the packages the site package requires (eZPackage::languageInfoFromPackageList()) and compares them with the languages you chose. Only when packages carry other languages does it ask what to do with them (create, map to a site language, or skip). The answer is kept as the language_map that the Create sites step passes to each package's install.

Create sites

The step that writes the site. For packages it:

  1. Fetches the chosen site package from the repository (EZSW-041 "Could not fetch site package" when it cannot).
  2. Includes the site package's install scripts and calls eZSitePreInstall() (Install scripts in a site package).
  3. Logs in the administrator (user 14), so the content is created by that user.
  4. For every <require type="ezpackage"> of the site package, in order: fetches it (EZSW-050 when missing) and, when its install_type is install, installs it non-interactively with the site's siteaccess, design, top node 2 and language map (EZSW-051 when it fails).
  5. Builds the settings and roles with the INI, role and preference hooks, and calls eZSitePostInstall().

The site package itself is never installed: it is install_type="import" and has no items.

Where the files go

WhatWhere
The downloaded index.xml and .ezpkg files, while they are usedthe cache directory, packages/ (deleted after use)
The extracted definition during importthe cache directory, packages/import/ (deleted after use)
Every imported packagevar/storage/packages/<vendor directory>/<name>/
What the packages installthe database, extension/, design/, settings/, as each handler does
The record that a package is installedthe ezpackage table

When something fails

SymptomLikely causeRead
"Retrieving remote site packages list failed"No connection to the package server and no local index.xmlWhen the package server cannot be reached
"Download of package ... failed after N attempts"The server or a proxy answered with errorssame, and Offline installs and mirrors
"Download of package ... failed. You may upload the package manually." for a requirementThe index does not list the required nameThe index.xml format
EZSW-050A required package is not in the repositoryThe local package repository
EZSW-051An install item of a required package failedthe setup log, var/log/setup.log, and Install items and handlers
EZSW-080The site package's post-install stoppedInstall scripts in a site package

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x