Labels

[Version 2] Install hotfix (msu/cab) bằng Batch File

Việc update thường xuyên các bản cập nhật là rất cần thiết cho chiếc PC của bạn, tuy nhiên đã từng gặp rất nhiều trường hợp không nhận được update hoặc cài lỗi...có thể do server của MS quá tải hay một số lý do nhất định nào đó và tất nhiên chờ đợi không phải là phương án hay.

Cài đặt cập nhật thông qua tập tin msu/cab là phương án mình sử dụng hàng đầu, vì nó đơn giản , nhanh và bạn hoàn toàn chủ động với những gì mình sắp làm

Hiện tại thì MS đã cho phép truy cập catalog(nơi chứa các bản cập nhật tải về) cho hầu hết các trình duyệt. Bạn muốn tải gói nào chỉ cần gõ tên vào hộp tìm kiếm và tải về

Địa chỉ tại : http://www.catalog.update.microsoft.com/Home.aspx

Sau khi tải về bạn sẽ thu được file có đuôi là msu. 1 số thì double click sẽ tự cài còn 1 số thì không. Và dĩ nhiên là với nhiều gói thì ta sẽ mất nhiều thời gian để cài hơn. Vì thế mình đã soạn ra 1 file batch có chức năng cài đặt tất cả các file msu/cab đang nằm cùng với thư mục chứa file batch

Cách làm như sau

+ Mở RUN gõ vào notepad

+ Copy toàn bộ nội dung

:: Made by Hoang Hung
:: https://hung1001nd.blogspot.com
@echo off
title Install hotfix MSU ^& CAB for Windows 7-8-8.1-10
mode con cols=120 lines=30
color 0f
pushd %~dp0
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if "%errorlevel%" NEQ "0" (
 echo: Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
 echo: UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
 "%temp%\getadmin.vbs" & exit 
)
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
sc config wuauserv start= auto >nul 2>&1
net start wuauserv >nul 2>&1
for /f "tokens=4 delims=[.] " %%a in ('ver') do set ver=%%a
if %ver% equ 10 (for /f "tokens=1-9" %%e in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "UBR" ^| find "REG_DWORD"') do set /a UBR=%%g )
for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "BuildLabEx"') do set BuildLabEx=%%b
for /f "tokens=1,2 delims=." %%b in ("%BuildLabEx%") do set BuildLabExFinal=%%b.%%c
for /f "tokens=2*" %%c in ('"reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName" 2^>nul') do set ProductName=%%d
for /f "tokens=2*" %%a in ('"reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentBuild" 2^>nul') do set CurrentBuild=%%b
 
:main
cls
echo ====================================================================================================================&echo.
echo                                        You are running: %ProductName%&echo.
if %ver% equ 10 echo                                        Current Build: %CurrentBuild%.%UBR%&echo.
if %ver% lss 10 echo                                        Current Build: %BuildLabExFinal%&echo.
echo ====================================================================================================================&echo.
echo                                        [1]: Install ALL CAB files in folder&echo.
echo                                        [2]: Install ALL MSU files in folder&echo.
echo                                        [X]: EXIT&echo.
echo ====================================================================================================================&echo.
CHOICE /C 12X /N /M "Your Choice: "
if errorlevel == 3 EXIT
if errorlevel == 2 goto:msufile
if errorlevel == 1 goto:cabfile
 
:cabfile
cls & call:install
if not exist "*.cab" (echo File not found. Please copy .cab file into folder !!
timeout 4 >nul
goto:main
)
cls
call:install
for /f %%A in ('dir /b *.cab') do (
echo.&echo == Installing Updates == "%%A" ...
Dism.exe /Online /Add-Package /PackagePath:%%A /NoRestart
timeout 4 >nul
)
call:done
 
:msufile
cls & call:ex
if not exist "*.msu" (echo File not found. Please copy .msu file into folder !!
timeout 4 >nul
goto:main
)
cls & call:ex
md temp >nul
EXPAND -F:* *.msu temp
pushd %~dp0
DEL /f /s /q "temp\*.xml" >nul
DEL /f /s /q "temp\*.txt" >nul
DEL /f /s /q "temp\WSUSSCAN.cab" >nul
color a
echo.&echo Complete !!
timeout 4 >nul
cls & color 0f & cd /d %~dp0\temp
call:install
for /f %%A in ('dir /b *.cab') do (
echo.&echo == Installing Updates == "%%A" ...
Dism.exe /Online /Add-Package /PackagePath:%%A /NoRestart
timeout 4 >nul
)
timeout 3 >nul
pushd %~dp0 & RD /s /q "temp"
call:done
 
:done
echo. & echo == Updates installed == & echo.
echo == Please reboot your machine to complete these updates...== & echo.
echo Press any key to exit !
pause >nul
exit
 
:install
echo ====================================================================================================================&echo.
echo                                                Installing..&echo.
echo ====================================================================================================================&echo.
goto:eof
 
:ex
echo ====================================================================================================================&echo.
echo                                                 Extracting..&echo.
echo ====================================================================================================================&echo.
goto:eof

+ Bạn lưu lại với tên không dấu .bat hoặc .cmd 

+ Tiếp theo copy hoặc di chuyển file đó tới vị trí file msu/cab bạn đã tải và chạy bằng quyền admin
* Với file cab nó sẽ cài luôn và sẽ hiện % tiến trình cài
* Với file msu sẽ giải nén ra thư mục tạm sau đó mới cài mục đích là để các bạn nhìn thấy % đã thành công cho đỡ sót ruột :)

+ Sau khi cài hoàn tất thì khởi động lại máy nhé
-> Nếu cài thành công thì bạn có thể kiểm tra tên gói KB ngay tại đây




Bạn được tự do bày tỏ quan điểm nhưng nghiêm cấm spam
  • Chèn ảnh theo mẫu [img]link[/img]
  • Chèn video Youtube theo mẫu [youtube]link[/youtube]
  • Chèn code theo mẫu [pre]code[/pre]. Lưu ý: mã hóa code trước khi bình luận

  • 1