# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-script_name="$(basename $0)"
+script_name="$(basename "$0")"
PREFIX_REG="::"
WIMLIB_VERSION=@VERSION@
imagex=@IMAGEX_PROGNAME@
-A, --waik-dir=DIR Get the boot files and boot.wim from the ISO of the
Windows Automated Installation Kit mounted on DIR
instead of from the Windows 7 or Windows 8 DVD.
+ This also works if the mounted ISO is for the
+ WAIK supplement rather than the WAIK itself.
-s, --start-script=FILE Add FILE to the root directory of Windows PE image
and adjust \Windows\System32\winpeshl.ini to
execute FILE when Windows PE starts up.
- -w, --wim=WIM Use WIM as the boot.wim file. Defaults to
- sources/boot.wim in the Windows DVD directory, or
- F1_WINPE.WIM from the WAIK if --waik-dir is
- specified.
+ -w, --wim=WIM Use WIM as the boot.wim file. This defaults to the
+ appropriate WIM file from the Windows DVD, WAIK,
+ or WAIK supplement.
-O, --overlay=DIR Adds all the files in DIR to the Windows PE image.
-t, --tmp-dir=DIR Use DIR as the temporary base of the ISO filesystem.
Defaults to making one using "mktemp -d".
fi
fi
- if [ -n "$waik_dir" ]; then
+ if [ -n "$waik_dir" ] && [ -f "$waik_dir"/wAIK${arch}.msi ]; then
if ! type -P cabextract &> /dev/null ; then
cat << EOF
ERROR: The boot files in the Windows Automated Installation Kit (WAIK) are
get_primary_boot_files() {
if [ -n "$waik_dir" ]; then
# Get boot files from the WAIK.
-
stat_busy "Copying primary boot files from the Windows Automated Installation Kit ($waik_dir, $arch)"
- if [ $make = iso ]; then
- cabextract "$waik_dir"/wAIK${arch}.msi -F F_WINPE_${arch}_etfsboot.com -p \
- > "$tmp_dir"/etfsboot.com || stat_fail
+
+ if [ -f "$waik_dir"/wAIK${arch}.msi ]; then
+ if [ $make = iso ]; then
+ cabextract "$waik_dir"/wAIK${arch}.msi -F F_WINPE_${arch}_etfsboot.com -p \
+ > "$tmp_dir"/etfsboot.com || stat_fail
+ fi
+ cabextract "$waik_dir"/wAIK${arch}.msi -F F${arch_id}_BOOTMGR -p \
+ > "$tmp_dir"/bootmgr || stat_fail
+ cabextract "$waik_dir"/wAIK${arch}.msi -F F_WINPE_${arch}_boot.sdi -p \
+ > "$tmp_dir"/boot/boot.sdi || stat_fail
+ cabextract "$waik_dir"/wAIK${arch}.msi -F F_WINPE_${arch}_bcd -p \
+ > "$tmp_dir"/boot/bcd || stat_fail
+ # The WAIK supplement disc has a different structure
+ else
+ # Note: fuseiso, mount default to map=normal i.e. lowercase
+ if [ $make = iso ]; then
+ cp "$waik_dir"/${arch,,}/boot/etfsboot.com $tmp_dir/etfsboot.com || stat_fail
+ fi
+ cp "$waik_dir"/${arch,,}/bootmgr $tmp_dir/bootmgr || stat_fail
+ cp "$waik_dir"/${arch,,}/boot/boot.sdi $tmp_dir/boot/boot.sdi || stat_fail
+ cp "$waik_dir"/${arch,,}/boot/bcd $tmp_dir/boot/bcd || stat_fail
fi
- cabextract "$waik_dir"/wAIK${arch}.msi -F F${arch_id}_BOOTMGR -p \
- > "$tmp_dir"/bootmgr || stat_fail
- cabextract "$waik_dir"/wAIK${arch}.msi -F F_WINPE_${arch}_boot.sdi -p \
- > "$tmp_dir"/boot/boot.sdi || stat_fail
- cabextract "$waik_dir"/wAIK${arch}.msi -F F_WINPE_${arch}_bcd -p \
- > "$tmp_dir"/boot/bcd || stat_fail
stat_done
else
# Get boot files from the Windows ISO
# WIM file unspecified- grab it from the WAIK or the Windows DVD
if [ -n "$waik_dir" ]; then
# WAIK
- stat_busy "Extracting boot.wim from \"$waik_dir/WinPE.cab\""
- cabextract "$waik_dir/WinPE.cab" -F F${arch_id}_WINPE.WIM -p \
- > "$boot_wim" 2>/dev/null || stat_fail
+ if [ -f "$waik_dir/WinPE.cab" ]; then
+ stat_busy "Extracting boot.wim from \"$waik_dir/WinPE.cab\""
+ cabextract "$waik_dir/WinPE.cab" -F F${arch_id}_WINPE.WIM -p \
+ > "$boot_wim" 2>/dev/null || stat_fail
+ # WAIK supplement has different layout
+ else
+ stat_busy "Copying boot.wim from \"${waik_dir}/${arch,,}/winpe.wim\""
+ cp "$waik_dir"/${arch,,}/winpe.wim "$boot_wim" || stat_fail
+ chmod +w "$boot_wim"
+ fi
stat_done
else
# Windows DVD