}
version() {
- echo "$script_name (wimlib $WIMLIB_VERSION)"
+ echo "$script_name (distributed with wimlib $WIMLIB_VERSION)"
exit 0
}
check_needed_programs() {
if [ -z "$waik_dir" -o -n "$modify_wim" ]; then
- if ! type -P @IMAGEX_PROGNAME@ &> /dev/null ; then
+ if ! type -P "$imagex" &> /dev/null ; then
cat << EOF
ERROR: To make a customized image of Windows PE, we need the "$imagex" program
from "wimlib" so that we can modify the boot.wim file. However, "$imagex"
if [ -n "$start_script" ]; then
stat_busy "Setting \"$start_script\" as the script to be executed when Windows PE boots"
- cp "$start_script" "$tmp_dir/$start_script"
+ start_script_base="$(basename "$start_script")"
cat > "$tmp_dir/__mkwinpeimg.winpeshl.ini" <<- EOF
[LaunchApps]
- %SYSTEMDRIVE%\\$start_script
+ %SYSTEMDRIVE%\\$start_script_base
EOF
cat 1>&3 <<- EOF
- add '$tmp_dir/$start_script' '/$start_script'
+ add '$start_script' '/$start_script_base'
delete --force /Windows/System32/winpeshl.ini
add '$tmp_dir/__mkwinpeimg.winpeshl.ini' /Windows/System32/winpeshl.ini
EOF
mkisofs -sysid "" -A "" -V "Microsoft Windows PE ($arch)" -d -N \
-b etfsboot.com -no-emul-boot -c boot.cat -hide etfsboot.com \
- -hide boot.cat -quiet -o "$image" "$tmp_dir" || stat_fail
+ -hide boot.cat -quiet -o "$image" "$tmp_dir" 1>&4 || stat_fail
stat_done
}
export MTOOLSRC="$mtool_conf"
- mformat -h 255 -s 63 -T $(( image_size / 512)) s:
- mcopy -s "$tmp_dir"/* s:
+ mformat -h 255 -s 63 -T $(( image_size / 512)) s: || stat_fail
+ mcopy -s "$tmp_dir"/* s: || stat_fail
syslinux --install "$image"
- mcopy /usr/lib/syslinux/chain.c32 s:
+
+ syslinuxdir="/usr/lib/syslinux"
+
+ if [ -d "$syslinuxdir/bios" ]; then
+ biosdir="$syslinuxdir/bios"
+ else
+ biosdir="$syslinuxdir"
+ fi
+
+ mcopy "$biosdir/chain.c32" s: || stat_fail
+ if [ -e "$biosdir/libcom32.c32" ]; then
+ mcopy "$biosdir/libcom32.c32" s:
+ fi
+ if [ -e "$biosdir/libutil.c32" ]; then
+ mcopy "$biosdir/libutil.c32" s:
+ fi
mcopy - 's:syslinux.cfg' <<- EOF
DEFAULT winpe
LABEL winpe
calc_columns
tmp_dir="$(mktemp -d)"
process_command_line "$@"
+
+if [ "$image" = "-" ] ; then
+ # Writing image to standard output
+ if [ "$make" != iso ]; then
+ echo "ERROR: Writing image to standard output is only supported in --iso mode!"
+ exit 1
+ fi
+ # We can't print anything to standard output except the ISO image
+ # itself. Play with the file descriptors.
+
+ exec 4>&1 # 4 is now the original standard output.
+ exec 1>&2 # Anything that goes to standard output now, by default,
+ # actually goes to standard error.
+else
+ exec 4>&1 # 4 is now a copy of standard output
+fi
if [ -z "$waik_dir" ]; then
find_windows_dir
fi
make_disk_img "$image"
fi
-echo "The image ($image) is $(stat -c %s "$image") bytes."
+if [ "$image" != "-" ]; then
+ echo "The image ($image) is $(stat -c %s "$image") bytes."
+fi