# extract the content of an archive using msiextract
# USAGE: archive_extraction_using_msiextract $archive $destination_directory $log_file
archive_extraction_using_msiextract() {
	local archive destination_directory log_file
	archive="$1"
	destination_directory="$2"
	log_file="$3"

	local archive_path
	archive_path=$(archive_path "$archive")

	local extractor_options
	extractor_options=$(archive_extractor_options "$archive")
	if ! {
		printf 'msiextract %s --directory "%s" "%s"\n' "$extractor_options" "$destination_directory" "$archive_path"
		msiextract $extractor_options --directory "$destination_directory" "$archive_path" 2>&1
	} >> "$log_file"
	then
		error_archive_extraction_failure "$archive"
		return 1
	fi
	## TODO: Paths conversion to lower case should not be enforced.
	tolower "$destination_directory"
}

