سوییچهای نصب بیصدا: MSI، NSIS و Inno Setup
بیشتر نصبکنندههای ویندوز میتوانند بدون هیچ پنجرهای اجرا شوند. سوییچ لازم به ابزاری بستگی دارد که نصبکننده با آن ساخته شده، پس قدم اول شناختن نوع آن است.
نوع نصبکننده را پیدا کنید
هر صفحه برنامه در ExeAtlas نوع نصبکننده هر فایل را مینویسد (MSI، NSIS، Inno Setup، WiX، MSIX …). در غیر این صورت «winget show» آن را نشان میدهد، بخش ویژگیها ← جزئیات (Properties → Details) فایل اغلب نام ابزار را دارد و بسیاری از نصبکنندهها اگر با /? از خط فرمان اجرا شوند سوییچهایشان را نمایش میدهند.
winget show --id VideoLAN.VLC.\setup.exe /?MSI (Windows Installer)
بستههای MSI با msiexec نصب میشوند. /qn هیچ رابطی نشان نمیدهد، /norestart جلوی راهاندازی مجدد خودکار را میگیرد و /l*v لاگ کامل مینویسد. ویژگیهایی مثل INSTALLDIR را، اگر بسته پشتیبانی کند، میتوان در همان خط تعیین کرد. برای حذف از ProductCode بسته استفاده کنید؛ یک GUID که در صفحه نصب بیصدای هر برنامه آمده است.
msiexec /i app.msi /qn /norestart /l*v "%TEMP%\app-install.log"msiexec /x {PRODUCT-CODE-GUID} /qn /norestartNSIS
نصبکنندههای ساختهشده با NSIS (Nullsoft) سوییچ /S را میپذیرند که به بزرگی و کوچکی حروف حساس است. /D پوشه نصب را تعیین میکند؛ باید آخرین سوییچ باشد و بدون گیومه نوشته شود، حتی اگر مسیر فاصله داشته باشد. حذفکننده، که معمولاً uninstall.exe در پوشه برنامه است، هم /S را میپذیرد.
setup.exe /Ssetup.exe /S /D=C:\Program Files\App"C:\Program Files\App\uninstall.exe" /SInno Setup
/VERYSILENT همه پنجرهها را پنهان میکند، /SUPPRESSMSGBOXES به کادرهای پیام پاسخ پیشفرض میدهد، /NORESTART جلوی راهاندازی مجدد را میگیرد و /SP- از پیام «This will install…» میگذرد. /DIR پوشه را تعیین میکند و /LOG لاگ مینویسد. حذفکنندههای Inno (unins000.exe) هم همان /VERYSILENT را میپذیرند.
setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-setup.exe /VERYSILENT /DIR="C:\Apps\App" /LOG="%TEMP%\app.log""C:\Program Files\App\unins000.exe" /VERYSILENT /NORESTARTبستههای WiX Burn و InstallShield
بستههایی که با ابزار WiX (Burn) ساخته شدهاند /quiet، /norestart و /log را میپذیرند. برنامههای Setup ساخت InstallShield که یک MSI را در خود دارند، سوییچهای MSI را از طریق /v منتقل میکنند؛ گیومهها بخشی از نحو دستورند.
setup.exe /quiet /norestart /log "%TEMP%\bundle.log"setup.exe /s /v"/qn /norestart"MSIX و APPX
بستههای MSIX و APPX از طریق PowerShell و بدون پنجره برای کاربر فعلی نصب میشوند. حذف آنها با Remove-AppxPackage و نام کامل بسته انجام میشود.
Add-AppxPackage -Path .\App.msixGet-AppxPackage *AppName* | Remove-AppxPackageبررسی نتیجه
نصبکننده بیصدا یک کد خروج برمیگرداند: 0 یعنی موفق، 3010 یعنی موفق ولی نیازمند راهاندازی مجدد، و 1641 یعنی نصبکننده خودش راهاندازی مجدد را شروع کرده است. در PowerShell نصبکننده را با -Wait اجرا کنید و کد را بخوانید.
$p = Start-Process .\setup.exe -ArgumentList "/S" -Wait -PassThru$p.ExitCodeپرسشهای متداول
چرا نصبکننده باز هم پنجره نشان میدهد؟
سوییچ مال نوع دیگری از نصبکننده است، یا برنامه یک Setup جداگانه (مثلاً یک runtime) اجرا میکند که سوییچهای خودش را دارد. اول نوع را بررسی کنید؛ برای فایلهای EXE که یک MSI را در خود دارند، سوییچهای MSI باید منتقل شوند.
آیا نصب بیصدا به دسترسی Administrator نیاز دارد؟
برای نصبکنندههایی که در Program Files یا HKLM مینویسند، بله. دستور را از خط فرمانی با دسترسی Administrator اجرا کنید یا با ابزاری که با حساب SYSTEM کار میکند، مثل Intune یا Configuration Manager، توزیع کنید.