Skip to content

Latest commit

 

History

History
133 lines (95 loc) · 5.76 KB

README.WINDOWS.md

File metadata and controls

133 lines (95 loc) · 5.76 KB

Introduction

wimlib is free and open source software that is available on both UNIX-like systems and Windows. This file provides additional information specifically about the Windows version of wimlib and the command line tool wimlib-imagex that is distributed with it. It does not obsolete the generic README, which you should read too.

Windows distribution

The Windows distribution of wimlib is a ZIP file containing the following items:

  • wimlib-imagex.exe, a command-line tool to deal with WIM (.wim), split WIM (.swm), and ESD (.esd) files that is inspired by Microsoft's ImageX and DISM. This is a ready-to-run executable and not an installer.

  • Very short batch scripts (e.g. wimapply.cmd) which are shortcuts to the corresponding wimlib-imagex commands (e.g. wimlib-imagex apply).

  • The library itself in DLL format (libwim-15.dll). wimlib-imagex.exe requires this to run.

  • The documentation, including this file, the generic README, and PDF documentation for wimlib-imagex in the doc folder.

  • License files for all software included. These are all free software licenses. COPYING.txt is the main license, and it refers to COPYING.GPLv3.txt and COPYING.LGPLv3.txt. The other licenses are for third-party software included in the library.

  • Development files in the devel folder. These are only needed if you are developing C or C++ applications that use wimlib.

Note that there are separate ZIP files for 32-bit i686 and 64-bit x86_64 binaries. They are both fully supported, but you should prefer the 64-bit binaries when possible as they can be noticeably faster.

wimlib-imagex

wimlib-imagex supports most features of Microsoft's ImageX as well as some features that are supported by DISM but not by ImageX. wimlib-imagex also supports some features that neither ImageX nor DISM support. Some of the advantages of wimlib-imagex compared to ImageX and DISM are:

  • wimlib-imagex provides "extract" and "update" commands which allow you to quickly work with WIM images without mounting them.

  • wimlib-imagex provides an easy-to-use "optimize" command which removes wasted space from a WIM file and optionally recompresses it with stronger compression.

  • wimlib includes advanced implementations of all compression algorithms used in WIM files. They usually outperform and outcompress their Microsoft equivalents.

  • wimlib-imagex supports solid WIM files and LZMS compression, for example as used in ESD (.esd) files. (These are partially supported by recent DISM versions but not by ImageX.)

  • wimlib-imagex supports imaging a live Windows system. Just use the --snapshot option.

  • In many cases, wimlib-imagex has simpler command-line syntax than either ImageX or DISM.

  • Whenever possible, wimlib-imagex includes improved documentation and informational output compared to Microsoft's software.

  • wimlib and wimlib-imagex are free software, so you can modify and/or audit the source code.

However, some limitations of wimlib-imagex compared to ImageX and DISM are:

  • On Windows, wimlib-imagex does not support mounting WIM images.

  • wimlib-imagex has no awareness of Windows "packages".

Additional notes

It's recommended to use wimlib-imagex in scripts to avoid having to interactively enter commands. However, note that wimlib-imagex is largely just a command-line front-end for wimlib, and it's possible to use wimlib's API in other front-ends or applications. Currently there is no official graphical user interface available for wimlib or wimlib-imagex. However, Wimlib-clc is an unofficial, Windows-only graphical user interface for wimlib-imagex.

Building from source

As with other open source software, advanced users may choose to build wimlib from source, potentially with customizations. Currently, wimlib depends on MinGW-w64 for its Windows support; Visual Studio is not supported. The Windows binaries can be cross-compiled on Linux, or built on Windows using MSYS2 or Cygwin. The following instructions show the MSYS2 method.

First, install MSYS2 by running the installer from msys2.org.

Then, open any MSYS2 shell and run the following command:

pacman -Syu --noconfirm

After that, open any MSYS2 shell again and run the following commands:

pacman -Syu --noconfirm git
git clone https://wimlib.net/git/wimlib

Note: By default the git repository will be on the master branch, which is the latest development snapshot. Optionally, you can check out a specific version, e.g. cd wimlib && git checkout v1.14.4. For old versions, please refer to the documentation for that version, as things may have changed. It is also possible to use a release tarball (e.g. wimlib-1.14.4.tar.gz) instead of the git repo.

Finally, to actually do a build, close the MSYS2 shell you have open, then open one of the following from the Start menu:

  • "MSYS2 MINGW64" - for x86_64 binaries, built with gcc
  • "MSYS2 CLANG64" - for x86_64 binaries, built with clang
  • "MSYS2 MINGW32" - for i686 binaries, built with gcc
  • "MSYS2 CLANG32" - for i686 binaries, built with clang
  • "MSYS2 CLANGARM64" - for ARM64 binaries (EXPERIMENTAL)

(If unsure, use "MSYS2 MINGW64".) Then run the following commands:

cd wimlib
tools/windows-build.sh --install-prerequisites

The script will automatically download and install the packages needed to build wimlib in the chosen MSYS2 environment, then build wimlib. The output will be in a folder named similarly to wimlib-1.14.4-windows-x86_64-bin. Note that your "home" folder within MSYS2 is C:\msys64\home\%USERNAME% by default. Therefore, the full path to the output folder will be similar to C:\msys64\home\%USERNAME%\wimlib\wimlib-1.14.4-windows-x86_64-bin.