There are single-volume InstallShield cabs, consisting
just of data1.cab (and _sys1.cab and _user1.cab),
unshield is able to list the content of those cabs, but
fails to extract the files. This is the output of
unshield trying to extract the files from the Feeble
Files CD (english) data1.cab:
[bodo@nermal cab]$ unshield -D 3 x data1.cab
[unshield_fopen_for_reading:59] File data1.hdr not
found even case insensitive
[unshield_read_headers:232] Could not open .hdr file 1.
Reading header from .cab file 1 instead.
[unshield_read_headers:281] Version 0x01000004 handled
as major version 0
[unshield_get_cab_descriptor:81] Cabinet descriptor:
00000752 000044ab 000044ab 00000004
[unshield_get_cab_descriptor:83] Directory count: 1
[unshield_get_cab_descriptor:84] File count: 319
[unshield_file_group_new:15] File group descriptor
offset: 0000032a
[unshield_file_group_new:30] File group 0000032a first
file = 0, last file = 65536
[unshield_fopen_for_reading:59] File data2.hdr not
found even case insensitive
[unshield_read_headers:232] Could not open .hdr file 2.
Reading header from .cab file 2 instead.
[unshield_fopen_for_reading:59] File data2.cab not
found even case insensitive
Cabinet: data1.cab
extracting: ./Essential_Game_Files/0011.VGA
[unshield_fopen_for_reading:59] File data2.cab not
found even case insensitive
[unshield_reader_open_volume:267] Failed to open input
cabinet file 2
[unshield_reader_read:485] Failed to open volume 2 to
read 543 more bytes
Failed to extract file '0011.VGA'.
extracting: ./Essential_Game_Files/0012.VGA
[unshield_file_save:658] Decompression failed with code
-3. bytes_to_read=23220, volume_bytes_left=112414, volume=1
Failed to extract file '0012.VGA'.
and so on, most files get "Failed to open input cabinet
2", some get "Decompression failed".
This is with version 0.5 as well as the CVS-version
from today (2006-02-11).
Logged In: YES
user_id=337437
Are you really sure there is no data2.cab? The game comes on
4 CD:s, right?
Anyway, if I were to debug this I would need data*.cab...
Logged In: YES
user_id=286617
Yes, I'm sure. CDs 2 to 4 only contain game data, CD 1
additionaly contains the installer.
Files I think belong to the installer:
DATA.TAG
SETUP.EXE
SETUP.INI
_INST32.EX_
_ISDEL.EXE
_SETUP.DLL
_sys1.cab
_user1.cab
data1.cab
dsetup.dll
dsetup16.dll
dsetup32.dll
lang.dat
layout.bin
os.dat
setup.bmp
setup.ins
setup.lid
I'll contact you provately for the files.
Logged In: NO
I see this bug as well with the Feeble Files.
Mine is a 2 CD version, but neither CD contains data2.cab.
The 0.5 and CVS versions can show the file list from
data1.cab but the same errors as previously reported are
seen when trying to extract.
Logged In: NO
Further note :
strings on SETUP.EXE and SETUP.DLL from Feeble Files shows
Installshield V 5.00.212.0
but unshield 0.5 reports :
[unshield_read_headers:281] Version 0x01000004 handled as
major version 0
Could the wrong major version cause this fault?
Am going to check the installer with wine to see that it is
extractable and this isn't a duff batch of CDs, although
this seems unlikely.
Logged In: NO
Tried 0.5 with the following patch :
___
--- lib/libunshield.c.old 2006-06-08
01:19:29.000000000 +0100
+++ lib/libunshield.c 2006-06-08 01:10:52.000000000 +0100
@@ -271,10 +271,8 @@
header->major_version = (header->common.version >>
12) & 0xf;
-#if 0
if (header->major_version < 5)
header->major_version = 5;
-#endif
unshield_trace("Version 0x%08x handled as major
version %i",
header->common.version,
___
This results in the cab being treated as V5 as below :
[unshield_read_headers:279] Version 0x01000004 handled as
major version 5
but this still does not allow successful extraction
Logged In: YES
user_id=337437
The problem with Feeble Files that the version of
InstallShield used by this installation uses a different
compression library than every other I've seen!
Usually zlib is used, but this installation uses the PKWARE
Data Compression Library. I have some support to decompress
that one in a library called Dynamite [1] but it couldn't
extract the files right away when I tried.
You may find it easier to install the program in Wine [2]
(worked fine for me) and then do whatever you like with the
installed files.
[1] http://synce.sourceforge.net/synce/dynamite.php
[2] http://winehq.com
Logged In: NO
Thanks for this.
The following link is googled documentation for the PKWARE
DCL format.
Hope this might help this become supported in the future.
http://datacompression.info/LZSS.shtml
Logged In: YES
user_id=34715
Could the source code of i5comp be used as reference, for
adding support for decompressing this data1.cab file? since
i5comp is able to unpack the file, without any problems.
The i5comp21.rar package of i5comp, includes the source
code.
Logged In: YES
user_id=337437
As seen on http://synce.sourceforge.net/synce/dynamite.php I
used the newsgroup information about the PKWARE DCL format
for the Dynamite library and tool but I couldn't get it to
work with the Feeble Files' compressed data when I tried,
maybe because the library does not support all combinations
of compression supported by the PKWARE DCL format.
It might be an idea to patch Unshield to simply extract the
compressed data and then see if the Dynamite tool and
library can be adjusted to extract the data.
Logged In: YES
user_id=337437
Kirben: IIRC, the primary reason that i5comp only works on
Windows is that it uses InstallShield's own decompression
DLL to perform the actual decompression...
Logged In: YES
user_id=337437
I decided to have a look at this again (I even got a mail
about it from Steffen Pankratz... :-)
Anyway, all my previous statements are probably wrong,
wrong, wrong. This is most likely not the special PKWARE
Data Compression Library algorithm. Instead it is very, very
similar to zlib, but not exactly. I still havent made zlib
to decompress it happily though...
Logged In: YES
user_id=166507
Originator: NO
any news on this?
Logged In: YES
user_id=337437
Originator: NO
No news, sorry.
I can provide the compressed data from the .cab file if you are able to find a compression guru to help you understand the difference between this and all other cabinets that Unshield decompress with zlib.
Logged In: YES
user_id=1043774
Originator: NO
Marking bug as "Wont Fix" as there is little, or no, development on Unshield these days.
Feel free to re-open the bug if you feel it is necessary.
Regards,
Logged In: YES
user_id=230314
Originator: NO
With the following change (or hack :) in unshield/lib/file.c :
- err = inflate(&stream, Z_BLOCK);
+ err = inflate(&stream, Z_SYNC_FLUSH);
I am able to decompress the files from the .cab files of the french version of Feeble Files (which is based on IS 5.00.212.0), using the "old compression" setting (ie. unshield -O x data1.cab).
Note: Z_SYNC_FLUSH is exactly what the original IS DLL (ZD50149.DLL) uses to do the decompression.
Logged In: YES
user_id=337437
Originator: NO
Z_BLOCK or Z_SYNC_FLUSH does not make any difference for me, neither allows me to extract Qtime.smk from the english version (data1.cab MD5 sum 42eab1588c9523657ae90c1afb2d97f8) of Feeble Files... :-(
Actually, it *does* work, if one combines cyx' patch with that older patch which forces header->major_version = 5 -- after applying those two changes, I just managed to extract my copy of the Feeble files!
Would be great if this could be added to SVN / a future unshield release :)