WIMUPDATE(1) User Commands WIMUPDATE(1)

wimupdate - به‌روزرسانی یک تصویر WIM

wimupdate WIMFILE [IMAGE] [OPTION...] [< CMDFILE]

دستور wimupdate، یا معادل آن wimlib-imagex update، تصویر مشخص‌شدهٔ IMAGE را در بایگانی Windows Imaging (WIM) به نام WIMFILE با افزودن، حذف یا تغییر نام فایل‌ها یا دایرکتوری‌ها در آن اصلاح می‌کند.

آرگومان IMAGE تصویری را در WIMFILE مشخص می‌کند که باید به‌روزرسانی شود. این مقدار می‌تواند نمایهٔ مبتنی بر ۱ تصویر یا نام آن باشد. اگر WIMFILE تنها شامل یک تصویر باشد، می‌توان این آرگومان را نادیده گرفت. برای فهرست کردن تصاویر موجود در WIMFILE می‌توانید از wiminfo(1) استفاده کنید.

تغییراتی که باید روی تصویر WIM انجام شوند به صورت توالی‌ای از دستورها، یک دستور در هر خط، از یک فایل متنی (با کدگذاری UTF-8 یا UTF-16LE؛ اسکی ساده نیز قابل قبول است) از ورودی استاندارد خوانده می‌شوند. توصیه می‌شود ورودی استاندارد همان‌طور که در بالا نشان داده شده است از یک فایل (CMDFILE) تغییر مسیر داده شود، نه اینکه دستورها به صورت تعاملی تایپ شوند. در غیر این صورت، برای تعیین مستقیم یک دستور در خط فرمان، گزینهٔ --command را ببینید.

این بخش دستورهایی را که ممکن است در CMDFILE شرح‌داده‌شده در بالا ظاهر شوند، مستند می‌کند.

افزودن یک فایل یا درخت دایرکتوری به تصویر WIM. مقدار SOURCE باید مسیر یک فایل یا دایرکتوری را در سیستم‌فایل شما مشخص کند. مقدار DESTINATION باید مسیری را درون تصویر WIM مشخص کند که فایل یا درخت دایرکتوری باید در آن افزوده شود.

اگر DESTINATION نام یک دایرکتوری موجود در تصویر WIM باشد، SOURCE نیز باید نام یک دایرکتوری باشد. این امر باعث می‌شود که محتویات دایرکتوری SOURCE به دایرکتوری DESTINATION افزوده شود.

اگر DESTINATION نام یک فایل غیردایرکتوری موجود در تصویر WIM باشد، SOURCE نیز باید نام یک فایل غیردایرکتوری باشد. به طور پیش‌فرض، این کار باعث می‌شود فایل DESTINATION با فایل SOURCE جایگزین شود؛ یا در صورت تعیین --no-replace، این عمل یک خطا ایجاد می‌کند.

اگر DESTINATION در تصویر WIM وجود نداشته باشد، تمام دایرکتوری‌های پیش‌نیاز در صورت لزوم برای افزودن SOURCE در آن مکان ایجاد می‌شوند.

دستور add از زیرمجموعه‌ای از گزینه‌های پذیرفته‌شده توسط wimcapture پشتیبانی می‌کند؛ به‌ویژه --dereference، --unix-data، --no-acls و --strict-acls. برای توضیحات این گزینه‌ها wimcapture(1) را ببینید.

علاوه بر این، دستور add از گزینهٔ --no-replace پشتیبانی می‌کند که باعث می‌شود دستور add از بازنویسی فایل‌های غیردایرکتوری موجود در تصویر WIM خودداری کند.

حذف یک فایل یا درخت دایرکتوری از تصویر WIM. مقدار PATH باید مسیر فایل یا درخت دایرکتوری مورد نظر برای حذف را درون تصویر WIM مشخص کند.

گزینه‌های موجود برای دستور delete عبارتند از:

