source $GRIMOIRE/CMAKE_FUNCTIONS
           SPELL=unshield
         VERSION=1.5.1
          SOURCE=${SPELL}-${VERSION}.tar.gz
   SOURCE_URL[0]=https://github.com/twogood/unshield/archive/${VERSION}.tar.gz
     SOURCE_HASH=sha512:acb130c461bed66dc3804394be067a68aea96a7cd20b348e713f64a11bf642b74f68fc172f220a9790b44573abbe01ed4585191158f27c40e863918a7342c1ca
SOURCE_DIRECTORY=${BUILD_DIRECTORY}/${SPELL}-${VERSION}
        WEB_SITE=http://synce.sourceforge.net/synce/unshield.php
         ENTERED=20050717
      LICENSE[0]=MIT
        KEYWORDS="archive"
           SHORT="An extractor for InstallShield files."
cat << EOF
An installer created by the InstallShield software stores the files it will
install inside of InstallShield Cabinet Files. It would thus be desirable
to be able to extract the Microsoft Cabinet Files from the InstallShield
Cabinet Files in order to be able to install the applications without access
to Microsoft Windows.

The format of InstallShield Cabinet Files is not officially documented but
there are two tools available for Microsoft Windows that extracts files
from InstallShield installers, and they are distributed with source code
included. These tools are named "i5comp" and "i6comp" and can be downloaded
from the Internet.

One major drawback with these tools are that for the actual decompression of
the files stored in the InstallShield Cabinet Files they require the use of
code written by InstallShield that is not available as source code. Luckily,
by examining this code with the 'strings' tool, I discovered that they were
using the open source zlib library (www.gzip.org/zlib) for decompression.

I could have modified i5comp and i6comp to run on other operating systems
than Microsoft Windows, but I preferred to use them as a reference for this
implementation. The goals of this implementation are:

    * Use a well known open source license (MIT)
    * Work on both little-endian and big-endian systems
    * Separate the implementation in a tool and a library
    * Support InstallShield versions 5 and later
    * Be able to list contents of InstallShield Cabinet Files
    * Be able to extract files from InstallShield Cabinet Files
EOF
