______________________________________________________________________________

InnoUnp 0.50.8 mod                                             (c) 2015+ Pepak
https://www.pepak.net/                                   https://www.pepak.net
______________________________________________________________________________

  v0.50.8

    [-] Fixed an error from the last version, where an extraction without
        a -d argument would fail.

    [-] Fixed another error related to the support for empty directories
        from the last version: Observer apparently considers a directory
        name ending with a backslash differently than a directory without
        backslash, which resulted in the potential display of directories
        without a name.

    [-] Fixed a full failure to unpack very large archives (larger than
        2 GiB) in InnoSetup 6.5.0.0 or older.

    [*] Initial support for GoG.com archives. These archives show all of
        the content as the previous versions of InnoUnpMod, but in
        addition to that provide a "{GoG.com}" directory which contains
        the processed files. Either extract only this directory or all
        the "{tmp}" directory, otherwise you end up with twice the data!

        At the moment, error detection is very limited. Most errors are
        silently ignored while some cause full abort of archive
        extraction. This will be addressed in a future version. For the
        moment, I urge extreme caution while extracting.

        Known issues and limitations:

        1) Different language versions of the same file are handled by
           creating one file per language. For example, if the archive
           contains several "readme.txt" files, you will get files called
           "readme.txt,1", "readme.txt,2" etc. This will be addressed
           later.

        2) Some archives contain multiple components of the game, with
           different content for the same filename. For example, Baldur's
           Gate II contains both the base game and the addon, both of
           which contain a "baldur2.exe" with a different content. This
           is currently handled the same as case #1 above.

        3) Some game's archives are actually simple InnoSetup-based
           unpackers for RAR archives. In this case, InnoUnpMod only
           shows the InnoSetup part and doesn't do anything with the
           RAR part. Examples include Civilization 4 or Crysis. You
           can unpack the RAR archives using regular RAR tools.

        4) Classic Redux installer creates file "hires\sysfont_;_blue.png"
           but both InnoExtract and InnoUnpMod create
           "hires\sysfont_#3D_blue.png" instead. The contents of the setup
           archive contain the latter and there doesn't seem to be any way
           to determine whether a "#xx" in a filename should be converted
           to one character or kept as is.

        5) Many games, e.g. Leisure Suit Larry 1-6 or Wing Commander
           Prophecy, need that you use the "extract all copies" mode
           (command line argument -a) in addition to enabling GoG.com
           support, otherwise some files won't get extracted. This is
           a bug in how the original InnoUnp detects and handles
           duplicate files. It will be fixed later.

        Testing was done by extracting all archives I have both with
        InnoExtract and InnoUnpMod and comparing the differences in the
        generated files. This led to a discovery of several discrepances.
        Some of them are expected (e.g. InnoExtract names the application
        directory "app" while InnoUnpMod uses "{app}"), but some of them
        are not:

        1) Shadowrun Hong Kong, Truberbrook and Witcher 3 report a hash
           error in InnoExtract while no error is reported by InnoUnpMod.
           That follows the note about error detection above and as such
           is expected. What is unexpected is the fact that the two tools
           produce different extracted files. Presumably, this is caused
           by InnoExtract discarding invalid data while InnoUnpMod keeps
           it. I checked the generated data against the files created by
           the installer itself when you install the game normally and
           found that InnoUnpMod's data matches that of the installer,
           so I consider this behavior correct.

        2) In Shadow Warrior Classic Redux, InnoExtract uses incorrect
           names for certain files. According to the setup contents,
           a file should be called "hires\msgfnt_{_blue.png" but is
           actually called "hires\msgfnt__blue.png". InnoUnpMod's name
           matches that of the installers.

        All of this is only available for the INNOSETUPFILE builds of the
        application (which is the default) and, in case of the standalone
        executable, only if the "-g" option is used. The Observer version
        automatically enables this option, but you can disable it using
        the observer.ini file.

    [*] Support for controlling the Observer module's behavior through
        observer.ini: In order to enable InnoSetupMod in Observer, you
        had to add something like "Inno=modules\innounp.x64.so" to
        observer.ini. In this version, you can create a section "[Inno]"
        (or whatever the part before "=" is in the module definition)
        and put the following lines to it:
            ExtractEmbedded=1
            ExtractAllCopies=1
            AttemptUnpackUnknown=1
            GoG.com=1
        The value of 1 will enable the setting, 0 will disable it. The
        default settings mimic those of the previous versions, that is,
        all settings are enabled.