اگر مسیر مورد نظر برای حذف وجود نداشته باشد، خطایی صادر نشود.
حذف فایل یا درخت دایرکتوری به صورت بازگشتی؛ در صورت عدم تعیین، اگر مسیر مورد نظر برای حذف یک دایرکتوری باشد، خطا صادر می‌شود.

تغییر نام یک فایل یا درخت دایرکتوری درون تصویر WIM. مقدار OLD_PATH باید مسیر قبلی فایل یا درخت دایرکتوری درون تصویر WIM را مشخص کند و NEW_PATH باید مسیر جدید را برای فایل یا درخت دایرکتوری مشخص نماید. این دستور از معناشناسی تابع rename (3) در POSIX پیروی می‌کند؛ به‌ویژه، اگر فایلی از پیش در NEW_PATH وجود داشته باشد حذف خواهد شد، مگر در موارد خاصی مانند تلاش برای تغییر نام یک دایرکتوری به یک غیردایرکتوری که مجاز نیست.

هیچ گزینه‌ای برای دستور rename وجود ندارد.

گزینه‌های زیر در خط فرمان توسط خود wimupdate پذیرفته می‌شوند:

استفاده از --dereference برای تمام دستورهای add.
استفاده از --unix-data برای تمام دستورهای add.
استفاده از --no-acls برای تمام دستورهای add.
استفاده از --strict-acls برای تمام دستورهای add.
استفاده از --no-replace برای تمام دستورهای add.
تنظیم فایل پیکربندی ضبط برای تمام دستورهای add. توضیحات این گزینه را در wimcapture(1) ببینید.
استفاده از --force برای تمام دستورهای delete.
استفاده از --recursive برای تمام دستورهای delete.
پیش از به‌روزرسانی WIM، در صورتی که حاوی اطلاعات یکپارچگی اضافی باشد، صحت آن را بررسی می‌کند. همچنین اطلاعات یکپارچگی اضافی را در WIM به‌روزشده می‌گنجاند، حتی اگر قبلاً وجود نداشته باشد.
گنجاندن اطلاعات یکپارچگی اضافی در WIM به‌روزشده؛ یعنی مانند --check اما بدون بررسی صحت WIM از پیش.
تعداد ریسه‌های مورد استفاده برای فشرده‌سازی فایل‌های تازه اضافه‌شده. پیش‌فرض: تشخیص خودکار (تعداد پردازنده‌ها).
بازسازی کل WIM به جای پیوست کردن داده‌های به‌روزشده به انتهای آن. بازسازی WIM کندتر است، اما مقدار کمی فضا صرفه‌جویی می‌کند که در غیر این صورت به عنوان یک حفره در فایل WIM باقی می‌ماند.
برای روشی با قابلیت سفارشی‌سازی بیشتر جهت بازسازی (و در صورت تمایل فشرده‌سازی مجدد) یک فایل WIM، wimoptimize(1) را ببینید. در صورت اجرای wimoptimize پس از wimupdate، نیازی به مشخص کردن --rebuild برای wimupdate نیست.
به جای خواندن دستورهای به‌روزرسانی از ورودی استاندارد، یک دستور به‌روزرسانی منفرد را مستقیماً از رشتهٔ STRING مشخص‌شده در خط فرمان می‌خواند. این گزینه را نمی‌توان بیش از یک بار مشخص کرد و نمی‌توان از آن برای تعیین بیش از یک دستور به‌روزرسانی استفاده نمود. توجه داشته باشید که STRING و همچنین هر مسیری درون STRING که شامل فاصله است باید به درستی در علامت نقل‌قول (کوتیشن) قرار گیرند. در صورت اجرا از cmd.exe در ویندوز، باید از گیومه دوتایی (double quotes) برای نقل‌قول بیرونی و گیومه تکی (single quotes) برای نقل‌قول درونی استفاده کنید. مثال:
wimupdate boot.wim 1 --command="add 'C:\My Dir' '\My Dir'"
این گزینه صرفاً برای سهولت ارائه شده است. دستور wimupdate را چندین بار پشت‌سرهم با ارسال گزینهٔ --command در هر بار اجرا نکنید! این کار ناکارآمد است. در عوض، همان‌طور که در این سند توضیح داده شده است، یک فایل دستورهای به‌روزرسانی ایجاد کنید و آن را (از طریق ورودی استاندارد) به یک فراخوانی منفرد از wimupdate تحویل دهید.
در صورت مشخص شدن این گزینه، هیچ دستوری از ورودی استاندارد خوانده نخواهد شد و به جای آن دستور زیر اجرا می‌شود:
add FILE /Windows/System32/WimBootCompress.ini
این گزینه FILE را به عنوان فایل پیکربندی WIMBoot برای تصویر تنظیم می‌کند. بخش [PrepopulateList] در این فایل، الگوهای مسیر را مشخص می‌کند که نباید به عنوان فایل‌های اشاره‌گر WIMBoot استخراج شوند (احتمالاً به دلیل نیاز داشتن به آن‌ها در مراحل اولیه فرایند راه‌اندازی/بوت). برای اطلاعات بیشتر به مستندات مربوط به گزینهٔ --wimboot در wimapply(1) مراجعه کنید.
بایگانی WIM را درجا فشرده کرده و هرگونه دادهٔ جدید را پیوست می‌کند و «حفره‌ها» را از بین می‌برد. این کار کارآمد است، اما به‌طور کلی این گزینه نباید استفاده شود، زیرا فشرده‌سازی ناموفق یا قطع‌شده باعث خرابی بایگانی WIM خواهد شد. برای اطلاعات بیشتر، مستندات مربوط به این گزینه را در wimoptimize(1) ببینید.
الگوی فایلی (glob) مربوط به WIMهایی که WIM تفاضلی (delta WIM) بر پایهٔ آن‌ها استوار است. به‌روزرسانی WIMهای چندبخشی (split WIMs) مجاز نیست، اما به‌روزرسانی WIMهای تفاضلی مجاز است. هنگام به‌روزرسانی یک WIM تفاضلی، WIMهایی که WIM تفاضلی بر پایهٔ آن‌ها است باید با استفاده از این گزینه مشخص شوند. (این یک الزام قطعی نیست، اما برای کارکرد کامل حذف داده‌های تکراری و به‌روزرسانی صحیح آمار TOTALBYTES لازم است.)

