PHPackages                             mouf/archive-installer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. mouf/archive-installer

ActiveComposer-installer[Utility &amp; Helpers](/categories/utility)

mouf/archive-installer
======================

This is a simple installer that let's you create simple Composer packages that are actually downloading and extracting an archive from the web.

v1.0.2(12y ago)31.8k16MITPHPPHP &gt;=5.3.0

Since Jan 8Pushed 12y ago2 watchersCompare

[ Source](https://github.com/thecodingmachine/archive-installer)[ Packagist](https://packagist.org/packages/mouf/archive-installer)[ Docs](http://mouf-php.com)[ RSS](/packages/mouf-archive-installer/feed)WikiDiscussions 1.0 Synced 1mo ago

READMEChangelogDependenciesVersions (4)Used By (6)

Archive installer
=================

[](#archive-installer)

This is a simple installer that let's you create simple Composer packages that are actually downloading and extracting an archive from the web.

Downloading an archive from the web is actually already possible in Composer using the ["package" repository](http://getcomposer.org/doc/05-repositories.md#package-2), but this approach has a number of drawbacks. For instance, you cannot unpack the package in the root directory, or you cannot build dependencies easily upon that package.

Using the archive installer, you can let Composer install big packages that have no Composer package for you. For instance, you can build a Drupal installer just by writing a composer.json file.

A package implementing the archive installer should contain at least these statements in *composer.json*:

```
{
	...
	"type": "archive-package",
	...
	"extra": {
		"url": "http://exemple.com/myarchive.zip"
		"target-dir": "destination/directory",
		"omit-first-directory": "true|false"
	}
}

```

Please note that *target-dir* is relative to the root of your project (the directory containing the *composer.json* file). If *target-dir* is omitted, we default to the package's directory.

The *omit-first-directory* is useful if you download an archive where all the files are contained in one big directory. If you want the files without the container directory, just pass *true* to the *omit-first-directory* parameter (it defaults to false).

Detailed behaviour
------------------

[](#detailed-behaviour)

The archive installer is not a perfect implementation. Actually, it is kind of stupid. Here is what you might want to know:

It assumes that the downloaded file at the URL you pass will never change. Once a download and installation is performed, it will not download the file again, unless the URL changes. If the URL changes, it will download the new archive and overwrite any previous files.

If you uninstall the package, the downloaded files will not be removed (it is up to you to do the cleanup).

Working in team
---------------

[](#working-in-team)

You might wonder whether you should commit the downloaded files in your code repository or not.

Actually, it's up to you. You might want to let the other users run *composer install* to download the package, or you might as well commit the files. If you commit the files, we strongly suggest that you also commit the *download-status.txt* file too, that you can find at the root of your package. This way, when your team-mates will run *composer install*, the package will not be downloaded again. Of course, the opposite is equally true: if you do not commit the downloaded package, then you should not commit *download-status.txt*.

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~45 days

Total

4

Last Release

4744d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1104771?v=4)[mouf](/maintainers/mouf)[@Mouf](https://github.com/Mouf)

---

Top Contributors

[![moufmouf](https://avatars.githubusercontent.com/u/1290952?v=4)](https://github.com/moufmouf "moufmouf (12 commits)")

---

Tags

archivemoufdownloadinstall

### Embed Badge

![Health badge](/badges/mouf-archive-installer/health.svg)

```
[![Health](https://phpackages.com/badges/mouf-archive-installer/health.svg)](https://phpackages.com/packages/mouf-archive-installer)
```

###  Alternatives

[gemorroj/archive7z

7z cli wrapper

103963.0k1](/packages/gemorroj-archive7z)[bandwidth-throttle/bandwidth-throttle

Bandwidth throttle at application layer

87139.3k](/packages/bandwidth-throttle-bandwidth-throttle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
