]> wimlib.net Git - wimlib/blob - README.WINDOWS
Rename make-windows-release to windows-build.sh
[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 library itself in DLL format (libwim-15.dll).  wimlib-imagex.exe
22     requires this to run.
23
24   * The documentation, including this file, the generic README.txt, and
25     PDF documentation for wimlib-imagex in the 'doc' folder.
26
27   * License files for all software included.  These are all free software
28     licenses.  COPYING.txt is the main license, and it refers to
29     COPYING.GPLv3.txt and COPYING.LGPLv3.txt.  The other licenses are for
30     third-party software included in the library.
31
32   * Development files in the 'devel' folder.  These are only needed if you
33     are developing C or C++ applications that use wimlib.
34
35 Note that there are separate ZIP files for 32-bit (i686) and 64-bit (x86_64)
36 binaries.  They are both fully supported, but you should prefer the 64-bit
37 binaries when possible as they can be noticeably faster.
38
39                                  WIMLIB-IMAGEX
40
41 wimlib-imagex supports most features of Microsoft's ImageX as well as some
42 features that are supported by DISM but not by ImageX.  wimlib-imagex also
43 supports some features that neither ImageX nor DISM support.  Some of the
44 advantages of wimlib-imagex compared to ImageX and DISM are:
45
46   * wimlib-imagex provides "extract" and "update" commands which allow
47     you to quickly work with WIM images without mounting them.
48
49   * wimlib-imagex provides an easy-to-use "optimize" command which removes
50     wasted space from a WIM file and optionally recompresses it with stronger
51     compression.
52
53   * wimlib includes advanced implementations of all compression algorithms used
54     in WIM files.  They usually outperform and outcompress their Microsoft
55     equivalents.
56
57   * wimlib-imagex supports solid WIM files and LZMS compression, for example as
58     used in ESD (.esd) files.  (These are partially supported by recent DISM
59     versions but not by ImageX.)
60
61   * wimlib-imagex supports imaging a live Windows system.  Just use the
62     --snapshot option.
63
64   * In many cases, wimlib-imagex has simpler command-line syntax than either
65     ImageX or DISM.
66
67   * Whenever possible, wimlib-imagex includes improved documentation and
68     informational output compared to Microsoft's software.
69
70   * wimlib and wimlib-imagex are free software, so you can modify and/or audit
71     the source code.
72
73 However, some limitations of wimlib-imagex compared to ImageX and DISM are:
74
75   * On Windows, wimlib-imagex does not support mounting WIM images.
76
77   * wimlib-imagex has no awareness of Windows "packages".
78
79                                 ADDITIONAL NOTES
80
81 It's recommended to use wimlib-imagex in scripts to avoid having to
82 interactively enter commands.  However, note that wimlib-imagex is largely just
83 a command-line front-end for wimlib, and it's possible to use wimlib's API in
84 other front-ends or applications.  Currently there is no official graphical user
85 interface available for wimlib or wimlib-imagex.  However, an unofficial
86 Windows-only graphical user interface that provides a thin wrapper around
87 wimlib-imagex can be downloaded at
88 http://reboot.pro/files/file/485-wimlib-imagex-command-line-compiler/.
89
90                               BUILDING FROM SOURCE
91
92 As with other open source software, advanced users may choose to build wimlib
93 from source, potentially with customizations.  Currently, wimlib depends on
94 MinGW-w64 for its Windows support; Visual Studio is not supported.  The Windows
95 binaries can be cross-compiled on Linux, or built on Windows using MSYS2 or
96 Cygwin.  The following instructions show the MSYS2 method.
97
98 First, install MSYS2 by running the installer from https://www.msys2.org/.
99
100 Then, open any MSYS2 shell and run the following command:
101
102     pacman -Syu --noconfirm
103
104 After that, open any MSYS2 shell again and run the following commands:
105
106     pacman -Syu --noconfirm git
107     git clone git://wimlib.net/wimlib
108
109 Note: By default the git repository will be on the "master" branch, which is the
110 latest development snapshot.  Optionally, you can check out a specific version,
111 e.g. 'cd wimlib && git checkout v1.14.0'.  For old versions, please refer to the
112 documentation for that version, as things may have changed.  Also, it is
113 possible to use a release tarball (e.g. wimlib-1.14.0.tar.gz) instead of the git
114 repository; however, the windows-build.sh script will not be available in that
115 case and you will need to handle more things yourself.
116
117 Finally, to actually do a build, close the MSYS2 shell you have open, then open
118 one of the following from the Start menu:
119
120   * "MSYS2 MINGW64" - for x86_64 binaries, built with gcc
121   * "MSYS2 CLANG64" - for x86_64 binaries, built with clang
122   * "MSYS2 MINGW32" - for i686 binaries, built with gcc
123   * "MSYS2 CLANG32" - for i686 binaries, built with clang
124   * "MSYS2 CLANGARM64" - for ARM64 binaries (EXPERIMENTAL)
125
126 (If unsure, use "MSYS2 MINGW64".)  Then run the following commands:
127
128     cd wimlib
129     tools/windows-build.sh --install-prerequisites
130
131 The script will automatically download and install the packages needed to build
132 wimlib in the chosen MSYS2 environment, then build wimlib.  The output will be
133 in a folder named similarly to "wimlib-1.14.0-windows-x86_64-bin".  Note that
134 your "home" folder within MSYS2 is C:\msys64\home\%USERNAME% by default.
135 Therefore, the full path to the output folder will be similar to
136 C:\msys64\home\%USERNAME%\wimlib\wimlib-1.14.0-windows-x86_64-bin.