- How to Extract Files from Windows 10 ISO or DVD (Install.wim)
- So, why do you need the install.wim extraction method?
- Extract individual files from Windows 10 DVD or ISO (install.wim)
- Method 1: Using 7-Zip to extract files from Install.wim
- Method 2: Using DISM to mount Install.wim and extract the contents
- Install.esd vs Install.wim
- How to extract MSI files from an EXE installer
- Problem:
- Solution:
- Universal Extractor
- Introduction
- Screenshots
- Download Current Version: 1.6.1, Released: 05/12/2010
- Language Files
- Installation and Usage
- Technical Details
- Supported Formats
- Credits
How to Extract Files from Windows 10 ISO or DVD (Install.wim)
There are situations where you need a specific Windows system file from the install.wim image present in a Windows 10 setup disk or ISO. In the case of missing system files, the DISM & SFC procedure will automatically restore them. Alternatively, you can restore missing Windows system files (of any version) from the WinBindex.
So, why do you need the install.wim extraction method?
In some circumstances, extracting from install.wim in Windows ISO/DVD is the only option possible. Let’s say you want to repair or restore the Windows Recovery Environment on a computer. For that, you’ll need the WinRE.wim image present inside the install.wim or install.esd in a Windows 10 DVD or ISO.
(For a piece of brief information about ESD & WIM formats, go to the end of this article.)
There are at least two ways to extract files from the Windows 10 Setup DVD or ISO. Though the title says “Windows 10”, the instructions below apply to Windows Vista through Windows 10.
Extract individual files from Windows 10 DVD or ISO (install.wim)
In this example, let’s see how to extract a file named WinRE.wim from the Windows 10 Setup disk or ISO.
Method 1: Using 7-Zip to extract files from Install.wim
- Download and install 7-Zip from http://7-zip.org/
- Insert your Windows 10 DVD and browse to the Sources folder inside the DVD. If you have a Windows 10 ISO, double-click the ISO to mount the ISO to a drive letter.
Note: You can see the list of indexes and the corresponding editions using DISM. This is explained in Method 2 of this article.
As a side note, I’ve found that the WinRE.wim (Windows Recovery Environment image) file size is precisely the same in every Windows 10 Edition. However, the best practice would be to get a copy only from the specific index folder in the install.wim.
The ISOs downloaded from Microsoft site contain multiple Windows images combined into a single .wim file. If you have a custom ISO or DVD (e.g., distributed by your organization) has a single Windows image (Pro, Home, Education Edition, etc.), the index number folders won’t exist.
Using the above method, you can extract any file from the install.wim or install.esd .
7-Zip supports the ESD format as well. That means you don’t have to convert the install.esd to install.wim to extract its contents.
Method 2: Using DISM to mount Install.wim and extract the contents
DISM (Deployment Image Servicing and Management tool) tool is to service online and offline Windows images. To mount the install.wim file and extract its contents, follow these steps:
Note: If you have install.esd instead of install.wim , you’ll need to convert the ESD to WIM format before you can mount it using DISM.
- Insert your Windows 10 DVD and browse to the Sources folder inside the DVD. If you have a Windows 10 ISO, double-click the ISO to mount the ISO to a drive letter.
- Open an elevated Command Prompt window.
- Find the list of indexes and the corresponding editions found in the install.wim , by running the following command:
… where G:\ is the drive letter of the mounted ISO or Windows Setup DVD.
In the case of ISOs downloaded from Microsoft, you’ll see more indexes (Meaning: Multiple windows images or different editions combined into the install.wim). For example, here’s the list of indexes found inside the Windows 10 ISO from Microsoft:
Now, let’s mount the image #6 (Windows 10 Pro) to a folder using the following commands:
The 2nd command-line takes a few minutes to complete. It extracts/maps the install.wim (the specified index #) to the mentioned folder so that you can access its contents using File Explorer.
If you skip the /ReadOnly parameter accidentally, the following error would pop-up:
You do not have permissions to mount and modify this image.
Verify that you have Read/Write permissions or mount the image using the /ReadOnly option. Note that you cannot commit changes to an image with read-only permissions.
When I ran the Unmount command above, the following error displayed in the console:
The directory could not be completely unmounted. This is usually due to applications that still have files open within the mount directory. Close these files and unmount again to complete the unmount process.
However, since the entire directory was already empty, all I had to do was delete the WinMount folder manually. I didn’t have to run the DISM unmount command-line again.
Gigabytes of data are written to or removed from the file system when you mount and unmount the Windows image. Unlike Method 1, each DISM command-line would take a few minutes to complete.
Using 7-Zip or any third-party archiver (as discussed in Method 1) is the fastest method to view and extract the contents of a Windows image file (*.wim).
Install.esd vs Install.wim
Some Windows 10 ISO have install.esd instead of install.wim . ESD is a highly compressed format whose file size comes around 80% compared to the WIM image.
But the ESD image format is read-only and thus has drawbacks. For instance, it can’t be deployed using a WDS server. So you need to convert the ESD file to a WIM file to service the image or to deploy it.
7-Zip can handle ESD as well as WIM. Whereas, DISM would throw the following error when you try to mount an ESD file ( install.esd ).
An attempt was made to load a program with an incorrect format.
So, if you plan to use DISM to view or extract from the image, you must first convert the ESD file into WIM format using DISM, nLite, or any other utility. This is discussed in the article How to Convert ESD to WIM Using DISM or NTLite in Windows 10.
How to extract MSI files from an EXE installer
Problem:
You need to extract an .msi file from an .exe installer.
Solution:
There are at least three ways of solving this problem, but none of them is universal. You might need to go through all of them to find the one that works for the EXE installer that you have.
CodeTwo strongly advises against extracting (and using) MSI files from the EXE installers of the CodeTwo software. Unless the product website allows such an operation (or unless you are instructed/allowed to do so by CodeTwo Support), use the .exe setup files.
The first method is based on the fact that most installers extract their .msi files to the temporary files folder during the installation process. To extract an MSI file from an EXE installer, you need to:
- Launch your .exe file.
- When you see the first prompt (e.g. a question about whether you want to continue installation, accept a license agreement, etc.), do not click anything in this window and do not close it.
- Open Windows Explorer, type %temp% in the address bar and press Enter.
- Sort the files in the folder by the modification date. The newest file on the list should be the .msi file you are looking for.
- Copy the MSI file to a safe location before you close the installer prompt window (see step 2). Be aware that if you close the installer window, the MSI file will be immediately deleted from the temporary files folder.
The second method uses a free third-party tool called 7-Zip to browse the content of the .exe installer file. Follow the steps below.
- Download 7-Zip from this page and install it.
- Right-click on the .exe file (from which you want to extract an .msi file) and from the shortcut menu choose 7-Zip >Open Archive.
- Do not extract any files yet. Instead, browse and look for the folder MSI within the contents. It might take some time to find this folder because it is not always located directly in the root directory (its location may vary depending on the installer).
- When you locate the MSI folder, you will notice that it most likely does not contain any .msi files, but a file or files with no extensions and rather cryptic names such as 132. Despite these misleading names, these are actually the MSI files you are looking for.
- Drag and drop these files to any desired folder or select them and extract them with 7-Zip. Close 7-Zip after that.
- Change the names of the extracted files so that they include the .msi extension.
- If there are two files, the larger one is the 64-bit installer, and the smaller one is the 32-bit version. Use the one you need.
The third method works with InstallShield based projects. To get the MSI file from your EXE installer, you need to:
- Log on to a computer where the software (the installer of which you would like to access) is not installed. This is because this method forces the uninstalling process to trigger extraction of the .msi file. If you already have this software installed, this method will remove it, which might not be desired.
- Run Windows Command Prompt (cmd) (in Windows 10: open the Start menu, type cmd and press Enter) and go to the folder where your EXE file is located.
- Execute the command below:
replace with the name of your .exe file and with the path to the folder where you want the .msi file to be extracted (for example C:\Folder ).
As described in this thread, the switches for the command above do the following:
- /s /x — silently ( /s ) uninstalls ( /x ) the product from the system;
- /b — defines the target path for the .msi file;
- /v — passes desired arguments to the installer. In this case, the argument is /qn — it disables GUI and any prompts.
Universal Extractor
Note: Development on the ‘official’ version of Universal Extractor has stopped. It’s not exactly abandoned, but since I no longer run Windows it’s not something I have much of a need for these days. There have been a lot of unofficial forks and continuations released, and while I appreciate the effort and enthusiasm, most of those have been closed source updates that I wouldn’t recommend.
That said, I recently discovered a project calling itself Universal Extractor 2. I’m not affiliated with the project in any way, but it seems to be a nice continuation of the project in the original open source spirit as my own creation. I’ve not used it myself, but if you’re having trouble with the official version or not able to get it to extract newer formats and executables, I’d recommend giving Bioruebe’s version a try.
Introduction
Universal Extractor Feedback
If you have any questions about, or find any problems with, Universal Extractor, please post your comments to the UniExtract subforum on the MSFN message board. This has become the main point of discussion for this project.
Universal Extractor is a program designed to decompress and extract files from any type of archive or installer, such as ZIP or RAR files, self-extracting EXE files, application installers, etc. The full list of supported formats can be found in the table below. It’s able to support so many varied file formats by utilizing the many backend utilities listed in the credits at the bottom of the page.
Please note that Universal Extractor is not intended to be a general purpose archiving program. It cannot (and never will) create archives, and therefore cannot fully replace archivers such as 7-Zip or WinRAR. What it will do, however, is allow you to extract files from virtually any type of archive, regardless of source, file format, compression method, etc.
The original motivation behind this project was to create an easy, convenient way to extract files from various types of installation packages without the need to remember arcane command line switches or track down separate utilities to handle the unpacking. Over time, and with the encouragement of its many users and the fine folks over on the MSFN forum, it has evolved into a mature and very capable unarchiving utility that many, including myself, find indispensable.
Screenshots
Universal Extractor context menu
Universal Extractor file/destination GUI
Universal Extractor preferences
Download Current Version: 1.6.1, Released: 05/12/2010
UniExtract Installer (5.3 MB) — This is the recommended download. The installer will automatically install the application and optionally integrate with the Windows Explorer context menu. This package does not contain source code.
UniExtract Binary Archive (4.95 MB) — This archive contains the binaries. Download this if you want a portable version, or just prefer not to use the installer.
UniExtract Source Code (163.13 KB) — This archive only contains the source code, but it includes all support files as well (compiler scripts, installer, etc.). This is best to download (along with the binary archive) if you want to help further development of UniExtract.
ChangeLog, ToDo — UniExtract development details
Universal Extractor Download Archive — archived versions of all official binary and source code releases
Note: If you download Universal Extractor from one of the official links above, it is not infected with a virus. If your anti-virus software tells you otherwise, please see this forum post for details.
Language Files
As of version 1.4, Universal Extractor supports internationalization. If you’re interested in translating Universal Extractor into another language, please download the source archive and follow the instructions in English.ini. Please send me your completed translation and I’ll include it in the next version of Universal Extractor. Thanks to all of the contributors!
To use these language files, simply download and copy into the lang\ directory of your Universal Extractor installation. The new language will appear as an option the next time you run UniExtract.
Note: The (alt) language files are alternate translations that are not included with the official release. Sometimes I get multiple submissions for a single language, and I like to give everyone credit, but I generally stick with the first one that’s submitted out of fairness. Some of the alternate translations may be better than the included ones (or, they may not be), so feel free to give them a try. If you find that an alternate version is better than the included version, please let me know; I may switch them out for the next release.
Language File | Native Name | Contributer | Added/Updated |
---|---|---|---|
Arabic* | العربية | Awadh A Al-Ghaamdi | 10/22/2008 |
Arabic (alt) | العربية | Musab (KooTaa) | 10/12/2008 |
Armenian* | Հայերէն Hayeren | Hrant Ohanyan | 05/11/2010 |
Bulgarian* | Български | Кирил Кирилов (DumpeR) | 10/12/2008 |
Chinese (Simplified) | 简体中文 | phCole | 05/13/2010 |
Chinese (Traditional)* | 繁体中文 | Huang Junwei | 11/21/2006 |
Croatian* | Hrvatski | Tomislav Glušac | 10/22/2008 |
Croatian (alt1) | Hrvatski | Danijel Ivanieviæ | 05/11/2010 |
Croatian (alt2) | Hrvatski | Ivica Hrvoj Ivanić | 10/12/2008 |
Czech* | Čeština | Lubomír Hajda | 05/11/2010 |
Dutch* | Nederlands | Robby Kooken | 10/12/2008 |
English* | English (American) | Default/native language file | 05/12/2010 |
Finnish* | Suomi | Teijo Sakkara | 10/25/2008 |
French* | Français | jacklours | 10/22/2008 |
German | Deutsch | Arno Krumpholz | 05/13/2010 |
Greek* | Ελληνικά | Nick Mattheakis | 10/22/2008 |
Hungarian* | Magyar | Simon László | 03/25/2007 |
Italian* | Italiano | TJL73 / Roberto Boriotti | 05/11/2010 |
Japanese* | 日本語 | Yachuko Nakai | 11/28/2006 |
Japanese (alt) | 日本語 | Nardog | 11/28/2006 |
Korean* | 한국어/조선말 | Sunsuk Kim | 03/21/2007 |
Persian (Farsi)* | فارسی | Sajjad Mohammadi | 05/11/2010 |
Polish* | Język Polski | ULTIMA PRIME | 02/22/2007 |
Portuguese* | Português | José Gonçalves | 03/01/2007 |
Portuguese (Brazilian)* | Português | ZimzuM / Marcio Barbosa | 03/21/2007 |
Romanian* | Limba Română | Cristian Stefan | 02/27/2007 |
Russian* | Русский язык | gora | 05/11/2010 |
Russian (alt) | Русский язык | AVV_UA | 10/12/2008 |
Russian (old) | Русский язык | Polarbond | 02/22/2007 |
Serbian* | Srpski | Ivan Stambolić | 05/11/2010 |
Slovak* | Slovenčina | Peter Žilák | 02/22/2007 |
Spanish* | Español | Mario Ángel / Leonardo Mauro | 02/22/2007 |
Spanish (alt) | Español | Arturo Vergara | 05/13/2010 |
Swedish* | Svenska | Stefan Weber | 05/11/2010 |
Taiwanese* | 臺灣話 | YoYo | 10/12/2008 |
Thai* | ภาษาไทย | Pruthisith (Terry) Prateepavanich | 11/28/2006 |
Turkish* | Türkçe | Onur AYDIN | 03/01/2007 |
Ukrainian* | украї́нська мо́ва, | Warrior | 10/28/2008 |
Valencian (Catalan)* | Valencià (Català) | Rafel Hidalgo i Rangel | 03/25/2007 |
Vietnamese* | Tiếng Việt | Nguyen Nhat Quang | 02/22/2007 |
* = Included in current release
Installation and Usage
To install UniExtract, download the installer and run it on your system. You will have a few options during installation:
Select Components — These options specify which program components are installed to disk. These options are only really useful if you need to reduce the installation size.
- Documentation and licensing information — This includes all files in the docs\ subdirectory
- Language files for internationalization support — This includes all files in the lang\ subdirectory
- Support for ACE files — Binaries and/or libraries required for ACE archives
- Support for KGB files — Binaries and/or libraries required for KGB archives
- Support for Pea files — Binaries and/or libraries required for Pea archives
- Support for StuffIt files — Binaries and/or libraries required for StuffIt (.sit) archives
Set Program Options — These options adjust the default Universal Extractor behavior. They can be changed after installation through the Preferences menu.
- Default Language — specifies the language used by UniExtract
- Debug File Location — specifies the directory to which UniExtract should write its debug file
- Append missing file extensions — attempt to determine and append the correct extension for improperly named files using TrID
- Maintain archive history — maintain a list of the ten most recent files that were extracted, as well as the destination directories
- Remove duplicate files — attempt to detect and remove duplicate that may have been created during extraction
- Remove temporary files — automatically remove temporary files that may be created during extraction
- Warn before executing files — some .exe archives must actually be executed in order to perform the extraction. Since this can be a security risk (executing unknown/untrusted code is always a bad idea), UniExtract will display a warning before extracting these types of files.
Select Additional Tasks — These options specify additional actions that can be performed by the installer. They only affects installation of Universal Extractor, and cannot be modified later.
- Enable Explorer context menu integration — allows you to right click on any archive and directly extract its files
- Add UniExtract Files. to context menu — adds ability to specify destination directory
- Add UniExtract Here to context menu — adds ability to quickly extract to current directory
- Add UniExtract to Subdir to context menu — adds ability to quickly extract to subdirectory
- Force association with with all supported archive formats — Forces UniExtract to associate itself with all supported file extensions; by default, it will only associate itself with native Windows formats (.exe, .msi, etc.) and other formats not currently associated with another program
- Add Universal Extractor to your system path — allows you to run UniExtract (and any related binaries) from the command line
- Create a SendTo icon — add a shortcut for Universal Extractor to your SendTo context menu
- Create a desktop icon — add a shortcut for Universal Extractor to your desktop
- Create a Quick Launch icon — add a shortcut for Universal Extractor to your Quick Launch bar
If you wish to automate installation (for custom or unattended installs), please run uniextractXX.exe /? to get a detailed description of available command-line options for the installer. All standard Inno Setup command line parameters apply, but also pay special attention to the Components, Tasks, and Custom Parameters detailed at the bottom of the help window.
For manual installation with the binary archive, simply extract the files to the destination folder you would like. By default, this puts UniExtract in «portable mode». This means that the globalprefs option is enabled (see changelog for details) and the history option is disabled (see Program Options above). The end result is UniExtract can be easily run from portable devices like USB flash drives without leaving any trace of use. Of course, it’ll also work just as well if copied to a real hard drive, and all preferences can be modified at any time by editing UniExtract.ini , or by running UniExtract.exe /prefs .
Once UniExtract is installed, usage is simple. The easiest way, if you used the installer and enabled context menu integration, is to right-click on any archive and select click one of the UniExtract options. UniExtract Here will extract files to the current directory, UniExtract to Subdir will extract files to a subdirectory named after the file, and UniExtract Files will prompt you for the destination directory.
If you did not enable context menu integration, you may run the Universal Extractor start menu shortcut, or double-click directly on UniExtract.exe. This will launch the UniExtract GUI. Enter (or use the file browser to select) the file you wish to extract and the destination directory, then click OK. It is also possible to drag-and-drop the file you wish to extract onto the icon or main application window to easily extract the dropped file.
UniExtract can also be run from the command line. Run UniExtract.exe /? for detailed command line parameters.
You can use Add/Remove Programs to uninstall UniExtract, or just delete the directory if you used the binary archive.
Technical Details
When a file is passed to UniExtract, it begins by scanning the file with TrID. If the file format matches one of the supported non-executable formats listed below, it immediately begins extraction from the archive. If it’s an executable file, it calls PEiD to analyze the file signature. If the signature indicates that it’s a supported format, then it attempts to begin extraction. If it is not a recognized signature, it will try running it through 7-Zip and UnZip as default cases. If 7-Zip or UnZip recognizes it, it will be extracted; otherwise, UniExtract displays an error message and exits.
Note: Filetype scanning with TrID is new as of v1.5. Older versions relied on the file extension to identify the filetype. This behavior is still used if the TrID scan cannot determine the filetype.
If the filetype is supported, UniExtract begins by checking for a valid destination directory and recording the directory size. If necessary, a new directory will be created (with a directory size of zero). UniExtract then spawns a shell and calls the supporting binary to begin extracting files from the selected archive to the destination directory. After completion, UniExtract checks the size and timestamp of the subdirectory to determine if extraction was successful; if the size or timestamp is greater than the initial values, UniExtract assumes success and exits. If extraction fails, UniExtract notifies the user and leaves a log file ( uniextract.log ) that (should) contain any error messages.
The uniextract.log file is created during the extraction process by the tee program. Essentially, all output from the running binary is redirected to tee, which in turn writes the output to the log file as well as echo it to the screen to give the user current progress. Upon successful execution this file is deleted, but if an error is detected it is left alone for the user to review. Note: As of v1.4, the location of uniextract.log can be changed to any user-specified directory.
Supported Formats
As of v1.5, UniExtract uses TrID to determine the filetype of any given file. If this detection fails, file extensions are used as a backup identifier. The table below is a reference of known-supported filetypes and common extensions; any supported archive types should work regardless of actual extension.
Archive Type | Common File Extension(s) |
---|---|
7-zip archive | .7z, .exe |
ACE archive | .ace, .exe |
ARC archive | .arc |
ARJ archive | .arj, .exe |
ASpack compressed file | .exe |
BIN/CUE CD-ROM image | .bin, .cue |
bzip2 archive | .bz2, .tbz2, .tar.bz2 |
CPIO compressed file | .cpio |
Debian package | .deb |
DiscJuggler CD-ROM image | .cdi |
Encoded files | .b64, .uu, .uue, .xx, .xxe, .yenc, .ntx |
Gentee package | .exe |
gzip archive | .gz, .tgz, .tar.gz |
IMG floppy disk image | .img |
Inno Setup package | .exe |
Installer VISE package | .exe |
InstallShield Cabinet archive | .cab, .1, .lib |
InstallShield package | .exe |
ISO 9660 CD-ROM image | .iso |
KGB archive | .kgb, kge, .exe |
LZH compressed file | .lzh, .lha |
LZMA compressed file | .lzma |
LZO compressed file | .lzo |
LZW compressed file | .Z, .tz, .tar.Z |
LZX compressed file | .lzx |
MHTML file | .mht |
Microsoft Cabinet archive | .cab, .exe, .imf |
Microsoft Compiled Help file | .chm |
Microsoft compressed file | . _ |
Microsoft LIT e-book | .lit |
Microsoft Windows Help file | .hlp |
HTC NBH ROM image | .nbh |
Nero CD-ROM images | .nrg |
NSIS package | .exe |
Oasis Document Format (ODF) document | .odt, .odp, .odg, .ods |
Office Open XML (OOXML) document | .docx, .pptx, .xlsx |
Outlook Express mail archive | .dbx |
PEA archive | .pea |
RAR archive | .rar, .001, .exe |
Reflexive Arcade package | .exe |
RoboForm package | .exe |
RPM package | .rpm |
SetupFactory package | .exe |
SIS (SymbianOS) packages | .sis |
StuffIt packages | .sit |
TAR archive | .tar, .tbz2, .tgz, .txz, .tz, .tar.bz2, .tar.gz, .tar.xz, .tar.Z |
UHARC archive | .uha |
UPX compressed file | .exe, .dll |
Windows Imaging Format image | .wim |
Windows Installer merge module | .msm |
Windows Installer package | .msi |
Windows Installer patch | .msp |
Windows Update Standalone patch | .msu |
Wise Installer package | .exe |
XZ compressed file | .xz, .txz, .tar.xz |
ZIP archive | .zip, .jar, .xpi, .wz, .exe |
Zoo archive | .zoo |
Credits
Universal Extractor relies heavily on other programs, and would not be possible without the incredible generosity of the Free Software community. This is a list of all of the applications that are used by, or in the creation of, Universal Extractor: