]> wimlib.net Git - wimlib/blobdiff - README.WINDOWS
check_add_command(): Use WIMLIB_ERR_UNSUPPORTED when appropriate
[wimlib] / README.WINDOWS
index a0521f023e394f4245e3af38a8ab40fec3cf4562..09f9624ac7755e006ff124be2a4ee9efd8241482 100644 (file)
@@ -1,41 +1,72 @@
-wimlib 1.3.0 has added experimental support for Windows builds.  These builds
-include both the "wimlib" library (built as a DLL) and the "imagex" executable.
+                                  INTRODUCTION
 
-The Windows builds use native Win32 calls when appropriate to handle alternate
-data streams, security descriptors, and reparse points.
+wimlib 1.3.0 has added experimental support for Windows builds.  The support has
+been further improved in later versions.  The Windows build consists of both the
+"wimlib" library (which can be built as a DLL) and the "wimlib-imagex"
+executable.
 
-Windows support currently has the following limitations:
+The Windows build of wimlib uses native Win32 calls when appropriate to handle
+alternate data streams, security descriptors, reparse points, encrypted files,
+compressed files, and sparse files.
 
--  It relies on the Cygwin UNIX-compatibility layer.  You do not, however, need
-   to have the Cygwin distribution installed to run it, as I have posted a ZIP
-   file on SourceForge that contains the build of wimlib along with the DLLs
-   needed for it to run.  Please note that these DLLs are free and open source
-   software; see http://www.cygwin.com/ for more details.
+Mounting WIM files is not supported on Windows.  Also please note that wimlib's
+"wimlib-imagex" is NOT intended to be command-line compatible with Microsoft's
+"imagex", and wimlib is NOT intended to be API compatible with Microsoft's
+WIMGAPI.  They are similar, though.
 
--  Mounting WIM files is not supported.  On Windows there is no equivalent of
-   FUSE, which I used to get mounting working on Linux and BSD, so I would have
-   to program a "Filesystem Filter" driver with Microsoft's eccentric API.
+                                NOTES ABOUT IMAGEX
 
--  wimlib's API is not compatible with Microsoft's WIMGAPI, although they offer
-   some of the same functionality.
+"wimlib-imagex capture", "wimlib-imagex append", and "wimlib-imagex apply" will
+work on Windows and have the added advantage of saving and restoring
+NTFS-specific data, such as alternate data streams, security descriptors, and
+reparse points.
 
-So to be clear:
+"wimlib-imagex delete", "wimlib-imagex dir", "wimlib-imagex export",
+"wimlib-imagex info", "wimlib-imagex join", "wimlib-imagex optimize", and
+"wimlib-imagex split" are all portable and should work the same way on Windows
+as on UNIX.
 
-"imagex capture", "imagex append", and "imagex apply" will work on Windows and
-have the added advantage of saving and restoring alternate data streams,
-security descriptors, and reparse points.
-
-"imagex delete", "imagex dir", "imagex export", "imagex info", "imagex join",
-"imagex optimize", and "imagex split" are all portable and should work the same
-way on Windows as on UNIX.
-
-"imagex mount", "imagex mountrw", and "imagex unmount" will NOT work on Windows.
+"wimlib-imagex mount", "wimlib-imagex mountrw", and "wimlib-imagex unmount" will
+NOT work on Windows.
 
 So on Windows, why would you want to use wimlib's ImageX instead of Microsoft's?
 Well, here are a few reasons:
 
-- wimlib can be freely distributed; there is no need to download a 1.8 gigabyte
-  "Windows Automated Installation Kit".
 - wimlib offers fast multithreaded compression, so making WIM images can be much
   faster.
+
+- Whenever possible I have included improved documentation and informational
+  output compared to Microsoft's software.
+
+- wimlib can correctly save and restore some combinations of data that
+  Microsoft's ImageX runs into bugs on --- for example, uncompressed files in
+  compressed directories, or files with alternate data streams and multiple
+  links.
+
 - wimlib is free software, so you can modify and/or audit the source code.
+
+See the man page for 'wimlib-imagex' for more information.
+
+                                BUILDING ON WINDOWS
+
+Actually doing the Windows build is a bit tricky, and I'd recommend you download
+precompiled binaries from http://sourceforge.net/projects/wimlib/files/ instead.
+I did it using MinGW-w64 on a Linux host, with the following configuration
+command:
+
+$ ./configure --host=i686-w64-mingw32
+
+after having installed the required libraries:
+
+* mingw-w64-gettext
+* mingw-w64-libiconv
+* mingw-w64-libxml2
+* mingw-w64-winpthreads
+* mingw-w64-zlib
+
+Note: zlib and gettext are only necessary when required by the build of libxml2.
+
+Building wimlib using Cygwin is not supported.  I was trying this for a while,
+but I ran into some issues with mixing native Win32 functions and
+Cygwin-provided functions, so I made it possible to do a native Win32 build
+instead.