دستور wimupdate را می‌توان همپوشان با wimmountrw دانست، چرا که یک تصویر WIM را می‌توان با اتصال (mount) به صورت خواندن-نوشتن نیز به‌روزرسانی کرد. با این حال، wimupdate روی تمام پلتفرم‌ها از جمله ویندوز کار می‌کند، در حالی که wimmountrw تنها روی لینوکس کارایی دارد.

پیوندهای نمادین درون تصویر WIM هنگام تفسیر شدن ارجاع‌زدایی (dereference) نمی‌شوند. بنابراین، به عنوان مثال، اگر تصویر WIM شما حاوی یک پیوند نمادین به صورت "/Documents and Settings" -> "/Users" باشد که در آن "/Users" یک دایرکتوری است، یک زیردایرکتوری به نام "Public" در این دایرکتوری باید به صورت "/Users/Public" مشخص شود، نه "/Documents and Settings/Public".

تمام مسیرهای فایل‌ها یا دایرکتوری‌ها درون تصویر WIM باید نسبت به ریشهٔ تصویر مشخص شوند. با این حال، اسلش ابتدایی اختیاری است و هر دو اسلش رو به جلو (forward slash) و بک‌اسلش (backslash) پذیرفته می‌شوند. علاوه بر این، در ویندوز مسیرها به طور پیش‌فرض بدون حساسیت به حروف کوچک و بزرگ پردازش می‌شوند، در حالی که در سیستم‌های شبه‌یونیکس، مسیرها به حروف بزرگ و کوچک حساس هستند. حساسیت پیش‌فرض به حروف بزرگ و کوچک را می‌توان با تنظیم متغیر محیطی WIMLIB_IMAGEX_IGNORE_CASE روی 0 یا 1 تغییر داد.

