Commit graph

14 commits

Author SHA1 Message Date
Filippos Karapetis
5b1e2d502c COMMON: Use C++ 11 range-based for loops 2025-03-27 13:47:57 +08:00
elasota
968aa2fcd6 COMMON: Add support for opening an InstallShield cab inside of an archive 2023-12-29 11:15:17 +02:00
Le Philousophe
93a8f7f4d6 COMMON: Move Archive API to Path 2023-12-24 13:19:25 +01:00
Le Philousophe
a700883e6f JANITORIAL: Fix spaces vs tab mismatch 2023-11-19 11:35:35 +01:00
Kaloyan Chehlarski
f5bed36b54 COMMON: Fix edge case in InstallShield file extraction
It is possible for a file table to contain multiple entries for
the same file, each with a different volume. This is valid,
and means that the file can be extracted from multiple .cab
files.
However, sometimes the header can report a file as existing
in multiple volumes despite it not actually being present in
all of them. The previous policy when encountering
duplicate entries was to just overwrite, which effectively
resulted in us keeping the last encountered entry, which
would be for the highest volume id. However, when an
erroneous entry mentioned above was encountered,
extraction would fail.
This commit makes it so we now keep the entry with the
lowest volume id, and discard the rest.
2023-11-09 22:18:11 +02:00
Kaloyan Chehlarski
3829b41235 COMMON: Allow creating InstallShield archive with FSNode
This is needed for cases where SearchMan is not applicable
(e.g. during detection)
2023-11-02 18:20:44 +01:00
Kaloyan Chehlarski
ab784bdd8b COMMON: Allow extraction of empty files from InstallShield cabs
It is not uncommon for an InstallShield cab to have file
entries with a size of 0; this commit makes sure that trying to
extract such a file won't result in a warning, and won't
cause a crash when calling dumpArchive() on the containing
cabinet file.
2023-10-28 16:19:34 +03:00
Le Philousophe
5bdd9e6f50 ALL: Unify zlib and gzio API
zlib is used when available and falls back on gzio.
This allows performance improvements as our CRC32 and gzio
implementations are slower than base zlib.
As zlib is available when libpng is present, this is sensible to
benefit from it.
2023-08-28 21:49:03 +02:00
elasota
b8acbe6bee COMMON: Archive path refactoring, add getFileName and getPathInArchive that unambiguously return the filename or the full path 2023-07-19 18:51:37 +02:00
Kaloyan Chehlarski
d99d325747 COMMON: Detect obfuscated and invalid files in InstallShield cabs
Files marked as invalid are now ignored in all IS versions. Trying to
extract an obfuscated file now results in a warning instead of just failing.
2023-04-09 13:02:30 +02:00
Kaloyan Chehlarski
ba11cf87cd COMMON: Fix incorrectly marked split files in InstallShield cabinets 2023-04-09 13:02:30 +02:00
Kaloyan Chehlarski
6efa793a25 COMMON: Fix InstallShield v5 file list reading
Fixed the InstallShield archive code to correctly load the file list in
multi-cabinet v5 archives.
2023-04-09 13:02:30 +02:00
Kaloyan Chehlarski
9fb08caa4e COMMON: Upgrade InstallShield archive code
Added support for files split across volumes, and for multi-volume
v5 archives to the InstallShield cabfile code.
2023-04-09 13:02:30 +02:00
Eugene Sandulenko
fb7095f5a4
COMMON: Move all compression-related files to a separate directory 2022-12-01 11:53:02 +01:00
Renamed from common/installshield_cab.cpp (Browse further)