Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: [addon] ResPatch
Показать сообщение отдельно

Аватара для Boa Soft

Компьютерный шаман


Сообщения: 2910
Благодарности: 956

Профиль | Сайт | Отправить PM | Цитировать


Как обещал, привожу ПРИМЕР скрипта для установки этого аддона на "живую" систему.

Код: Выделить весь код
@Echo off

set WorkDir=%~dp0
set KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

Title=Vista Patch

color 0A
echo Подготовка к работе скрипта...

rem If Exist %WorkDir%Backup RD /S /Q %WorkDir%Backup
If Exist %WorkDir%FileList.lst del /Q %WorkDir%FileList.lst

rem If Exist %WorkDir%NewFiles RD /S /Q %WorkDir%NewFiles
If Exist %WorkDir%NotFound.txt del /Q %WorkDir%NotFound.txt
If Exist %WorkDir%KillWpf.lst del /Q %WorkDir%KillWpf.lst
If Exist %WorkDir%WpfPach.txt del /Q %WorkDir%WpfPach.txt
If Exist %WorkDir%notpatch.txt del /Q %WorkDir%notpatch.txt 
If Exist %WorkDir%zap.txt del /Q %WorkDir%zap.txt
If Exist %WorkDir%CheckCopy.txt del /Q %WorkDir%CheckCopy.txt
If Exist %WorkDir%SfcFiles.dll.bak del /Q %WorkDir%SfcFiles.dll.bak

If not Exist %WorkDir%Backup MD %WorkDir%Backup
If not Exist %WorkDir%NewFiles MD %WorkDir%NewFiles

rem goto :RESPATCH
rem goto :UPRAGE

:GETLIST
echo Создание списка файлов для патча...
For /F "UseBackQ Delims=" %%I In (`Dir %WorkDir%Resources /AD /B /ON 2^>nul`) Do  Call :GetFullPatch %%~I

:GETFILES
echo Копирование файлов согласно списка в каталог Backup...


For /F "Delims=" %%I In (%WorkDir%FileList.lst) Do Call :PrepareBackup "%%~I"

cls

:RESPATCH
echo Патчим ресурсы файлов...

For /F "UseBackQ Delims=" %%I In (`Dir Backup /B /ON 2^>nul`) Do (
 echo %%~I 
 reshacker.exe -script Resources\%%~I\rcscript.txt
)

cls

echo Считаем контрольную сумму...

For /F "UseBackQ Delims=" %%I In (`Dir %WorkDir%NewFiles /B /ON 2^>nul`) Do %WorkDir%modifype.exe %WorkDir%NewFiles\%%~I -c >nul

echo Создаем KillWpf.lst...
For /F "UseBackQ Delims=" %%I In (`Dir %WorkDir%NewFiles /B /ON 2^>nul`) Do echo %%~I >> KillWpf.lst

echo Патчим SfcFiles.dll...
copy /Y %windir%\system32\SfcFiles.dll %WorkDir% >nul
%WorkDir%\SFCPATCH.EXE %WorkDir%SfcFiles.dll %WorkDir%KillWpf.lst >nul



:UPRAGE
cls
color 4F

echo Внимание! Сейчас будет производится замена файлов на измененые.
echo.
echo Сохраните открытые документы и закройте все приложения.
echo После завершения работы скрипта компьютер будет перезагружен.
echo В процессе работы могут появлятся сообщения о невозможности копирования.
echo Это не является ошибкой и залоченные файлы будут заменены принудительно.
echo.
echo Для продолжения работы нажмите любую клавишу.

pause > nul

color 0A

echo Копируем файлы обратно...
%WorkDir%WfpAdmin.exe /DeprotectAll > nul

copy /y %WorkDir%SfcFiles.dll %SystemRoot%\System32\dllcache\
%WorkDir%Zap.exe %SystemRoot%\System32\SfcFiles.dll
copy /y %WorkDir%SfcFiles.dll %SystemRoot%\System32\

taskkill /f /im explorer.exe > nul
For /F "Delims=" %%I In (%WorkDir%FileList.lst) Do Call :ReplaceFiles "%%~I"

REG ADD %KEY% /V TITLE /D "Vista patch" /f >nul
REG ADD %KEY%\001 /VE /D "Удаление временных файлов" /f >nul
REG ADD %KEY%\001 /V 1 /D "cmd.exe /C del %SystemDrive%\*.tmp" /f >nul
REG ADD %KEY%\002 /VE /D "Обновление иконок" /f >nul
REG ADD %KEY%\002 /V 1 /D "%WorkDir%rebuild.exe /Q" /f >nul

start shutdown -r -t 05 -c "Завершение Vista Patch" -f

goto :EOF

:GetFullPatch
 if not %1#==# (
 for %%I in (
   "%windir%"
   "%windir%\system32"
   "%windir%\system32\drivers"
   "%windir%\system"
   "%programfiles%\Outlook Express"
   "%programfiles%\Windows Media Player"
   "%windir%\Resources\Themes\Luna"
   "%programfiles%\Movie Maker"
   "%programfiles%\Windows NT"
   "%windir%\PCHEALTH\HELPCTR\Binaries"
   "%windir%\Fonts"
   "%programfiles%\Internet Explorer"
   "%programfiles%\Internet Explorer\Connection Wizard"
   "%commonprogramfiles%\Microsoft Shared\MSInfo"
   "%programfiles%\Windows NT\Accessories"
   "%programfiles%\Windows NT\Pinball"
   "%commonprogramfiles%\System"
   "%windir%\system32\Restore"
   "%windir%\system32\srchasst"
   "%windir%\system32\usmt"
   "%commonprogramfiles%\Microsoft Shared\Speech"
   "%programfiles%\NetMeeting"
   "%commonprogramfiles%\System\Mapi\1033"
  ) do (
  if exist "%%~I\%1" echo "%%~I\%1"  >> %WorkDir%FileList.lst
  ) 
)
goto :EOF

:PrepareBackup
if exist %1 (
  if not exist %WorkDir%Backup\%~nx1 ( 
  copy %1 %WorkDir%Backup\ > nul
  echo %1 
 )
) else ( 
  echo %1 >> %WorkDir%NotFound.txt 
)

Goto :EOF

:GenKillWpf

:ReplaceFiles
set CF=%~nx1
set SOR=%WorkDir%NewFiles\%CF%
if exist %SOR% (
 echo %1
 echo %1 >> %WorkDir%CheckCopy.txt
 Copy /y %SOR% %SystemRoot%\System32\dllcache\ >nul
 Copy /y %SOR% "%~dp1" >nul
 if ERRORLEVEL 1 (
 %WorkDir%Zap.exe  "%1"  >nul
  Copy /y %SOR% "%~dp1" >nul
  echo "%1" >> %WorkDir%zap.txt 
  )
) else ( 
  echo %SOR% >> %WorkDir%NotCopy.txt 
)
Goto :EOF

Если будет интересно, то выложу архивом со всеми утилитами.
Выделенная строчка будет разная от версии аддона. У меня он переделан - скрипты разложены по папкам ресурсов.

-------
Человеческая лень - главная движущая сила технического прогресса.


Отправлено: 20:37, 08-03-2007 | #57

Название темы: [addon] ResPatch