Install from Package.
Apply updates from a downloaded zip file using the admin dashboard.
Install from Package lets you apply updates from a zip file you've already downloaded. Place the zip on your server, and the admin dashboard handles the rest — backup, extraction, migration, and cache clearing.
This is useful when:
- Your support license has expired (the update server requires active support, but if you have the zip you can install it)
- You want to verify the exact version before installing
- You prefer downloading updates separately from applying them
Important: Install from Package uses the same background updater as dashboard updates. Your server must support the
exec()PHP function. If your hosting disablesexec(), use Manual File Replacement instead.
How It Works
- You place the zip file in
storage/app/manual-update/on your server - The License & Updates page detects it and shows the version
- You click Apply Update
- The system creates a full backup, extracts, copies files, runs migrations, and clears caches
The process is identical to a dashboard update — the only difference is where the zip comes from.
Step by Step
1. Download the update
Download the latest version from the purchase store. The file name doesn't matter — the system reads the version from inside the archive.
2. Upload to your server
Upload the zip file to:
storage/app/manual-update/
Use FTP, SFTP, or your hosting file manager. The file must be a .zip archive. You can place multiple zip files in this directory — the dashboard will list all of them.
💡 Tip: The directory is at the same level as
storage/app/backups/. If you can find your backups directory,manual-updateis right next to it.
3. Open License & Updates
Log in as an administrator and navigate to License & Updates in the sidebar. Scroll down to the Install from Package card.
The card shows each detected package with:
- Version number extracted from the archive
- Status badge: Upgrade, Reinstall, or Downgrade relative to your current version
- File size of the zip
4. Apply the update
Click Apply Update next to the package you want to install. A confirmation dialog appears showing the version and update type.
After confirming, the system:
- Creates a full backup of your installation
- Extracts the package (handles the standard download structure automatically)
- Copies new files while preserving protected paths
- Clears OPcache and bootstrap cache
- Runs database migrations
- Shows a progress page with real-time status
The zip file is not deleted after installation — you manage files in this directory yourself.
Package Format
The system accepts zip files with any filename. It reads the version from config/version.php inside the archive.
Several common structures are handled automatically:
- Direct layout:
app/,public/,config/at the root of the zip - Named wrapper:
reward-loyalty/app/,reward-loyalty/public/, etc. - Download wrapper:
Product-Name-vX.Y.Z/public_html/app/, etc.
If the system cannot locate a valid application structure (a directory containing both app/ and public/), the package will show as "Unrecognized" and cannot be installed.
Requirements
Install from Package has the same server requirements as dashboard updates:
exec()PHP function must be enabled (typically available on VPS hosting)- PHP ZipArchive extension for extracting the package
- Sufficient disk space for the backup and extracted files
If your hosting provider disables exec(), this method will not work. Use Manual File Replacement instead — it requires only FTP access.
Troubleshooting
Package shows "Unrecognized"
The system couldn't find config/version.php inside the zip, or the archive doesn't contain a valid application structure. Verify you're using the correct zip file (the full product download, not a partial export).
500 Error After Update
If your site shows a 500 error after updating, delete the contents of bootstrap/cache/ on your server and reload the page. The update process clears this automatically, but in rare cases a cached file may persist.
rm -f bootstrap/cache/*.php
Update fails with "exec() disabled"
Install from Package requires the same exec() function as dashboard updates. It is not the shared-hosting fallback. Use Manual File Replacement for environments without exec().