Windows 10 Hotfix Repository

Discussion in 'Windows 10' started by Tito, Oct 1, 2014.

  1. kibkalo

    kibkalo MDL Expert

    Sep 8, 2009
    1,025
    362
    60
  2. ch100

    ch100 MDL Addicted

    Sep 11, 2016
    841
    704
    30
    please ignore - deleted
     
  3. kibkalo

    kibkalo MDL Expert

    Sep 8, 2009
    1,025
    362
    60
    Found. Thanks!
    And that works for Server 2022 too.
    Shame to everyone who yesterday told that there is no such thing!

    Thank you for help!
     
  4. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    17,192
    90,678
    340
    Windows 11 does not have those baseless cab/psf for LCU (no longer included since build 21382)
    you are stuck with the delta psfx cab/psf
     
  5. Enthousiast

    Enthousiast MDL Tester

    Oct 30, 2009
    49,647
    103,306
    450
    It's not needed nor useful, we can't be aware of the crap xinso creates.
     
  6. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    17,192
    90,678
    340
  7. kibkalo

    kibkalo MDL Expert

    Sep 8, 2009
    1,025
    362
    60
    I know you hate self-restored builds. But now I have Server Turbine 2022 - both Core and Full. And I can install hotpatch updates to ServerTurbine VMs on top of on-prem HCI - without reboot.
    Believe me, for me as an architect in infra consulting the sole idea of implementing that can be sold in 5 minutes to each of Fortune500. And that is the only thing important for me.
    MSFT *allows* to use ServerTurbine if you have Subscription, but they don't provide ISOs, only VM templates. With PSF I am finally free from using bad-created templates, can configure that for customer needs.
     
  8. PointZero

    PointZero MDL Member

    Oct 5, 2011
    1,415
    3,777
    60
    Yeah, @xinso has a lot of great knowledge to share. I'm not sure why some would be bothered by what he's doing.

    That thread's title is "Windows Editions Reconstruction Project" and that's exactly what he's doing, lol.
     
  9. Windows 10 User

    Windows 10 User MDL Guru

    Feb 2, 2017
    2,005
    122
    90
    What are PSF and PSFX files?
     
  10. KleineZiege

    KleineZiege MDL Expert

    Dec 11, 2018
    1,849
    2,099
    60
    you mean the X, think that is a file extension.
    I think it stands for winsxs folder, but I don't know for sure.
     
  11. kibkalo

    kibkalo MDL Expert

    Sep 8, 2009
    1,025
    362
    60
    Why PSFXrepack_2 can fail on Windows10.0-KB5003188-x64-baseless.cab + psf?
    Silently.
     
  12. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    17,192
    90,678
    340
    Fail how?
    you can run PSFExtractor.exe manually and check
     
  13. kibkalo

    kibkalo MDL Expert

    Sep 8, 2009
    1,025
    362
    60
    Code:
    Running in Debug Mode...
    The window will be closed when finished
    Takes 1 second
    log here:
    >set psfnet=0
    >if exist "C:\Windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe" set psfnet=1
    >if exist "C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe" set psfnet=1
    >set /a _cdr=0
    >for %# in (E F G H I J K L M N O P Q R S T U V W X Y Z) do (
    set /a _cdr+=1
    set "_adr!_cdr!=%#"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=E"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=F"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=G"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=H"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=I"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=J"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=K"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=L"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=M"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=N"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=O"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=P"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=Q"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=R"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=S"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=T"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=U"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=V"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=W"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=X"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=Y"
    )
    >(
    set /a _cdr+=1
    set "_adr!_cdr!=Z"
    )
    >set /a _cdr=0
    >for /F "tokens=2 delims==:" %# in ('"wmic path Win32_Volume where (DriveLetter is not NULL) get DriveLetter /value" | findstr =') do (
    set /a _cdr+=1
    set "_udr!_cdr!=%#"
    )
    >(
    set /a _cdr+=1
    set "_udr!_cdr!=C"
    )
    >(
    set /a _cdr+=1
    set "_udr!_cdr!=D"
    )
    >for /F "tokens=2 delims==:" %# in ('"wmic path Win32_LogicalDisk where (DeviceID is not NULL) get DeviceID /value" | findstr =') do (
    set /a _cdr+=1
    set "_udr!_cdr!=%#"
    )
    >(
    set /a _cdr+=1
    set "_udr!_cdr!=C"
    )
    >(
    set /a _cdr+=1
    set "_udr!_cdr!=D"
    )
    >for /L %A in (1 1 4) do (for /L %# in (1 1 22) do (if defined _adr%# (if /I "!_udr%A!" == "!_adr%#!" set "_adr%#=" ) ) )
    >(for /L %# in (1 1 22) do (if defined _adr%# (if /I "!_udr1!" == "!_adr%#!" set "_adr%#=" ) ) )
    >(if defined _adr1 (if /I "!_udr1!" == "!_adr1!" set "_adr1=" ) )
    >(if defined _adr2 (if /I "!_udr1!" == "!_adr2!" set "_adr2=" ) )
    >(if defined _adr3 (if /I "!_udr1!" == "!_adr3!" set "_adr3=" ) )
    >(if defined _adr4 (if /I "!_udr1!" == "!_adr4!" set "_adr4=" ) )
    >(if defined _adr5 (if /I "!_udr1!" == "!_adr5!" set "_adr5=" ) )
    >(if defined _adr6 (if /I "!_udr1!" == "!_adr6!" set "_adr6=" ) )
    >(if defined _adr7 (if /I "!_udr1!" == "!_adr7!" set "_adr7=" ) )
    >(if defined _adr8 (if /I "!_udr1!" == "!_adr8!" set "_adr8=" ) )
    >(if defined _adr9 (if /I "!_udr1!" == "!_adr9!" set "_adr9=" ) )
    >(if defined _adr10 (if /I "!_udr1!" == "!_adr10!" set "_adr10=" ) )
    >(if defined _adr11 (if /I "!_udr1!" == "!_adr11!" set "_adr11=" ) )
    >(if defined _adr12 (if /I "!_udr1!" == "!_adr12!" set "_adr12=" ) )
    >(if defined _adr13 (if /I "!_udr1!" == "!_adr13!" set "_adr13=" ) )
    >(if defined _adr14 (if /I "!_udr1!" == "!_adr14!" set "_adr14=" ) )
    >(if defined _adr15 (if /I "!_udr1!" == "!_adr15!" set "_adr15=" ) )
    >(if defined _adr16 (if /I "!_udr1!" == "!_adr16!" set "_adr16=" ) )
    >(if defined _adr17 (if /I "!_udr1!" == "!_adr17!" set "_adr17=" ) )
    >(if defined _adr18 (if /I "!_udr1!" == "!_adr18!" set "_adr18=" ) )
    >(if defined _adr19 (if /I "!_udr1!" == "!_adr19!" set "_adr19=" ) )
    >(if defined _adr20 (if /I "!_udr1!" == "!_adr20!" set "_adr20=" ) )
    >(if defined _adr21 (if /I "!_udr1!" == "!_adr21!" set "_adr21=" ) )
    >(if defined _adr22 (if /I "!_udr1!" == "!_adr22!" set "_adr22=" ) )
    >(for /L %# in (1 1 22) do (if defined _adr%# (if /I "!_udr2!" == "!_adr%#!" set "_adr%#=" ) ) )
    >(if defined _adr1 (if /I "!_udr2!" == "!_adr1!" set "_adr1=" ) )
    >(if defined _adr2 (if /I "!_udr2!" == "!_adr2!" set "_adr2=" ) )
    >(if defined _adr3 (if /I "!_udr2!" == "!_adr3!" set "_adr3=" ) )
    >(if defined _adr4 (if /I "!_udr2!" == "!_adr4!" set "_adr4=" ) )
    >(if defined _adr5 (if /I "!_udr2!" == "!_adr5!" set "_adr5=" ) )
    >(if defined _adr6 (if /I "!_udr2!" == "!_adr6!" set "_adr6=" ) )
    >(if defined _adr7 (if /I "!_udr2!" == "!_adr7!" set "_adr7=" ) )
    >(if defined _adr8 (if /I "!_udr2!" == "!_adr8!" set "_adr8=" ) )
    >(if defined _adr9 (if /I "!_udr2!" == "!_adr9!" set "_adr9=" ) )
    >(if defined _adr10 (if /I "!_udr2!" == "!_adr10!" set "_adr10=" ) )
    >(if defined _adr11 (if /I "!_udr2!" == "!_adr11!" set "_adr11=" ) )
    >(if defined _adr12 (if /I "!_udr2!" == "!_adr12!" set "_adr12=" ) )
    >(if defined _adr13 (if /I "!_udr2!" == "!_adr13!" set "_adr13=" ) )
    >(if defined _adr14 (if /I "!_udr2!" == "!_adr14!" set "_adr14=" ) )
    >(if defined _adr15 (if /I "!_udr2!" == "!_adr15!" set "_adr15=" ) )
    >(if defined _adr16 (if /I "!_udr2!" == "!_adr16!" set "_adr16=" ) )
    >(if defined _adr17 (if /I "!_udr2!" == "!_adr17!" set "_adr17=" ) )
    >(if defined _adr18 (if /I "!_udr2!" == "!_adr18!" set "_adr18=" ) )
    >(if defined _adr19 (if /I "!_udr2!" == "!_adr19!" set "_adr19=" ) )
    >(if defined _adr20 (if /I "!_udr2!" == "!_adr20!" set "_adr20=" ) )
    >(if defined _adr21 (if /I "!_udr2!" == "!_adr21!" set "_adr21=" ) )
    >(if defined _adr22 (if /I "!_udr2!" == "!_adr22!" set "_adr22=" ) )
    >(for /L %# in (1 1 22) do (if defined _adr%# (if /I "!_udr3!" == "!_adr%#!" set "_adr%#=" ) ) )
    >(if defined _adr1 (if /I "!_udr3!" == "!_adr1!" set "_adr1=" ) )
    >(if defined _adr2 (if /I "!_udr3!" == "!_adr2!" set "_adr2=" ) )
    >(if defined _adr3 (if /I "!_udr3!" == "!_adr3!" set "_adr3=" ) )
    >(if defined _adr4 (if /I "!_udr3!" == "!_adr4!" set "_adr4=" ) )
    >(if defined _adr5 (if /I "!_udr3!" == "!_adr5!" set "_adr5=" ) )
    >(if defined _adr6 (if /I "!_udr3!" == "!_adr6!" set "_adr6=" ) )
    >(if defined _adr7 (if /I "!_udr3!" == "!_adr7!" set "_adr7=" ) )
    >(if defined _adr8 (if /I "!_udr3!" == "!_adr8!" set "_adr8=" ) )
    >(if defined _adr9 (if /I "!_udr3!" == "!_adr9!" set "_adr9=" ) )
    >(if defined _adr10 (if /I "!_udr3!" == "!_adr10!" set "_adr10=" ) )
    >(if defined _adr11 (if /I "!_udr3!" == "!_adr11!" set "_adr11=" ) )
    >(if defined _adr12 (if /I "!_udr3!" == "!_adr12!" set "_adr12=" ) )
    >(if defined _adr13 (if /I "!_udr3!" == "!_adr13!" set "_adr13=" ) )
    >(if defined _adr14 (if /I "!_udr3!" == "!_adr14!" set "_adr14=" ) )
    >(if defined _adr15 (if /I "!_udr3!" == "!_adr15!" set "_adr15=" ) )
    >(if defined _adr16 (if /I "!_udr3!" == "!_adr16!" set "_adr16=" ) )
    >(if defined _adr17 (if /I "!_udr3!" == "!_adr17!" set "_adr17=" ) )
    >(if defined _adr18 (if /I "!_udr3!" == "!_adr18!" set "_adr18=" ) )
    >(if defined _adr19 (if /I "!_udr3!" == "!_adr19!" set "_adr19=" ) )
    >(if defined _adr20 (if /I "!_udr3!" == "!_adr20!" set "_adr20=" ) )
    >(if defined _adr21 (if /I "!_udr3!" == "!_adr21!" set "_adr21=" ) )
    >(if defined _adr22 (if /I "!_udr3!" == "!_adr22!" set "_adr22=" ) )
    >(for /L %# in (1 1 22) do (if defined _adr%# (if /I "!_udr4!" == "!_adr%#!" set "_adr%#=" ) ) )
    >(if defined _adr1 (if /I "!_udr4!" == "!_adr1!" set "_adr1=" ) )
    >(if defined _adr2 (if /I "!_udr4!" == "!_adr2!" set "_adr2=" ) )
    >(if defined _adr3 (if /I "!_udr4!" == "!_adr3!" set "_adr3=" ) )
    >(if defined _adr4 (if /I "!_udr4!" == "!_adr4!" set "_adr4=" ) )
    >(if defined _adr5 (if /I "!_udr4!" == "!_adr5!" set "_adr5=" ) )
    >(if defined _adr6 (if /I "!_udr4!" == "!_adr6!" set "_adr6=" ) )
    >(if defined _adr7 (if /I "!_udr4!" == "!_adr7!" set "_adr7=" ) )
    >(if defined _adr8 (if /I "!_udr4!" == "!_adr8!" set "_adr8=" ) )
    >(if defined _adr9 (if /I "!_udr4!" == "!_adr9!" set "_adr9=" ) )
    >(if defined _adr10 (if /I "!_udr4!" == "!_adr10!" set "_adr10=" ) )
    >(if defined _adr11 (if /I "!_udr4!" == "!_adr11!" set "_adr11=" ) )
    >(if defined _adr12 (if /I "!_udr4!" == "!_adr12!" set "_adr12=" ) )
    >(if defined _adr13 (if /I "!_udr4!" == "!_adr13!" set "_adr13=" ) )
    >(if defined _adr14 (if /I "!_udr4!" == "!_adr14!" set "_adr14=" ) )
    >(if defined _adr15 (if /I "!_udr4!" == "!_adr15!" set "_adr15=" ) )
    >(if defined _adr16 (if /I "!_udr4!" == "!_adr16!" set "_adr16=" ) )
    >(if defined _adr17 (if /I "!_udr4!" == "!_adr17!" set "_adr17=" ) )
    >(if defined _adr18 (if /I "!_udr4!" == "!_adr18!" set "_adr18=" ) )
    >(if defined _adr19 (if /I "!_udr4!" == "!_adr19!" set "_adr19=" ) )
    >(if defined _adr20 (if /I "!_udr4!" == "!_adr20!" set "_adr20=" ) )
    >(if defined _adr21 (if /I "!_udr4!" == "!_adr21!" set "_adr21=" ) )
    >(if defined _adr22 (if /I "!_udr4!" == "!_adr22!" set "_adr22=" ) )
    >for /L %# in (1 1 22) do (if not defined _sdr (if defined _adr%# set "_sdr=!_adr%#!:" ) )
    >(if not defined _sdr (if defined _adr1 set "_sdr=!_adr1!:" ) )
    >(if not defined _sdr (if defined _adr2 set "_sdr=!_adr2!:" ) )
    >(if not defined _sdr (if defined _adr3 set "_sdr=!_adr3!:" ) )
    >(if not defined _sdr (if defined _adr4 set "_sdr=!_adr4!:" ) )
    >(if not defined _sdr (if defined _adr5 set "_sdr=!_adr5!:" ) )
    >(if not defined _sdr (if defined _adr6 set "_sdr=!_adr6!:" ) )
    >(if not defined _sdr (if defined _adr7 set "_sdr=!_adr7!:" ) )
    >(if not defined _sdr (if defined _adr8 set "_sdr=!_adr8!:" ) )
    >(if not defined _sdr (if defined _adr9 set "_sdr=!_adr9!:" ) )
    >(if not defined _sdr (if defined _adr10 set "_sdr=!_adr10!:" ) )
    >(if not defined _sdr (if defined _adr11 set "_sdr=!_adr11!:" ) )
    >(if not defined _sdr (if defined _adr12 set "_sdr=!_adr12!:" ) )
    >(if not defined _sdr (if defined _adr13 set "_sdr=!_adr13!:" ) )
    >(if not defined _sdr (if defined _adr14 set "_sdr=!_adr14!:" ) )
    >(if not defined _sdr (if defined _adr15 set "_sdr=!_adr15!:" ) )
    >(if not defined _sdr (if defined _adr16 set "_sdr=!_adr16!:" ) )
    >(if not defined _sdr (if defined _adr17 set "_sdr=!_adr17!:" ) )
    >(if not defined _sdr (if defined _adr18 set "_sdr=!_adr18!:" ) )
    >(if not defined _sdr (if defined _adr19 set "_sdr=!_adr19!:" ) )
    >(if not defined _sdr (if defined _adr20 set "_sdr=!_adr20!:" ) )
    >(if not defined _sdr (if defined _adr21 set "_sdr=!_adr21!:" ) )
    >(if not defined _sdr (if defined _adr22 set "_sdr=!_adr22!:" ) )
    >if 1 EQU 0
    >if 1 EQU 0 (
    echo ==== ERROR ====
    echo.
    echo PSFExtractor require .NET Framnework 4.x or 2.0
    echo.
    rem.
    rem.
    goto :eof
    )
    >if not defined _pcab (
    echo ==== ERROR ====
    echo.
    echo Could not detect cab and psf files
    echo.
    rem.
    rem.
    goto :eof
    )
    >if not defined _sdr (
    echo ==== ERROR ====
    echo.
    echo Could not find or assign unused Drive Letter
    echo.
    rem.
    rem.
    goto :eof
    )
    >for %# in (PSFExtractor.exe SxSExpand.exe cabarc.exe) do if not exist "!_work!\bin\%#" (
    echo ==== ERROR ====
    echo.
    echo Required file %# is missing
    echo.
    pause
    rem.
    rem.
    goto :eof
    )
    >if not exist "!_work!\bin\PSFExtractor.exe" (
    echo ==== ERROR ====
    echo.
    echo Required file PSFExtractor.exe is missing
    echo.
    pause
    rem.
    rem.
    goto :eof
    )
    >if not exist "!_work!\bin\SxSExpand.exe" (
    echo ==== ERROR ====
    echo.
    echo Required file SxSExpand.exe is missing
    echo.
    pause
    rem.
    rem.
    goto :eof
    )
    >if not exist "!_work!\bin\cabarc.exe" (
    echo ==== ERROR ====
    echo.
    echo Required file cabarc.exe is missing
    echo.
    pause
    rem.
    rem.
    goto :eof
    )
    >set _did=0
    >set _sbst=0
    >set "_tmp=D:\_temp32563"
    >if exist "D:\_temp32563\" set "_tmp=D:\_temp21779"
    >if not exist "D:\_temp32563\" mkdir "D:\_temp32563"
    >pushd "!_pcab!"
    >for /F "delims=" %# in ('dir /b *.cab') do (set "pack=%~n#" & call :psfcab )
    >(set "pack=Windows10.0-KB5003188-x64-baseless" & call :psfcab )
    >if exist "Windows10.0-KB5003188-x64-baseless-full_psfx.cab" exit /b
    >if not exist "Windows10.0-KB5003188-x64-baseless.psf" exit /b
    >if exist "D:\_temp32563\*.mum" del /f /q "D:\_temp32563\*.mum"
    >if exist "D:\_temp32563\*.xml" del /f /q "D:\_temp32563\*.xml"
    >expand.exe -f:update.mum "!_pcab!\Windows10.0-KB5003188-x64-baseless.cab" "D:\_temp32563" 1>nul 2>nul
    >if not exist "D:\_temp32563\update.mum" exit /b
    >findstr /i /m "PSFX" "D:\_temp32563\update.mum" || exit /b
    >if exist "PSFExtractor.exe" (
    del /f /q "PSFExtractor.*"
    del /f /q "SxSExpand.exe"
    del /f /q "cabarc.exe"
    )
    >if 0 EQU 1 subst E: /d
    >popd
    >if exist "D:\_temp32563\" rmdir /s /q "D:\_temp32563\"
    >if exist "D:\_temp32563\" (
    mkdir D:\_del286 1>nul 2>nul
    robocopy D:\_del286 "D:\_temp32563" /MIR 1>nul 2>nul
    rmdir /s /q D:\_del286\ 1>nul 2>nul
    rmdir /s /q "D:\_temp32563\"
    )
    >echo.
    >echo Finished
    Finished
    >echo.
    >rem.
    >rem.
    >goto :eof

    I did that,
     
  14. abbodi1406

    abbodi1406 MDL KB0000001

    Feb 19, 2011
    17,192
    90,678
    340
    @kibkalo
    this means the update in not tagged as psfx
    Code:
    findstr /i /m "PSFX" "D:\_temp32563\update.mum" || exit /b
    you can remove the check line from script
    Code:
    findstr /i /m "PSFX" "%_tmp%\update.mum" %_Nul3% || exit /b
     
  15. kibkalo

    kibkalo MDL Expert

    Sep 8, 2009
    1,025
    362
    60
    Thanks. And do you plan to replace cabarc with something capable of >2GB&
     
  16. AveYo

    AveYo MDL Expert

    Feb 10, 2009
    1,836
    5,727
    60
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  17. petruk

    petruk MDL Novice

    Nov 24, 2011
    14
    6
    0