______________________________________________________________________________

  v0.50.7

    [*] Added support for InnoSetup 7.0 based on https://github.com/jrathlev/InnoUnpacker-Windows-GUI
        commit 13cfa9b.

    [*] Checked compatibility with Delphi 7 to 12.1. Not all versions in
        between were actually tested, but they should work either directly
        or with minor modifications to `Compatibility.pas`. Newer versions
        should work, Delphi 5 certainly won't be supported, Delphi 6 might
        work but I am not sure.

    [*] Fixed incompatibility with the non-INNOSETUPFILE build (broken in
        the previous version).

    [*] Fixed error where the empty directories specified by the archive
        wouldn't get created.

        Note: This only applies to InnoUnp itself, not the Observer module
        as Observer never asks the module to extract an empty directory.
        The module itself is ready and should work once Observer is fixed.

    [*] Fixed potentially incorrect extraction of huge archives in InnoSetup
        6.5.4+.
______________________________________________________________________________

  v0.50.6

    [*] Sychronized with https://github.com/jrathlev/InnoUnpacker-Windows-GUI
        commit 7821463. This brings all of the changes below:

    [*] Support for InnoSetup version up to 6.7.3.

    [*] Support for evaluation of custom messages in the rebuilt script.

    [*] Various minor enhancements to the rebuilt script.

    [*] Possibly fixed unpacking of setups larger than 2 GB. This is based
        on the commit 40d52c0, but I am not really certain that there is
        really anything to fix here in my version and I don't have any large
        setup to test with. So I tightened some of the values that seemed
        like they might possibly fail but didn't do anything too drastic.

    [*] Support for embedded PNG images in the rebuilt script.
        Note: commit 4f37232 shouldn't be needed for my version.

    [*] Minor fixes.
______________________________________________________________________________

  v0.50.5

    [*] Support for InnoSetup version 6.4, based on
        https://github.com/jrathlev/InnoUnpacker-Windows-GUI commit e88de8b.

    [*] Fixed the non-working build without InnoSetupFile (broken in version
        0.48.0).
______________________________________________________________________________

  v0.50.4

    [*] Support for InnoSetup versions 6.2 and 6.3, based on
        https://github.com/jrathlev/InnoUnpacker-Windows-GUI commit 6d6dfa6.
______________________________________________________________________________

  v0.50.3

    [*] Observer module: Don't request the password for an encrypted
        archive before it is needed to extract an encrypted file. It is
        now possible to view the contents of the encrypted archive and
        extract non-encrypted parts of it.

    [*] Fixed the extraction progress display. Observer expects the number
        of extracted bytes since the last report, I was sending the number
        of extracted bytes so far.

______________________________________________________________________________

  v0.50.2

    [*] Fixed support for encrypted archives (thanks Markus2).

    [*] Fixed the Observer module listing invalid files from the archives.

______________________________________________________________________________

  v0.50.1

    [*] Fixed bug with InnoSetup 6.1+ archives in the 64bit version.

______________________________________________________________________________

  v0.50.0

    [*] Synchronized with InnoUnp v0.50.

    [*] Updated libraries to their current version.

______________________________________________________________________________

  v0.49.1

    [*] Synchronized with Observer v1.12.

______________________________________________________________________________

  v0.49.0

    [*] Synchronized with InnoUnp v0.49.

______________________________________________________________________________

  v0.48.1

    [*] Fixed incorrect size calculation of sets in x64. That fixes failure
        to properly extract some new non-unicode setups such as
        FurMark_1.20.5.0_Setup.exe or tsetup.1.6.6.beta.exe.

______________________________________________________________________________

  v0.48.0

    [*] Synchronized with InnoUnp v0.48.

    [*] Fixed incorrect Unicode<->ANSI conversions in various versions of
        Delphi. Now the generated files should be the same regardless of
        the Delphi version and should always contain proper data. To achieve
        this, the file format for .iss and .isl files was changed to always
        use UTF8, unlike the original InnoUnp.

______________________________________________________________________________

  v0.47.2

    [*] Updated compatibility with Delphi 10.3 Rio

    [*] Support for 64bit build. Tested with Delphi 10.3 Rio Community,
        should work with Delphi XE6 and newer. Use argument "x64" with
        the building scripts.

______________________________________________________________________________

  v0.47 mod

    [*] Updated to InnoUnp v0.47.

    [*] Fixed non-working -m (extract embedded) switch in InnoUnp.exe.

    [*] Fixed incorrect encoding of some embedded files (e.g. license.txt)
        when extracted using InnoUnp compiled with unicode Delphi.

    [*] Fixed compilation with Delphi 7.

______________________________________________________________________________

  v0.46 mod

    [*] Updated to InnoUnp v0.46.
______________________________________________________________________________

  v0.45 mod 2

    [*] Several InnoUnp options were turned on for the Observer module:
        - Extract internal embedded files (-m), allows extraction of files
          used by the setup program during its operation, e.g. embedded
          images displayed to the user.
        - Extract all copies (-a), allows extraction of duplicate files.

    [*] Added the changelog.
______________________________________________________________________________

  v0.45 mod 1

    [*] Updated to InnoUnp v0.45 sources.

    [*] Updated to Observer v1.11.0 sources.
