dscharrer / innoextract

A tool to unpack installers created by Inno Setup
https://constexpr.org/innoextract/
Other
1k stars 125 forks source link

Checksum mismatch for output file / Installer itself extracting without error #128

Open Kazcade opened 2 years ago

Kazcade commented 2 years ago

I'm running into an issue with certain GOG installers (version 5.6.2) that extract/install fine on their own, but produce output mismatches when extracted via innoextract. Interestingly, -t doesn't even catch all mismatches and extracting the installer produces additional (but consistent) mismatched files. Tried on different machines with identical results.

Looking at the files themselves, parts of the files appear to be missing and just contain zeros instead. Has anybody encountered similar issues with GOG installers?

Kazcade commented 2 years ago

Addendum: I am runing into additional issues extracting certain GOG installers, for example the "They Are Billions" (1.1.4.10), which validates fine during testing, but throws this error during actual extraction:

I have no idea what the issue with those installers is, as they install fine otherwise. Again, are any of these known issues?

dscharrer commented 1 year ago

I don't have "They Are Billions" on GOG - have you encountered this error with any other games?

dscharrer commented 1 year ago

Possibly related to https://forge.dotslashplay.it/play.it/games/-/merge_requests/67#note_39175 as mentioned in #28.

Kazcade commented 1 year ago

Thanks for the reply, the linked issue seems to be identical to the one I am encountering, i.e. failure during extraction/appending of files.

I have encountered multiple other titles that exhibit this issue, among others the MechWarrior 5: Mercenaries and Art of Rally.

As far as I can tell extraction itself works fine, the error occurs when innoextract tries to combine/append the split-up parts of some gog galaxy style installers (most gog installers I have encountered now use this format). They are either appended in the wrong order or missing completely, which leads to the checksum mismatch of the file. Extracting just the [tmp] files shows that those checksums all match, and appending them manually / via batch script yields the correct file with the correct checksum.

Taking Art of Rally as an example, extracting the full files results in a mismachted *.res file (i'd have to check again, not at home right now) which results in missing level geomertry. Checking the corrupted file against the contained install script / iss and extracting and manually appending the corresponding split up part files yields a file with a matching checksum and results in correct level geometry.

Again, I don't think that extraction itself is the issue, it's how certain files are appended/recombined.

moll commented 11 months ago

I can just confirm that this seems to be an issue with Anvil Saga, a ~300 megabyte indie game, too:

Warning: Output checksum mismatch for AnvilSagaGOG/Anvil Saga_Data/resources.ass
ets:
 ├─ actual:   MD5 7867c096895d647127861d5648b4849b
 └─ expected: MD5 7ac087cfa1f8fa6a39a35e4ecb65403e
Warning: Output checksum mismatch for AnvilSagaGOG/Anvil Saga_Data/resources.ass
ets:
 ├─ actual:   MD5 bc1910375f8bd8fc0bbfaf74760671cf
 └─ expected: MD5 7ac087cfa1f8fa6a39a35e4ecb65403e
terminate called after throwing an instance of 'std::length_error'
  what():  basic_string::_M_create
zsh: IOT instruction (core dumped)  innoextract --extract --language en-US --exclude-temp --output-dir  
ymgve commented 3 months ago

I've encountered this error with a few GOG installers so far: