pax_global_header00006660000000000000000000000064127016774520014525gustar00rootroot0000000000000052 comment=617c71dc5cc0bdc55505ea9ccf93c4e7656482bd innoextract-1.6/000077500000000000000000000000001270167745200137315ustar00rootroot00000000000000innoextract-1.6/CHANGELOG000066400000000000000000000116231270167745200151460ustar00rootroot00000000000000 innoextract 1.6 (2016-03-24) - Added support for Inno Setup 5.5.7 (and 5.5.8) installers - Added a --collisions=rename-all option - Changed --collisions=rename to omit the suffix for the file that would have been extracted with --collisions=overwrite instead of the first encountered file - Fixed @lang suffix sometimes missing for the first file with the --collisions=rename option - Fixed build error with CMake 3.5 - Now compiles in C++14 mode if supported - Unsafe characters in special constant strings (ie ':' in {code:…}) are now replaced with '$' - Windows: Fixed error message if the source file could not be opened - Windows: Fixed progress bar flickering while printing extracted filenames - Windows binaries: Fixed crash on platforms without AVX support innoextract 1.5 (2015-09-24) - Added support for Inno Setup 5.5.6 installers - Added support for a modified Inno Setup 5.5.0 variant - Added support for building without iconv (Windows-1252 and UTF-16LE only) - Added warnings for .bin files that are not part of the installer - Added a simple --include (-I) option to filter files thanks to Alexandre Detiste - Added a --list-languages option to list available languages - Added a --exclude-temp (-m) option to not extract temporary files - Added a --language-only option to skip language-independent files - Added a --collisions option to abort or rename files on collision - Added a --default-language option to prefer a language in case of file collisions - Added a --gog-game-id option to print the GOG.com game ID for Galaxy-ready installers - Added a --gog (-g) option to extract additional .bin files using unrar or unar - Fixed handling of spaces in the --data-dir option - Fixed an infinite loop with truncated LZMA streams - Fixed handling of forward slashes in stored file paths - Fixed size display for powers of 1024 - Fixed loading headers if there are encrypted chunks - Fixed file collisions not being handled case-insensitively - Files will now be extracted into the same directory even if the stored case differs - Empty directories are now created correctly when extracting - Skipped files in encrypted chunks are now listed individually - Temporary files are now marked in file listings - Error summary is now written to stderr when using --quiet - Colors are now only enabled automatically if $TERM is set to something other than "dumb" - Improved error and warning messages - Build system improvements - Debug output can now be enabled separately from debug builds - Windows: Added support for using the Win32 API for string encoding conversion - Windows: Fixed unicode console output innoextract 1.4-windows-r2 (2014-04-17) - This is a Windows-specific hotfix release, no other platforms are affected - Fixed running innoextract under Windows XP innoextract 1.4-windows-r1 (2013-05-14) - This is a Windows-specific hotfix release, no other platforms are affected - Fixed a crash on startup under Windows - Reduced progress bar flickering under Windows - Fixed original console text color not being restored under Windows innoextract 1.4 (2013-03-11) - Fixed build on non-Linux platforms with a separate libiconv (Windows™, Mac OS X) - Fixed build on systems with non-standard iconv function prototypes (FreeBSD) - Fixed MSVC build - Fixed build with older glibc versions - Fixed issues with the progress bar in sandbox environments - Fixed string conversion on systems where libiconv defaults to big-endian variants - Fixed extracting very large installers with 32-bit innoextract builds - Improved handling of invalid encoded strings - Improved error messages when input or output files could not be opened - The --list command-line option can now combined with --test or --extract - The --version command-line option can now be modified with --quiet or --silent - Added color output and progress bar support for Windows™ - Added support for Unicode filenames under Windows™ - Added support for preserving timestamps of extracted files (enabled by default) - Added a --timestamps (-T) command-line options to control or disable file timestamps - Added an --output-dir (-d) command-line option to control where files are extracted - Added various CMake options to fine-tune the build process - Various bug fixes and tweaks innoextract 1.3 (2012-07-03) - Fixed --quiet and --silent flags being ignored for some multi-file installers output - Now compiles in C++11 mode if supported - Added a warning when extracting unsupported setup data versions - Added support for Inno Setup 5.5.0 installers innoextract 1.2 (2012-04-01) - Fixed compile errors with older versions of Boost or GCC. - Prevented linking against libraries that aren't actually needed. innoextract 1.1 (2012-03-19) - Added support to extract files for a specific language. - Fixed a bug in the setup header parsing code. innoextract 1.0 (2012-03-01) - Initial release. - Can list and extract files but not much more. innoextract-1.6/CMakeLists.txt000066400000000000000000000320451270167745200164750ustar00rootroot00000000000000project(innoextract) cmake_minimum_required(VERSION 2.8) if(CMAKE_VERSION VERSION_GREATER 3.4) cmake_policy(VERSION 3.4) else() cmake_policy(VERSION ${CMAKE_VERSION}) endif() # Define configuration options option(STRICT_USE "Abort if there are missing optional dependencies" OFF) option(USE_LZMA "Build lzma decompression support" ON) set(WITH_CONV CACHE STRING "The library to use for charset conversions") option(ENABLE_BUILTIN_CONV "Build internal charset conversion routines" ON) option(DEBUG_EXTRA "Expensive debug options" OFF) option(SET_WARNING_FLAGS "Adjust compiler warning flags" ON) option(SET_OPTIMIZATION_FLAGS "Adjust compiler optimization flags" ON) option(USE_CXX11 "Try to use C++11 if available" ON) option(USE_DYNAMIC_UTIMENSAT "Dynamically load utimensat if not available at compile time" OFF) if(NOT DEFINED DEBUG AND CMAKE_BUILD_TYPE STREQUAL "Debug") set(DEBUG 1) endif() if(DEBUG) add_definitions(-DDEBUG=1) endif() set(default_USE_STATIC_LIBS OFF) if(WIN32) set(default_USE_STATIC_LIBS ON) endif() option(USE_STATIC_LIBS "Statically link libraries" ${default_USE_STATIC_LIBS}) option(LZMA_USE_STATIC_LIBS "Statically link liblzma" ${USE_STATIC_LIBS}) option(ZLIB_USE_STATIC_LIBS "Statically link libz" ${USE_STATIC_LIBS}) option(BZip2_USE_STATIC_LIBS "Statically link libbz2" ${USE_STATIC_LIBS}) option(Boost_USE_STATIC_LIBS "Statically link Boost" ${USE_STATIC_LIBS}) option(iconv_USE_STATIC_LIBS "Statically link libiconv" ${USE_STATIC_LIBS}) # Install destinations if(CMAKE_VERSION VERSION_LESS 2.8.5) set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE STRING "read-only architecture-independent data root (share) (relative to prefix).") set(CMAKE_INSTALL_BINDIR "bin" CACHE STRING "user executables (bin) (relative to prefix).") set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man" CACHE STRING "man documentation (DATAROOTDIR/man) (relative to prefix).") mark_as_advanced( CMAKE_INSTALL_DATAROOTDIR CMAKE_INSTALL_BINDIR CMAKE_INSTALL_MANDIR ) else() include(GNUInstallDirs) endif() # Helper scrips include(CheckSymbolExists) set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") # For custom cmake modules include(BuildType) include(CompileCheck) include(CreateSourceGroups) include(CXX11Check) include(Doxygen) include(FilterList) include(PrintConfiguration) include(StyleCheck) include(UseStaticLibs) include(VersionString) # Find required libraries # Win32 API if(WIN32) # Ensure we aren't using functionalities not found under Window XP SP1 add_definitions(-D_WIN32_WINNT=0x0502) add_definitions(-DNOMINMAX) add_definitions(-DWIN32_LEAN_AND_MEAN) endif() if(USE_STATIC_LIBS AND NOT MSVC) add_ldflag("-static-libstdc++") add_ldflag("-static-libgcc") endif() # Force re-checking libraries if the compiler or compiler flags change if((NOT LAST_CMAKE_CXX_FLAGS STREQUAL CMAKE_CXX_FLAGS) OR (NOT LAST_CMAKE_CXX_COMPILER STREQUAL CMAKE_CXX_COMPILER)) force_recheck_library(LZMA) force_recheck_library(Boost) force_recheck_library(ZLIB) force_recheck_library(BZip2) force_recheck_library(iconv) unset(Boost_INCLUDE_DIR CACHE) set(LAST_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE INTERNAL "The last C++ compiler flags") set(LAST_CMAKE_CXX_COMPILER "${CMAKE_CXX_COMPILER}" CACHE INTERNAL "The last C++ compiler") endif() unset(LIBRARIES) if(USE_LZMA) find_package(LZMA REQUIRED) check_link_library(LZMA LZMA_LIBRARIES) list(APPEND LIBRARIES ${LZMA_LIBRARIES}) include_directories(SYSTEM ${LZMA_INCLUDE_DIR}) add_definitions(${LZMA_DEFINITIONS}) set(INNOEXTRACT_HAVE_LZMA 1) else() message(WARNING "\nDisabling LZMA decompression support.\n" "You won't be able to extract most newer Inno Setup installers.") set(INNOEXTRACT_HAVE_LZMA 0) endif() find_package(Boost REQUIRED COMPONENTS iostreams filesystem date_time system program_options ) check_link_library(Boost Boost_LIBRARIES) list(APPEND LIBRARIES ${Boost_LIBRARIES}) link_directories(${Boost_LIBRARY_DIRS}) include_directories(SYSTEM ${Boost_INCLUDE_DIR}) has_static_libs(Boost Boost_LIBRARIES) if(Boost_HAS_STATIC_LIBS) use_static_libs(ZLIB) find_package(ZLIB REQUIRED) use_static_libs_restore() check_link_library(ZLIB ZLIB_LIBRARIES) list(APPEND LIBRARIES ${ZLIB_LIBRARIES}) use_static_libs(BZip2) find_package(BZip2 REQUIRED) use_static_libs_restore() check_link_library(BZip2 BZIP2_LIBRARIES) list(APPEND LIBRARIES ${BZIP2_LIBRARIES}) endif() set(INNOEXTRACT_HAVE_ICONV 0) set(INNOEXTRACT_HAVE_WIN32_CONV 0) set(INNOEXTRACT_HAVE_BUILTIN_CONV ${ENABLE_BUILTIN_CONV}) if(WIN32 AND (NOT WITH_CONV OR WITH_CONV STREQUAL "win32")) set(INNOEXTRACT_HAVE_WIN32_CONV 1) elseif(NOT WITH_CONV OR WITH_CONV STREQUAL "iconv") if(STRICT_USE) set(ICONV_REQUIRED REQUIRED) else() set(ICONV_REQUIRED) endif() find_package(iconv ${ICONV_REQUIRED}) if(ICONV_FOUND) check_link_library(iconv iconv_LIBRARIES) list(APPEND LIBRARIES ${iconv_LIBRARIES}) include_directories(SYSTEM ${iconv_INCLUDE_DIR}) add_definitions(${iconv_DEFINITIONS}) set(INNOEXTRACT_HAVE_ICONV 1) endif() elseif(WITH_CONV AND NOT WITH_CONV STREQUAL "builtin") message(FATAL_ERROR "Invalid WITH_CONV option: ${WITH_CONV}") endif() if(NOT INNOEXTRACT_HAVE_ICONV AND NOT INNOEXTRACT_HAVE_WIN32_CONV AND NOT INNOEXTRACT_HAVE_BUILTIN_CONV) message(WARNING "\nBuilding without any charset conversion support.\n" "Any non-ASCII characters in extracted filenames will be missing.") endif() # Set compiler flags if(Boost_VERSION LESS 104800) # Older Boost versions don't work with C++11 elseif(USE_CXX11) enable_cxx11() check_cxx11("alignof" INNOEXTRACT_HAVE_ALIGNOF) if(WIN32) check_cxx11("std::codecvt_utf8_utf16" INNOEXTRACT_HAVE_STD_CODECVT_UTF8_UTF16 1600) endif() check_cxx11("std::unique_ptr" INNOEXTRACT_HAVE_STD_UNIQUE_PTR 1600) endif() # Don't expose internal symbols to the outside world by default if(NOT MSVC) add_cxxflag("-fvisibility=hidden") add_cxxflag("-fvisibility-inlines-hidden") endif() # Older glibc versions won't provide some useful symbols by default - request them # This flag is currently also set by gcc when compiling C++, but not for plain C if(CMAKE_SYSTEM_NAME MATCHES "Linux") set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE=1") add_definitions(-D_GNU_SOURCE=1) endif() if(WIN32) # Define this so that we don't accitenally use ANSI functions add_definitions(-DUNICODE) add_definitions(-D_UNICODE) endif() # Check for optional functionality and system configuration if(NOT WIN32) check_symbol_exists(isatty "unistd.h" INNOEXTRACT_HAVE_ISATTY) check_symbol_exists(ioctl "sys/ioctl.h" INNOEXTRACT_HAVE_IOCTL) check_symbol_exists(timegm "time.h" INNOEXTRACT_HAVE_TIMEGM) check_symbol_exists(gmtime_r "time.h" INNOEXTRACT_HAVE_GMTIME_R) check_symbol_exists(AT_FDCWD "fcntl.h" INNOEXTRACT_HAVE_AT_FDCWD) if(INNOEXTRACT_HAVE_AT_FDCWD) check_symbol_exists(utimensat "sys/stat.h" INNOEXTRACT_HAVE_UTIMENSAT) endif() if(INNOEXTRACT_HAVE_UTIMENSAT AND INNOEXTRACT_HAVE_AT_FDCWD) set(INNOEXTRACT_HAVE_UTIMENSAT_d 1) else() if(USE_DYNAMIC_UTIMENSAT AND INNOEXTRACT_HAVE_AT_FDCWD) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS}) check_symbol_exists(dlsym "dlfcn.h" INNOEXTRACT_HAVE_DLSYM) check_symbol_exists(RTLD_DEFAULT "dlfcn.h" INNOEXTRACT_HAVE_RTLD_DEFAULT) unset(CMAKE_REQUIRED_LIBRARIES) if(INNOEXTRACT_HAVE_DLSYM AND INNOEXTRACT_HAVE_RTLD_DEFAULT) set(INNOEXTRACT_HAVE_DYNAMIC_UTIMENSAT 1) if(CMAKE_DL_LIBS) list(APPEND LIBRARIES ${CMAKE_DL_LIBS}) endif() endif() endif() check_symbol_exists(utimes "sys/time.h" INNOEXTRACT_HAVE_UTIMES) endif() check_symbol_exists(posix_spawnp "spawn.h" INNOEXTRACT_HAVE_POSIX_SPAWNP) if(NOT INNOEXTRACT_HAVE_POSIX_SPAWNP) check_symbol_exists(fork "unistd.h" INNOEXTRACT_HAVE_FORK) check_symbol_exists(execvp "unistd.h" INNOEXTRACT_HAVE_EXECVP) endif() if(INNOEXTRACT_HAVE_POSIX_SPAWNP OR (INNOEXTRACT_HAVE_FORK AND INNOEXTRACT_HAVE_EXECVP)) check_symbol_exists(waitpid "sys/wait.h" INNOEXTRACT_HAVE_WAITPID) endif() if(CMAKE_CXX_COMPILER_ID STREQUAL "PathScale") # EKOPath recognizes these but then fails to link else() check_builtin(INNOEXTRACT_HAVE_BUILTIN_BSWAP16 "__builtin_bswap16(0)") check_builtin(INNOEXTRACT_HAVE_BUILTIN_BSWAP32 "__builtin_bswap32(0)") check_builtin(INNOEXTRACT_HAVE_BUILTIN_BSWAP64 "__builtin_bswap64(0)") endif() if(NOT INNOEXTRACT_HAVE_BUILTIN_BSWAP16) check_symbol_exists(bswap_16 "byteswap.h" INNOEXTRACT_HAVE_BSWAP_16) endif() if(NOT INNOEXTRACT_HAVE_BUILTIN_BSWAP32) check_symbol_exists(bswap_32 "byteswap.h" INNOEXTRACT_HAVE_BSWAP_32) endif() if(NOT INNOEXTRACT_HAVE_BUILTIN_BSWAP64) check_symbol_exists(bswap_64 "byteswap.h" INNOEXTRACT_HAVE_BSWAP_64) endif() endif() # All sources: set(DOCUMENTATION 0) # never build these set(INNOEXTRACT_SOURCES src/index.hpp if DOCUMENTATION src/release.hpp src/cli/debug.hpp src/cli/debug.cpp if DEBUG src/cli/extract.hpp src/cli/extract.cpp src/cli/gog.hpp src/cli/gog.cpp src/cli/main.cpp src/crypto/adler32.hpp src/crypto/adler32.cpp src/crypto/checksum.hpp src/crypto/checksum.cpp src/crypto/crc32.hpp src/crypto/crc32.cpp src/crypto/hasher.cpp src/crypto/hasher.cpp src/crypto/iteratedhash.hpp src/crypto/md5.hpp src/crypto/md5.cpp src/crypto/sha1.hpp src/crypto/sha1.cpp src/loader/exereader.hpp src/loader/exereader.cpp src/loader/offsets.hpp src/loader/offsets.cpp src/setup/component.hpp src/setup/component.cpp src/setup/data.hpp src/setup/data.cpp src/setup/delete.hpp src/setup/delete.cpp src/setup/directory.hpp src/setup/directory.cpp src/setup/expression.hpp src/setup/expression.cpp src/setup/file.hpp src/setup/file.cpp src/setup/filename.hpp src/setup/filename.cpp src/setup/header.hpp src/setup/header.cpp src/setup/icon.hpp src/setup/icon.cpp src/setup/info.hpp src/setup/info.cpp src/setup/ini.hpp src/setup/ini.cpp src/setup/item.hpp src/setup/item.cpp src/setup/language.hpp src/setup/language.cpp src/setup/message.hpp src/setup/message.cpp src/setup/permission.hpp src/setup/permission.cpp src/setup/registry.hpp src/setup/registry.cpp src/setup/run.hpp src/setup/run.cpp src/setup/task.hpp src/setup/task.cpp src/setup/type.hpp src/setup/type.cpp src/setup/version.hpp src/setup/version.cpp src/setup/windows.hpp src/setup/windows.cpp src/stream/block.hpp src/stream/block.cpp src/stream/checksum.hpp src/stream/chunk.hpp src/stream/chunk.cpp src/stream/exefilter.hpp src/stream/file.hpp src/stream/file.cpp src/stream/lzma.hpp src/stream/lzma.cpp if INNOEXTRACT_HAVE_LZMA src/stream/restrict.hpp src/stream/slice.hpp src/stream/slice.cpp src/util/align.hpp src/util/ansi.hpp src/util/boostfs_compat.hpp src/util/console.hpp src/util/console.cpp src/util/encoding.hpp src/util/encoding.cpp src/util/endian.hpp src/util/enum.hpp src/util/flags.hpp src/util/fstream.hpp src/util/load.hpp src/util/load.cpp src/util/log.hpp src/util/log.cpp src/util/math.hpp src/util/output.hpp src/util/process.hpp src/util/process.cpp src/util/storedenum.hpp src/util/time.hpp src/util/time.cpp src/util/types.hpp src/util/unique_ptr.hpp src/util/windows.hpp src/util/windows.cpp if WIN32 ) filter_list(INNOEXTRACT_SOURCES ALL_INNOEXTRACT_SOURCES) create_source_groups(ALL_INNOEXTRACT_SOURCES) # Prepare generated files include_directories(src ${CMAKE_CURRENT_BINARY_DIR}) configure_file("src/configure.hpp.in" "configure.hpp") set(VERSION_FILE "${CMAKE_BINARY_DIR}/release.cpp") set(VERSION_SOURCES VERSION "VERSION" LICENSE "LICENSE") version_file("src/release.cpp.in" "${VERSION_FILE}" "${VERSION_SOURCES}" ".git") list(APPEND INNOEXTRACT_SOURCES ${VERSION_FILE}) # Main targets add_executable(innoextract ${INNOEXTRACT_SOURCES}) target_link_libraries(innoextract ${LIBRARIES}) install(TARGETS innoextract RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES doc/innoextract.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 OPTIONAL) # Additional targets. add_style_check_target(style "${ALL_INNOEXTRACT_SOURCES}" innoextract) add_doxygen_target(doc "doc/Doxyfile.in" "VERSION" ".git" "${CMAKE_BINARY_DIR}/doc") # Print a configuration summary message("") message("Configuration:") set(BUILD_TYPE_SUFFIX "") if(DEBUG AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug") set(BUILD_TYPE_SUFFIX "${BUILD_TYPE_SUFFIX} with debug output") elseif(NOT DEBUG AND NOT CMAKE_BUILD_TYPE STREQUAL "Release") set(BUILD_TYPE_SUFFIX "${BUILD_TYPE_SUFFIX} without debug output") endif() message(" - Build type: ${CMAKE_BUILD_TYPE}${BUILD_TYPE_SUFFIX}") print_configuration("LZMA decompression" FIRST INNOEXTRACT_HAVE_LZMA "enabled" 1 "disabled" ) if(INNOEXTRACT_HAVE_DYNAMIC_UTIMENSAT) set(time_prefix "nanoseconds if supported, ") set(time_suffix " otherwise") endif() print_configuration("File time precision" FIRST INNOEXTRACT_HAVE_UTIMENSAT_d "nanoseconds" WIN32 "100-nanoseconds" INNOEXTRACT_HAVE_UTIMES "${time_prefix}microseconds${time_suffix}" 1 "${time_prefix}seconds${time_suffix}" ) print_configuration("Charset conversion" INNOEXTRACT_HAVE_ICONV "iconv" INNOEXTRACT_HAVE_WIN32_CONV "Win32" INNOEXTRACT_HAVE_BUILTIN_CONV "builtin" ) message("") innoextract-1.6/LICENSE000066400000000000000000000015661270167745200147460ustar00rootroot00000000000000 Copyright (C) 2011-2016 Daniel Scharrer This software is provided 'as-is', without any express or implied warranty. In no event will the author(s) be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. innoextract-1.6/README.md000066400000000000000000000137341270167745200152200ustar00rootroot00000000000000 # innoextract - A tool to unpack installers created by Inno Setup [Inno Setup](http://www.jrsoftware.org/isinfo.php) is a tool to create installers for Microsoft Windows applications. innoextract allows to extract such installers under non-Windows systems without running the actual installer using wine. innoextract currently supports installers created by Inno Setup 1.2.10 to 5.5.5. innoextract is available under the ZLIB license - see the LICENSE file. See the website for [Linux packages](http://constexpr.org/innoextract/#packages). ## Contact [Website](http://constexpr.org/innoextract/) Author: [Daniel Scharrer](http://constexpr.org/) ## Dependencies * **[Boost](http://www.boost.org/) 1.37** or newer * **liblzma** from [xz-utils](http://tukaani.org/xz/) *(optional)* * **iconv** (*optional*, either as part of the system libc, as is the case with [glibc](http://www.gnu.org/software/libc/) and [uClibc](http://www.uclibc.org/), or as a separate [libiconv](http://www.gnu.org/software/libiconv/)) For Boost you will need the headers as well as the `iostreams`, `filesystem`, `date_time`, `system` and `program_options` libraries. Older Boost version may work but are not actively supported. The boost `iostreams` library needs to be build with zlib and bzip2 support. While innoextract can be built without liblzma by manually setting `-DUSE_LZMA=OFF`, it is highly recommended and you won't be able to extract most installers created by newer Inno Setup versions without it. To build innoextract you will also need **[CMake](http://cmake.org/) 2.8** and a working C++ compiler, as well as the development headers for liblzma and boost. See the Website for [operating system-specific instructions](http://constexpr.org/innoextract/install). ## Compile and install To compile innoextract, run: $ mkdir -p build && cd build $ cmake .. $ make To install the binaries system-wide, run as root: # make install Build options: | Option | Default | Description | |:------------------------ |:---------:|:----------- | | `USE_LZMA` | `ON` | Use `liblzma`. | `WITH_CONV` | *not set* | The charset conversion library to use. Valid values are `iconv`, `win32` and `builtin`^1. If not set, a library appropriate for the target platform will be chosen. | `ENABLE_BUILTIN_CONV` | `ON` | Build internal Windows-1252 and UTF-16LE to UTF-18 charset conversion routines. These might be used even if `WITH_CONV` is not set to `builtin`. | `CMAKE_BUILD_TYPE` | `Release` | Set to `Debug` to enable debug output. | `DEBUG` | `OFF`^2 | Enable debug output and runtime checks. | `DEBUG_EXTRA` | `OFF` | Expensive debug options. | `SET_WARNING_FLAGS` | `ON` | Adjust compiler warning flags. This should not affect the produced binaries but is useful to catch potential problems. | `SET_OPTIMIZATION_FLAGS` | `ON` | Adjust compiler optimization flags. For non-debug builds the only thing this does is instruct the linker to only link against libraries that are actually needed. | `USE_CXX11` | `ON` | Try to compile in C++11 mode if available. | `USE_DYNAMIC_UTIMENSAT` | `OFF` | Dynamically load utimensat(2) if not available at compile time | `USE_STATIC_LIBS` | `OFF`^3 | Turns on static linking for all libraries, including `-static-libgcc` and `-static-libstdc++`. You can also use the individual options below: | `LZMA_USE_STATIC_LIBS` | `OFF`^4 | Statically link `liblzma`. | `Boost_USE_STATIC_LIBS` | `OFF`^4 | Statically link Boost. See also `FindBoost.cmake` | `ZLIB_USE_STATIC_LIBS` | `OFF`^4 | Statically link `libz`. (used via Boost) | `BZip2_USE_STATIC_LIBS` | `OFF`^4 | Statically link `libbz2`. (used via Boost) | `iconv_USE_STATIC_LIBS` | `OFF`^4 | Statically link `libiconv`. | `STRICT_USE` | `OFF` | Abort if there are missing optional dependencies 1. The builtin charset conversion only supports Windows-1252 and UTF-16LE. This is normally enough for filenames, but custom message strings (which can be included in filenames) may use arbitrary encodings. 2. Enabled automatically if `CMAKE_BUILD_TYPE` is set to `Debug`. 3. Under Windows, the default is `ON`. 4. Default is `ON` if `USE_STATIC_LIBS` is enabled. Install options: | Option | Default | Description | |:--------------------------- |:--------------------:|:----------- | | `CMAKE_INSTALL_PREFIX` | `/usr/local` | Where to install innoextract. | `CMAKE_INSTALL_BINDIR` | `bin` | Location for binaries (relative to prefix). | `CMAKE_INSTALL_DATAROOTDIR` | `share` | Location for data files (relative to prefix). | `CMAKE_INSTALL_MANDIR` | `${DATAROOTDIR}/man` | Location for man pages (relative to prefix). Set options by passing `-D