@Echo off
SetLocal EnableDelayedExpansion
Set WorkDir=%~1
Set TempPath=%CD%
CD %TempPath%\%WorkDir%
Rem Копирование файлов согласно KillWFP.lst в каталог Backup
If Exist Backup RD /S /Q Backup
MD Backup
For /F "Delims=" %%I In (KillWFP.lst) Do (
  Set TM1=%%~I
  Copy %I386%\!TM1:~0,-1!? Backup\ >nul
)
Rem Создание списка упакованных файлов, их распаковка и удаление оригиналов (обработанные файлы сожмутся заново)
If Exist PackFiles Del PackFiles
For /F "UseBackQ Delims=" %%I In (`Dir Backup\*.??_ /B /ON 2^>nul`) Do (
  Echo %%~I>>PackFiles
  Extrac32 /L Backup /E Backup\%%~I >nul
  Del Backup\%%~I
)

Rem Выбор варианта внешнего вида экрана установки:
For /F %%I In (ColBefore.lst) Do Set Col=%%I
Rem Переименование папки Resources
Ren Resources%Col% Resources
Rem Патчим файлы
If Not Exist NewFiles MD NewFiles
If Not Exist Logs MD Logs
For /F "UseBackQ Delims=" %%I In (`Dir Backup /B /ON 2^>nul`) Do reshacker.exe -script Resources\%%~I\rcscript.txt
Rem Восстановление имени папки Resources
Ren Resources Resources%Col%

Rem Патчим файл setupapi.dll и помещаем его в NewFiles
SETUP.exe --psa-all --s Backup --d NewFiles

Rem Упаковываем файлы согласно списка упакованных файлов и удаляем распакованные оригиналы
For /F "UseBackQ Delims=" %%I In (`Dir NewFiles /B /ON 2^>nul`) Do (
  Set J=%%~I
  For /F "Delims=" %%K In (PackFiles) Do If /I "%%~K"=="!J:~0,-1!_" (
    ..\..\MAKECAB /D CompressionMemory=21 /D CompressionType=LZX /L "NewFiles" NewFiles\!J! !J:~0,-1!_ >nul
    Del /F /Q NewFiles\!J! >nul
  )
)

Rem Перемещаем патченные файлы обратно в рабочую папку
Move NewFiles\*.* %I386%\ >nul

Rem Удаление из папки Backup лишних файлов
For %%I In (
  moviemk.exe
  WINNTBBU.DLL
) Do If Exist Backup\%%~I Del /F /Q Backup\%%~I

Rem Упаковываем Backup в %I386%\SVCPACK\PRbackup.cab 
Echo .Set InfFileName=NUL>cabscript.ddf
Echo .Set Cabinet=On>>cabscript.ddf
Echo .Set Compress=On>>cabscript.ddf 
Echo .Set CompressionType=LZX>>cabscript.ddf
Echo .Set CompressionMemory=21>>cabscript.ddf
Echo .Set MaxDiskSize=cdrom>>cabscript.ddf
Echo .Set RptFileName="cabscript.RPT">>cabscript.ddf
Echo .Set CabinetNameTemplate=PRbackup.cab>>cabscript.ddf
Echo .Set DiskDirectoryTemplate="%I386%\SVCPACK\">>cabscript.ddf
For /F "UseBackQ Delims=" %%K In (`Dir "Backup" /B /ON 2^>Nul`) Do Echo Backup\%%K>>cabscript.ddf
..\..\MAKECAB /V1 /F cabscript.ddf >nul

Rem Очищаем рабочие папки
RD /S /Q Logs
RD /S /Q Backup
RD /S /Q NewFiles
Del /F /Q cabscript.ddf
Del /F /Q cabscript.rpt
Del /F /Q PackFiles
Del /F /Q fSetup.log
Del /F /Q reshacker.ini
Del /F /Q KillWFP.lst
CD %TempPath%
GoTo :EOF
