Jump to content

Recommended Posts

Posted

I have a old WinXP ISO file that I want to use on an old computer.

However, upon booting from the image (via USB thumb drive) the WinXP claims that some files are either corrupt or not found.

Namely: shell32.dll, and others. Just a few.

 

Is there a way to repair the ISO, by replacing the problem files?

 

After "expanding" the ISO image to a local hard disc, I could browse to the files in question, but they are in what I assume is some kind of compressed format: shell32.dl_, etc.

I have another machine that I put this particular ISO installation on (years ago) and I found and copied shell32.dll, and others in hopes of somehow "replacing" the *.dl_ files on the bad ISO image.

 

Is there a way to properly "compress" (I assume), the good files from *.dll to *.dl_, etc. and then replace the bad files in the ISO?

The files in question are on the ISO image in the ..\I386 folder.

 

Thanks in Advance


Posted (edited)

Yes, most files in a XP .iso are compressed.

The program(s) used to compress them are COMPRESS and MAKECAB (and possibly also CABARC).

I would try to use first compress (the version that is in the Windows 2003 Resource Kit which can be found on archive.org):

https://ss64.com/nt/compress.html

You need of course exactly the same version of the files (both the compressor and the actual file to be compressed) so that the compressed file is exactly the same size of the original.

Then it is relatively easy to replace the files (actually the bytes representing the files to be replaced) on the .iso image, it is not straightforward, but on a .iso all files should be contiguous so it should be just a matter of locating the position of the file inside the ,iso image and then overwrite with dd or similar the appropriate extent.

It has to be checked but either DMDE or ISOBUSTER should be capable of doing this.

Otherwise (if you actually need the .iso file) you will need to rebuild the .iso (using either CDIMAGE or MKISOFS) and this may be more difficult (both utilities have lots of settings that need to be used correctly), but it is of course doable.

I don't want to put you down in any way, but if you have some corruption in the files, there may be other corruption in other files that you simply couldn't notice because (due to the errors you had) you did not go far enough in the install, so it might take more time and effort than what you may expect.

jaclaz

 

Edited by jaclaz
Posted

Thank you jaclaz......

For responding directly to the issue. (Some responses suggest acquiring another copy, etc.)

I'm curious about these things and it's about approaches to solving problems directly, with purpose and understanding, not by mindless "re-starting".

I have compared the file info to my old system live files. Luckily the properties of the damaged files are not corrupt and matches the version number of the older working system equivalent files.

I will definitely verify and compare all versions of files discovered to be corrupt or damaged, knowing that they should be exact.

 

Also, once I know how to compress the older system working equivalent files, I intended use an ISO "writer" to copy over the corrupt files in the ISO image.

I am assuming that WinISO and others that can write directly to the image can write over the corrupt files, hopefully replacing them exactly with no corruption of the image.

I have written to ISO expanded images before with no real issue as in the case when I updated the UNATTEND.TXT file in the ISO and the "new" ISO worked fine.

 

Binary overwrite of the ISO with the exact compressed files may require careful preparation and steps, but I'll try opening the image to a folder, overwrite the compressed files with the new ones, then rebuild the ISO, and test the installation process and post process.

You bring up a good point though, other files may be corrupt as well and not discovered until far after the installation when the file is actually needed by a Windows process.

The journey of discovery of how things work is the fun part.

I'll post here how it goes.

Thanks for your advice and guidance.

JP

Posted (edited)

Personally I wouldn't use Winiso (or any other of the "advanced/automagic" tools to recreate the .iso, let alone a "writing to .iso tool".

"Iso writing" may or may not work, of the two I would prefer rebuilding the whole .iso from "source".

But if you are using <some way> to mount the .iso stored on a USB thumb drive, and not actually burning it to a CD/DVD and booting from it, it is possible that the little quirks/artifacts that a writing to .iso tool may create would be irrelevant, i.e. it is possible that you can recreate a .iso which is good enough for your use but that may fail if used to burn a CD.

I would be curious to know what happens with yours (corrupted) compressed files when you expand them manually.

A "normal" XP should have the command line EXTRACT[1] (in Vista and later should have become EXPAND) program, but also 7-zip should be able to expand the compressed files .

While expanding you might have some errors, or it may succeed to create the expanded file, in this latter case (since you have another copy of the original expanded file) it would be interesting if there are differences.

It is possible (improbable but possible) that your .iso image corruption is not at file level, but somewhere else, and while you can get the file from the mounted .iso, the setup when it is running somehow fails in retrieving it.

jaclaz

[1] Sometimes as EXTRAC32.EXE, or you may need to find the "support tools" if you want the MS original:

https://msfn.org/board/topic/24670-windows-xp-service-pack-2-support-tools/

 

Edited by jaclaz
Posted

Understood about the "automagic" software, not interested.

I figured I could at least try to:
 - Expand the ISO to a local folder
 - Update the corrupted files with good one
    In this case re-compress the dll's (from a same version source), copy over the corrupted files
 - Rebuild the ISO
 - Test, etc....

or the binary method, again, which is a bit tricky, but do-able.

When I expand the bad dll's using 7zip, I get an error.
I can double click the shell32.dl_ and get another window that shows the file
as shell32.dll. Then I click that and get a "data" error.

If I do the same on a "good" ISO, 7zip shows another window with the shell32.dll contents.
Some .dll's have further files and folders, some are just pure binary data with no further files or folders.

I suspect the bad file is the same size, but the internals are corrupted....because 7zip can pull it from the ISO to a local folder, where the OS (Win7) confirms the size, but 7zip throws an error when I try to expand it.

I might be able to get another *.dl_ from a borrowed CD, compare internal file versions, and then overwrite the bad ISO with the borrowed without having to compress a dll from a live install.

Anyway, I need to get on with testing. I'll report back.

But, thank you for your command of knowledge on this subject, very encouraging.

Posted

Good (which means bad) your test seems to lead to an actual file error.

I was wondering if you could (via a command line tool) test all files for integrity, 7-zip is not suitable because it is very verbose with the "t" (test) switch.

There is a tool (cabextract) that would do nicely, as it just prints the MD5 of the (valid) file but it seems like not supporting wildcards in the names of files, so you would need to make a batch to scan each file one by one.

I tested the (yes I know) standalone DOS version that seems to run just fine on XP:

https://www.bttr-software.de/ports/

The Windows version on the Author's site:

https://www.cabextract.org.uk/

is Cygwin, so right now I cannot test it.

jaclaz

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...