فایل دستورها (CMDFILE) توسط خود wimupdate تجزیه می‌شود و نه پوستهٔ سیستم. بنابراین، نحو آن محدود است. با این حال، خطوط توضیحی که با '#' شروع می‌شوند مجاز هستند، و همچنین نقل‌قول کردن آرگومان‌هایی که حاوی فاصله هستند ممکن است.

در سیستم‌های شبه‌یونیکس، نمی‌توانید از wimupdate برای افزودن مستقیم فایل‌ها به یک تصویر از یک حجم NTFS با استفاده از libntfs-3g استفاده کنید، اگرچه wimcapture از ضبط یک تصویر کامل به این روش پشتیبانی می‌کند.

به جز در هنگام استفاده از --unsafe-compact، متوقف کردن اجرای دستور wimupdate در میانهٔ راه بی‌خطر است؛ با این حال، پس از انجام این کار، توصیه می‌شود wimoptimize را اجرا کنید تا هر داده‌ای که به فایل فیزیکی WIM پیوست شده اما هنوز در ساختار WIM ادغام نشده است حذف شود، مگر اینکه --rebuild مشخص شده باشد که در این صورت باید فایل موقت باقی‌مانده را حذف کنید.

تمامی مثال‌های زیر، فایل دستورهای به‌روزرسانیِ مورد نیاز برای ایجاد و همچنین دستور wimupdate را که برای انجام به‌روزرسانی‌ها باید اجرا شود نشان می‌دهند.

حذف دو فایل از یک تصویر WIM:

update_commands.txt:
delete /setup.exe
delete /sources/setup.exe
$ wimupdate boot.wim 2 < update_commands.txt

افزودن چند فایل و دایرکتوری به یک تصویر WIM. توجه داشته باشید که مسیر اول در هر دستور add فایل‌های مورد نظر برای افزودن را مشخص می‌کند، در حالی که مسیر دوم هر دستور add مکان‌هایی را که باید این فایل‌ها درون تصویر WIM در آن‌ها اضافه شوند تعیین می‌نماید:

update_commands.txt:
add somedir     /dir
add somefile    /dir/file
$ wimupdate boot.wim 2 < update_commands.txt

تغییر نام یک فایل درون تصویر WIM:

update_commands.txt:
rename /dir_in_wim/oldfile.txt /dir_in_wim/newfile.txt
$ wimupdate boot.wim 2 < update_commands.txt

استفاده از قابلیت‌های بیشتر مانند توضیحات، گزینه‌ها و همپوشانی‌ها (overlays)، و گنجاندن اطلاعات یکپارچگی اضافی در WIM به‌روزشده:

update_commands.txt:
#
# این فایل برخی از تغییرات جهت اعمال روی یک تصویر WIM را مشخص می‌کند.
#
# افزودن یک دایرکتوری جدید شامل فایل‌هایی که می‌خواهم در تصویر باشند.
# استفاده از نقل‌قول‌ها لازم است زیرا نام دایرکتوری
# حاوی فاصله است.
add "My Directory" "/My Directory"
# افزودن محتویات "Another Directory" به
# "/My Directory" که تازه در تصویر WIM ایجاد کردیم. از آنجا که
# مسیر مقصد از قبل وجود دارد، این کار یک همپوشانی (overlay) انجام می‌دهد.
add "Another Directory" "/My Directory"
# تغییر نام یک فایل بنا به دلیلی.
rename /dir_in_wim/oldfile.txt /dir_in_wim/newfile.txt
# حذف یک دایرکتوری غیرضروری.
delete --recursive /Users/Me/Documents/Junk
$ wimupdate boot.wim 2 --check < update_commands.txt

wimlib-imagex(1) wimcapture(1) wiminfo(1) wimmountrw(1) wimoptimize(1)

January 2026 wimlib 1.14.5