Показать полную графическую версию : [Проект] Gui-интегратор пакета обновлений и аддонов #2
sov44, я собираю дистрибутив в GUI-интеграторе, а потом образ с помощью oscdimg.exe уже не в интеграторе, а запуская командный файл. А содержание файла в материалах сайта выложено где-то, если нужно, могу найти, где, чтобы тут не цитировать.
sLiDeR-X
30-07-2010, 07:25
sov44, Можно сделать батник для создания iso и прописать его в "запуск скрипта после интеграции"
ResPath в составе Интегратора, кто-нибудь пытался обновить коммандные файлы для того, чтобы собрать универсальный модуль для восстановления ресурсов после обновления системы.
Правильно ли будет, если я просто распакую с заменой в папку GUITOOLS\ResPatch\TOOLS\ файлы из ResPatch Seven-Yellow v5.5 + OOBE, а точнее из файла ResPath.exe ??? а в папку GUITOOLS\ResPatch\Resources\ закину ресурсы упомянутого выше пакета?
Или кто поможет?
sLiDeR-X
24-08-2010, 06:03
DenisMF, а что вам мешает использовать ResPatch в качестве аддона?
а что вам мешает использовать ResPatch в качестве аддона? »
Ничто не мешает, но ведь сердцу не прикажешь :) Хочется пропатчивать только 10 файлов и делать это при помощи интегратора :)
равильно ли будет, если я просто распакую с заменой в папку GUITOOLS\ResPatch\TOOLS\ файлы из ResPatch Seven-Yellow v5.5 + OOBE, а точнее из файла ResPath.exe ??? а в папку GUITOOLS\ResPatch\Resources\ закину ресурсы упомянутого выше пакета? »
только 10 файлов »скорее всего всё будет нормально, но для полной уверенности огласите имена этих файлов.
_ResPatch.cmd
hidconAll.exe
Repl_F.cmd
reshacker.exe
ResPatch.ico
SFCPATCH.EXE
VerCheck.exe
WfpAdmin.exe
zap.exe
o_win\
p_win\
Resources\
запускаю _ResPatch.cmd с параметрами: Pat для пропатчивания и с Res для восстановления
@Echo off
setlocal enabledelayedexpansion
TITLE=ResPatch
Color 0A
CD /D %~dp0
Echo Подготовка к работе скрипта...
Set KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
Set KEY0=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
Set KEY1=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%SYSTEMDRIVE:~0,-1%
Set comctl2=%WINDIR%\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.0.0_x-ww_1382d70a\comctl32.dll
If Exist %WINDIR%\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll (
Set comctl3=%WINDIR%\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
) else (
If Exist %WINDIR%\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5705_x-ww_36cfed49\comctl32.dll (
Set comctl3=%WINDIR%\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5705_x-ww_36cfed49\comctl32.dll
)
)
Set Mod=%1
Set Pref=
Call :ClearDebugFiles
If Exist Backup.7z (
Echo Распаковка файлов из Backup.7z...
7zr.exe x Backup.7z -y >nul
Del /F /Q Backup.7z
)
If /I %Mod%==Res (
Set Pref=Restore_
Echo Создание списка файлов для восстановления...
For /F "UseBackQ Delims=" %%I In (`Dir Backup /B /ON 2^>nul`) Do Call :GetFullPatch %%I
) Else (
MD NewFiles
MD Logs
Echo Создание списка файлов для патча...
For /F "UseBackQ Delims=" %%I In (`Dir Resources /AD /B /ON 2^>nul`) Do Call :GetFullPatch %%I
Echo Копирование файлов согласно списку в каталог Backup...
If Not Exist Backup MD Backup
For /F "Delims=" %%I In (FileList.lst) Do Call :PrepareBackup %%I
For /L %%I In (2,1,3) Do If Exist Resources\comctl%%I.dll If Exist "!comctl%%I!" Copy /y "!comctl%%I!" "Backup\comctl%%I.dll" >Nul
Color 0C
Echo Патчим ресурсы файлов...
For /F "UseBackQ Delims=" %%I In (`Dir Backup /B /ON 2^>nul`) Do (
reshacker.exe -script Resources\%%I\rcscript.txt
)
If Exist setup.exe setup.exe --psa-popup --pss-main --s NewFiles\ --d NewFiles\
If Exist NewFiles\*.*.FSA_ORIG Del /F /Q NewFiles\*.*.FSA_ORIG
)
Color 0A
Echo Создание списка файлов для отключения WFP...
If /I Not %Mod%==Res (
For /F "UseBackQ Delims=" %%I In (`Dir NewFiles /B /ON 2^>nul`) Do (
If Not %%I==comctl2.dll If Not %%I==comctl3.dll Echo %%I>> KillWpf.lst
)
) Else (
For /F "Delims=" %%I In (%Pref%FileList.lst) Do Echo %%~nxI>> %Pref%KillWpf.lst
)
Echo Патчим SfcFiles.dll этим списком...
Copy /Y %WINDIR%\system32\SfcFiles.dll >Nul
SfcPatch.exe SfcFiles.dll %Pref%KillWpf.lst >nul
Color 0F
WfpAdmin.exe /DeprotectAll >nul
If /I Not %Mod%==Res (
Echo Изменяем иконку системного диска и копируем файлы в систему...
Reg Add "%KEY1%\DefaultIcon" /ve /d "%WINDIR%\system32\shell32.dll,41" /f >nul
Reg Add "%KEY1%\DefaultLabel" /ve /d "System" /f >nul
Call :ChngAtrbCopy p_win
) Else (
Echo Восстанавливаем иконку системного диска и файлы из папки Backup...
Reg Delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons /f >nul
Call :ChngAtrbCopy o_win
)
Copy /y SfcFiles.dll %WINDIR%\system32\dllcache\ >nul
Zap.exe %WINDIR%\system32\SfcFiles.dll >nul
Copy /y SfcFiles.dll %WINDIR%\system32\ >nul
TaskKill /f /im explorer.exe >nul
TaskKill /f /fi "Status ne RUNNING" /im drvspace.exe >nul
For /F "Delims=" %%I In (%Pref%FileList.lst) Do Call :%Pref%ReplaceFiles %%I
If /I Not %Mod%==Res (
For /L %%I In (2,1,3) Do If Exist "NewFiles\comctl%%I.dll" hidconAll.exe Repl_F.cmd "NewFiles\comctl%%I.dll" "!comctl%%I!" SC
) Else (
For /L %%I In (2,1,3) Do (
If Exist "Backup\comctl%%I.dll" (
hidconAll.exe Repl_F.cmd "Backup\comctl%%I.dll" "!comctl%%I!" SC
Del /F /Q "Backup\comctl%%I.dll"
)
)
)
If %2#==# (
If Exist Backup (
Color 0E
Echo Упаковка папки Backup в архив...
7zr.exe a -ssw -mmt2 -ms=off -mx=3 -m0=BCJ2 -m1=LZMA2:d12m:fb273 -m2=LZMA2:d19:fb120 -m3=LZMA2:d19:fb120 -mb0:1 -mb0s1:2 -mb0s2:3 Backup.7z Backup\ >nul
)
)
If Exist Resources.7z (
Echo Распаковка файлов из Resources.7z...
7zr.exe x Resources.7z -y >nul
Del /F /Q Resources.7z >nul
Color 0A
)
If Not Exist Proverka.cmd Call :ClearDebugFiles
If Not %2#==# (
Reg Add %KEY0% /V ResPatchClear2 /D "cmd.exe /C RD /S /Q %WINDIR%\ResPatch" /f >nul
)
If Exist "%USERPROFILE%\Local Settings\Application Data\IconCache.db" (
Del /F /Q /AH "%USERPROFILE%\Local Settings\Application Data\IconCache.db"
Reg Add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer /V "Max Cached Icons" /D 2000 /F >nul
)
Reg Add %KEY0% /V ResPatchClear1 /D "cmd.exe /C Del /F /Q %SystemDrive%\*.tmp" /f >nul
ping -n 15 127.0.0.1>nul
setlocal enabledelayedexpansion
For /f "tokens=3" %%a in ('reg query "%KEY%" /s ^| find /i "Shutdown"') Do Set reset=%%a
If Not DEFINED reset (Start /b Shutdown -r -t 3 -c "Завершение работы ResPatch и перезагрузка компьютера" -f
) Else (
For /f "tokens=3" %%a in ('reg query "%KEY%" /s ^| find " -ait -"') Do set nowait=%%a
For /f "tokens=3" %%a in ('reg query "%KEY%" /s ^| find " -air -"') Do set nowait=!nowait!%%a
If DEFINED nowait Start /b explorer.exe
)
If exist Backup\ntkrnlmp.exe (
If %NUMBER_OF_PROCESSORS%==1 (
If exist Backup\ntkrnlmp.exe Del /F /Q Backup\ntkrnlmp.exe
If exist Backup\ntkrpamp.exe Del /F /Q Backup\ntkrpamp.exe
) else (
If exist Backup\ntkrnlpa.exe Del /F /Q Backup\ntkrnlpa.exe
If exist Backup\ntoskrnl.exe Del /F /Q Backup\ntoskrnl.exe
If Exist Backup\ntkrnlmp.exe ren Backup\ntkrnlmp.exe ntoskrnl.exe
If Exist Backup\ntkrpamp.exe ren Backup\ntkrpamp.exe ntkrnlpa.exe
)
)
Exit
:ClearDebugFiles
For %%I In (
CheckCopy.txt
fSetup.log
reshacker.ini
FileList.lst
KillWpf.lst
NotCopy.txt
NotFound.txt
SfcFiles.dll
SfcFiles.dll.bak
SfcFiles.dll.log
zap.txt
Restore_CheckCopy.txt
Restore_FileList.lst
Restore_KillWpf.lst
) Do If Exist %%~I Del /F /Q %%~I
For %%I In (
Backup
NewFiles
Logs
) Do If Exist %%~I RD /S /Q %%~I
GoTo :EOF
:GetFullPatch
If Not %1#==# (
For %%I In (
"%WINDIR%"
"%WINDIR%\pchealth\helpctr\binaries"
"%WINDIR%\system32"
"%WINDIR%\system32\Restore"
"%WINDIR%\system32\ru-ru"
"%WINDIR%\system32\Setup"
"%WINDIR%\system32\usmt"
"%WINDIR%\system32\wbem"
"%WINDIR%\WinSxS\x86_Microsoft.Windows.Networking.RtcDll_6595b64144ccf1df_5.2.2.3_x-ww_d6bd8b95"
"%WINDIR%\WinSxS\x86_Microsoft.Windows.Networking.RtcRes_6595b64144ccf1df_5.2.2.3_ru_92071106"
"%COMMONPROGRAMFILES%\Microsoft Shared\MSInfo"
"%COMMONPROGRAMFILES%\Microsoft Shared\Speech"
"%COMMONPROGRAMFILES%\System"
"%COMMONPROGRAMFILES%\System\Ole DB"
"%PROGRAMFILES%\7-Zip"
"%PROGRAMFILES%\Internet Explorer"
"%PROGRAMFILES%\Internet Explorer\Connection Wizard"
"%PROGRAMFILES%\NetMeeting"
"%PROGRAMFILES%\Outlook Express"
"%PROGRAMFILES%\Windows Media Player"
"%PROGRAMFILES%\Windows NT"
"%PROGRAMFILES%\Windows NT\Accessories"
"%PROGRAMFILES%\Wallpaper Changer"
) Do If Exist "%%~I\%1" Echo "%%~I\%1">> %Pref%FileList.lst
)
GoTo :EOF
:PrepareBackup
If Exist %1 (
VerCheck.exe Backup\%~nx1 %1
If ERRORLEVEL 255 Copy %1 Backup\ >nul
) Else Echo %1>> NotFound.txt
GoTo :EOF
:ReplaceFiles
If Exist "NewFiles\%~nx1" (
hidconAll.exe Repl_F.cmd "NewFiles\%~nx1" %1
) Else Echo NewFiles\%~nx1>> NotCopy.txt
GoTo :EOF
:Restore_ReplaceFiles
VerCheck.exe %1 "Backup\%~nx1"
If Not ERRORLEVEL 255 (
hidconAll.exe Repl_F.cmd "Backup\%~nx1" %1
) Else Echo %~1 в бэкапе устарел и не был восстановлен. Оставлена новая версия.
GoTo :EOF
:ChngAtrbCopy
ATTRIB -R %WINDIR%\system32\perfmon.msc
ATTRIB -R %WINDIR%\system32\rsop.msc
xCopy %1\* %WINDIR% /s /e /i /y >Nul
ATTRIB +R -A %WINDIR%\system32\perfmon.msc
ATTRIB +R -A %WINDIR%\system32\rsop.msc
GoTo :EOF
помогите подправить код и убрать лишнее
Доброго времени суток. Возник следующий вопрос. Использовал интегратор для создания своей сборки. Пока доводил до нужного результата уже забыл, что делал в начале. В итоге получил то, что хотел. Кроме одного: после установки программа не удаляет каталог с драйверами. Отсюда вопрос - можно ли подправить какой-нибудь файл (или несколько), чтобы после установки срабатывало удаление. Не хочется все переделывать заново.
Vitek 07
29-08-2010, 22:11
sae67, в Presetup.ini (в собранном дистрибутиве он запакован, т.е. Presetup.in_) изменить
AutoCleanup =1
В readme всё подробно расписано
; Автоудаление временных файлов после установки (finish, setup.old, devcon.exe итд)
; А так же папки с драйверами из прежнего местоположения.
; При AutoCleanup = 0 при сохранении папок с драйверами происходит не перемещение, а копирование
; Прежнее местоположение сохраняется нетронутым.
; При AutoCleanup = 0 после проверки правильности установки можно запустить Finish.exe cleanup (c) и
; пройдет автоочистка. По умолчанию 1.
AutoCleanup =1
Огромное спасибо за подсказку. Действительно есть в readme эта информация. Как то умудрился пропустить её. Ещё раз спасибо.
conductor
05-09-2010, 12:31
sov44, я собираю дистрибутив в GUI-интеграторе, а потом образ с помощью oscdimg.exe
а где прописываются команды в GUI-интеграторе для oscdimg.exe ?
хочу свои
и можно ли использовать секцию пост обработка дистрибутива ?окошко
-доп параметры ком строки CDIMAGE
и что туда прописывать ?
к примеру хочу такие ключи -x -o -m
conductor, если вы спрашиваете меня, то я же написал:sov44, я собираю дистрибутив в GUI-интеграторе, а потом образ с помощью oscdimg.exe уже не в интеграторе, а запуская командный файл.»А вы выдернули кусок предложения для цитаты.
@echo off
TITLE Creating ISO Image of BCDW project
ECHO.
:: Укажите путь к дистрибутиву (файлам создаваемого диска)
SET DISTRO=G:\bootcd
:: Укажите где создать результирующий ISO образ
SET OUTPUT=I:\
:: Укажите метку тома (без пробелов!)
:: Она же будет использована как имя ISO образа
SET LABEL=boot_%date%
:: Список стандартных меток
:: Windows XP http://www.tacktech.com/display.cfm?ttid=342
:: Windows 2003 http://www.tacktech.com/display.cfm?ttid=355
:: Снятие атрибутов файлов
ECHO Removing any possible attributes set on %DISTRO% and its subfolders...
attrib -R -H "%DISTRO%" /S /D
ECHO.
:: Создание ISO
ECHO Creating ISO...
:: Предполагается, что папка с BCDW в корне создававемого диска.
:: Измените путь к загрузчику (.bin) если необходимо.
:: Для BCDW 2.0a1
oscdimg.exe -l"%LABEL%" -h -j1 -m -x -o -yd -b"%DISTRO%\bcdw\LOADER.BIN" "%DISTRO%" "%OUTPUT%\%LABEL%.ISO"
:: Для BCDW 1.50z
:: oscdimg.exe -l"%LABEL%" -h -j1 -oci -m -b"%DISTRO%\bcdw\bcdw.bin" "%DISTRO%" "%OUTPUT%\%LABEL%.ISO"
ECHO.
PAUSE
EXIT
Подскажите, в аддоне MultiBoot есть возможность в файле FINISH указать удаление ненужных папок и файлов, а в интеграторе где это можно прописАть?
sLiDeR-X
09-09-2010, 06:04
NeSkoda, можете использовать pstsetup.cmd
Подскажите пожалста! Честно говоря может где-то и есть...
какие опции нужно поставить и какую версию cdimage использовать, чтобы он не переводил в верхний регистр и не давал ошибку установки (отсутствие txtsetup.sif с кодом 14)...
sLiDeR-X, я правильно понял - в PosSetup.cmd пишу
IF EXIST "%Distr%\SUPPORT" RD /s /q "%Distr%\SUPPORT" > nul
IF EXIST "%Distr%\VALUEADD" RD /s /q "%Distr%\VALUEADD" > nul
IF EXIST "%Distr%\DOTNETFX" RD /s /q "%Distr%\DOTNETFX" > nul и это сработает?
и это сработает? »
Сработает. Файл скрипта можете назвать как угодно и прописать путь к нему в GUI Дополнительные настройки - Запуск внешних программ и cmd скриптов. Я такой батник прописываю в секцию Запустить до процесса интеграции, дабы интегратор не копировал этот "мусор", чтобы потом удалять его .
А вообще лучше из дистрибутива в рабочей папке заранее удалить всё лишнее и тогда и скрипт не нужен будет, и время на все эти операции копирования/удаления при каждом запуске GUI тратится не будет.
gora, заранее удалить лишнее в эталонном дистрибутиве не удасться,так как он монтирован на виртуальный привод и уже с него идёт копирование в новую папку.
А ещё-бы, прошу автора, в будущем, добавить возможность сделать возможным выбор образа эталонного дистрибутива, в смысле .iso.
не удасться,так как он монтирован на виртуальный привод »
Зачем это нужно? Жалко места для копии диска на жестком диске? У меня iso файл с оригинальным образом лежит в одном месте, а для GUI сделана папка с копией в которой я оставляю только нужное мне:e:\Original_XPSP3\boot.images\
e:\Original_XPSP3\I386\
e:\Original_XPSP3\WIN51
e:\Original_XPSP3\WIN51IP
e:\Original_XPSP3\BOOTFONT.BIN
e:\Original_XPSP3\WIN51IP.SP3
NeSkoda, а у меня это записано в SpecCase апдейт-пака, в таком случае в GUI указывать уже ничего не нужно. Правда, форма записи у меня несколько другая:If Exist "%I386%\WIN9XMIG\*.*" Del /F /Q /S "%I386%\WIN9XMIG\*.*"
If Exist "%I386%\WIN9XUPG\*.*" Del /F /Q /S "%I386%\WIN9XUPG\*.*"
If Exist "%Distr%\DOTNETFX\*.*" Del /F /Q /S "%Distr%\DOTNETFX\*.*"
If Exist "%Distr%\DOCS\*.*" Del /F /Q /S "%Distr%\DOCS\*.*"
If Exist "%Distr%\SUPPORT\*.*" Del /F /Q /S "%Distr%\SUPPORT\*.*"
If Exist "%Distr%\VALUEADD\*.*" Del /F /Q /S "%Distr%\VALUEADD\*.*"
If Exist "%Distr%\cmpnents\*.*" Del /F /Q /S "%Distr%\cmpnents\*.*"Я сами папки оставляю, очищаю только их содержимое.
P. S. Помнится, Boa Soft собирался вернуться к XP и несколько усовершенствовать интегратор. От того момента уже много времени утекло... :(
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC