{% extends "base.html" %} {% import '_ui.html' as ui %} {% block title %}Image Import - PXE Server Manager{% endblock %} {# Image import: two panels (network upload folder, USB drive), then the images one line each. Submitting asks for confirmation (upload-folder sources are MOVED, same-name files are overwritten) and then disables the button with a spinner while the import runs. #} {% block extra_head %} {% endblock %} {% block content %} {{ ui.head('Image import', 'Images', "Copy WinPE deployment content into an image's Deploy folder, from the network upload share or a USB drive.") }}

From the network upload share

Uploaded by Upload-Image.ps1 to \\172.16.9.1\image-upload and checked file by file. They are moved, not copied.

{% set man = upload_info.manifest %} {% set st = upload_info.state %} {% if man %}
Upload{{ man.upload_id }}
{% if man.mcl %}
MCL cache{{ man.mcl.os_name or 'Unknown OS' }}{% if man.mcl.os_version %} {{ man.mcl.os_version }}{% endif %}, finished {{ (man.mcl.finished or '?')|replace('T', ' ') }}
{% endif %}
Files{{ man.files }} ({{ man.bytes|filesizeformat(true) }})
Verified {% if st.state == 'running' %}{{ ui.chip('Checking ' ~ st.done_files ~ '/' ~ st.total_files, 'warn') }} {% elif st.state == 'done' and st.ok %}{{ ui.chip('Every file matches', 'ok') }} {{ (st.finished or '')|replace('T', ' ') }} {% elif st.state == 'done' %}{{ ui.chip((st.missing|length + st.mismatch|length + st.bad_in_cache|length) ~ ' bad file(s)', 'err') }} {% elif st.state == 'error' %}{{ ui.chip('Check failed', 'err') }} {{ st.error }} {% else %}{{ ui.chip('Not verified', 'off') }}{% endif %}
{% if st.state == 'done' and not st.ok %}
Bad files
    {% for f in st.missing %}
  • Missing: {{ f }}
  • {% endfor %} {% for f in st.mismatch %}
  • Differs: {{ f.path }}
  • {% endfor %} {% for f in st.bad_in_cache %}
  • Bad in MCL cache: {{ f.path }}
  • {% endfor %}

Run Upload-Image.ps1 again: it re-sends the files that differ. Files bad in the MCL cache must be downloaded again by MCL.

{% endif %} {% endif %} {% if upload_info.extra_count %}
{{ upload_info.extra_count }} file(s) in the upload folder are not part of this upload, left from an earlier one. They would be imported with it.
Show them
    {% for f in upload_info.extra %}
  • {{ f }}
  • {% endfor %} {% if upload_info.extra_count > upload_info.extra|length %}
  • and {{ upload_info.extra_count - upload_info.extra|length }} more
  • {% endif %}
{% endif %} {% if upload_ok %}
{% set allowed = upload_info.allowed_targets %} {% if upload_info.os %}This upload carries {{ upload_info.os.name }}{% if upload_info.os.version %} {{ upload_info.os.version }}{% endif %}, so it can only go to the image(s) listed.{% endif %} Out-of-box Drivers are pooled once in a shared folder and linked from each image.
The files are moved out of the upload folder, so the source is used up. Files with the same name in the image are overwritten. Large images take several minutes.
{% elif upload_sources %}
Import blocked: {{ upload_reason }}
{% else %}
{{ ui.chip('Nothing uploaded', 'off') }}

On the PC with the Media Creator Lite cache, run scripts\Upload-Image.ps1. It copies the cache here and checks every file.

{% endif %}

From a USB drive

A drive mounted under /mnt/ or /media/. Files are copied.

{% if usb_mounts %}
The drive holding the WinPE deployment content.
Content goes into the image's Deploy folder.
Files with the same name in the image are overwritten. Large images take several minutes.
{% else %}
{{ ui.chip('No USB drive', 'off') }}

No mounted USB drive was found under /mnt/ or /media/. Mount one and refresh.

{% endif %}

Images

{{ ui.chip(images | length, 'neutral') }}
{% for img in images %}
{{ img.friendly_name }} {{ img.image_type }}/Deploy {% if img.has_content %}{{ ui.chip('Present', 'ok') }}{% else %}{{ ui.chip('Empty', 'off') }}{% endif %} {% if img.has_unattend %}{{ ui.chip('Unattend', 'neutral') }}{% else %}No unattend{% endif %} {% if img.image_type in image_types %}Open{% else %}{% endif %}
{% endfor %}
{% endblock %} {% block extra_scripts %} {% endblock %}