win32-test-imagex-capture_and_apply: eliminate unnecessary %errorlevel% checks
[wimlib] / README.WINDOWS
1
2                                   INTRODUCTION
3
4 wimlib is free and open source software that is available on both UNIX-like
5 systems and Windows.  This file provides additional information specifically
6 about the Windows version of wimlib and the command line tool "wimlib-imagex"
7 that is distributed with it.  It does not obsolete the generic README.txt, which
8 you should read too.
9
10                               WINDOWS DISTRIBUTION
11
12 The Windows distribution of wimlib is a ZIP file containing the following items:
13
14   * wimlib-imagex.exe, a command-line tool to deal with WIM (.wim), split WIM
15     (.swm), and ESD (.esd) files that is inspired by Microsoft's ImageX and
16     DISM.  This is a ready-to-run executable and not an installer.
17
18   * Very short batch scripts (e.g. wimapply.cmd) which are shortcuts to the
19     corresponding wimlib-imagex commands (e.g. `wimlib-imagex apply').
20
21   * The documentation, including this file, the generic README.txt, and
22     PDF documentation for wimlib-imagex in the 'doc' directory.
23
24   * The library itself (libwim-15.dll).  The C header wimlib.h is not
25     included; download the source if you want it.
26
27   * License files for all software included.  These are all free software
28     licenses.
29
30 Note that there are separate ZIP files for 32-bit (i686) and 64-bit (x86_64)
31 binaries.  They are both fully supported, but you should prefer the 64-bit
32 binaries when possible as they can be noticeably faster.
33
34                                  WIMLIB-IMAGEX
35
36 wimlib-imagex supports most features of Microsoft's ImageX as well as some
37 features that are supported by DISM but not by ImageX.  wimlib-imagex also
38 supports some features that neither ImageX nor DISM support.  Some of the
39 advantages of wimlib-imagex compared to ImageX and DISM are:
40
41   * wimlib-imagex provides "extract" and "update" commands which allow
42     you to quickly work with WIM images without mounting them.
43
44   * wimlib-imagex provides an easy-to-use "optimize" command which removes
45     wasted space from a WIM file and optionally recompresses it with stronger
46     compression.
47
48   * wimlib includes advanced implementations of all compression algorithms used
49     in WIM files.  They usually outperform and outcompress their Microsoft
50     equivalents.
51
52   * wimlib-imagex supports solid WIM files and LZMS compression, for example as
53     used in ESD (.esd) files.  (These are partially supported by recent DISM
54     versions but not by ImageX.)
55
56   * In many cases, wimlib-imagex has simpler command-line syntax than either
57     ImageX or DISM.
58
59   * Whenever possible, wimlib-imagex includes improved documentation and
60     informational output compared to Microsoft's software.
61
62   * wimlib and wimlib-imagex are free software, so you can modify and/or audit
63     the source code.
64
65 However, some limitations of wimlib-imagex compared to ImageX and DISM are:
66
67   * On Windows, wimlib-imagex does not support mounting WIM images.
68
69   * wimlib-imagex has no awareness of Windows "packages".
70
71                                 ADDITIONAL NOTES
72
73 It's recommended to use wimlib-imagex in scripts to avoid having to
74 interactively enter commands.  However, note that wimlib-imagex is largely just
75 a command-line front-end for wimlib, and it's possible to use wimlib's API in
76 other front-ends or applications.  Currently there is no official graphical user
77 interface available for wimlib or wimlib-imagex.  However, an unofficial, beta,
78 Windows-only graphical user interface that provides a thin wrapper around
79 wimlib-imagex can be downloaded at
80 http://reboot.pro/files/file/485-wimlib-imagex-command-line-compiler/.
81
82                               BUILDING FROM SOURCE
83
84 As with other open source software, advanced users may choose to build wimlib
85 from source, potentially with customizations.  Although wimlib's build system is
86 designed for UNIX-like systems and is easiest to use on Linux, it's possible to
87 build Windows binaries on Windows using Cygwin with MinGW.  To do this, follow
88 the instructions below.  For the sake of example, I'll assume you are building a
89 32-bit version of wimlib v1.9.0.
90
91 Run the Cygwin installer, available from https://www.cygwin.com/setup-x86.exe.
92 When you get to the package selection screen, choose the following additional
93 packages from category "Devel":
94
95     - make
96     - mingw64-i686-gcc-g++
97     - mingw64-i686-binutils
98     - mingw64-i686-libxml2
99     - mingw64-i686-winpthreads
100     - mingw64-i686-win-iconv
101     - mingw64-i686-pkg-config
102
103 Download wimlib's source code from https://wimlib.net/downloads/wimlib-1.9.0.tar.gz.
104
105 Start a Cygwin terminal and run the following commands:
106
107     cd /cygdrive/c/Users/example/Downloads # (or wherever you downloaded the source to)
108     tar xf wimlib-1.9.0.tar.gz
109     cd wimlib-1.9.0
110     ./configure --host=i686-w64-mingw32
111     make
112
113 If successful, the new binaries "libwim-15.dll" and "wimlib-imagex.exe" will
114 have been produced in the .libs directory.
115
116 By default the binaries are built with debug symbols.  If desired, you can use
117 i686-w64-mingw32-strip to strip them.
118
119 libwim-15.dll will be linked to several other DLLs which you will need as well:
120
121     - iconv.dll
122     - libwinpthread-1.dll
123     - libxml2-2.dll
124     - libgcc_s_sjlj-1.dll
125
126 They can be found in "C:\cygwin\usr\i686-w64-mingw32\sys-root\mingw\bin" and
127 must be placed alongside libwim-15.dll for it to run portably.  (In the official
128 binary release, these third-party libraries are linked to libwim-15.dll
129 statically rather than dynamically.)
130
131 Building 64-bit binaries is very similar, but you'll need to replace "i686" with
132 "x86_64" everywhere in the above instructions.  Note that you can build both
133 32-bit and 64-bit binaries from the same Cygwin installation, provided that you
134 install both the mingw64-i686-* and mingw64-x86_64-* packages; and you can run
135 the Cygwin setup program to install more packages at any time.