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

Показать сообщение отдельно


Moderator


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

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


Payne, Mss
Попытаюсь кратко (чтобы не запарить самому себе мозги) описать процесс создания пака.

Для начала хочу сказать, что вы могли бы и сами во всем разобраться (так же, как я разбирался с RyanVM Update Pack). Ну да ладно..

Начнем с конфигурационных файлов:
  • Dosnet - содержимое добавляется в Dosnet.inf в чистом виде;
  • Txtsetup - добавляется в Txtsetup.sif в чистом виде;
  • Sysoc - добавляется в секцию [Components] файла Sysoc.inf;
  • Run - добавляется в секцию [SetupHotfixesToRun] файла Svcpack.inf;
  • SpecCase - специальные случаи (например, если нужно удалить что-то из дистрибутива перед тем, как скопировать туда новые файлы); фактически это cmd-файл, только без расширения;
  • ChkDistr - проверки на тип дистрибутива (фактически батник, в случае неправильного типа в переменную Err заносится сообщение об ошибке);
  • SvcTmpl - шаблон для Svcpack.inf.
Файлы Sysoc и Run должны заканчиваться пустой строкой.

Рассмотрим добавление хотфикса на примере KB896358.

1. Читаем описание, обращаем внимание на параграф "Замена обновлений безопасности" (Security Update Replacement). Видим, что это обновление заменяет KB890175, а также более ранние (вышедшие до SP2 и потому нас не интересующие).

2. Скачиваем и распаковываем KB896358 с помощью опции /X:<путь> (к примеру, в D:\896358)

3. Идем в папку SP2QFE и убеждаемся, что оно действительно заменяет KB890175 (файл Hhctrl.ocx).
Почему именно SP2QFE, а не SP2GDR? Это тема для отдельной дискуссии (есть доводы за и против), можете рискнуть ознакомиться с KB824994 (если не боитесь получить мозговую травму).

4. Проверяем, есть ли все эти файлы (из папки SP2QFE) в дистрибутиве (папка I386 или CAB-архивы).
Да, все есть.
Копируем файлы в папку Files (в нашем Update Pack'е).

5. Устанавливаем обновление с опциями /Q /U /O /N /Z /B:SP2QFE
Перезагружаемся.

6. Экспортируем ветки реестра:
HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP3\KB896358
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB896358
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB896358
Преобразуем их в inf-файлы с помощью Reg2Inf. Подправляем и добавляем строчки в RusUpPck.inf.

7. Удаляем из RusUpPck.inf все, относящееся к KB890175.

8. Идем в папку 896358\update и смотрим файл update_SP2QFE.inf, секция [Product.Add.Reg]
В большинстве обновлений (хотфиксов) там нет ничего нужного, но в этом есть. Добавляем секцию [KB896358.AddReg] в RusUpPck.inf.

9. Сжимаем KB896358.CAT с помощью makecab и копируем в Files\ForceCopy\SVCPACK (попутно удаляем оттуда файл KB890175.CA_).

10. Сжимаем RusUpPck.inf и копируем в Files\ForceCopy.

11. Убиваем папку Files\Compressed (если она существует).

Вот, собственно, и все.
Замечания по пункту 4. Допустим, файла нет в дистрибутиве. Например, в KB900725 мы видим файл spru0419.dll. Смотрим update_SP2QFE.inf и видим, что этот файл идет в system32 и будет называться xpsp3res.dll. Переименовываем, сжимаем, копируем в Files\ForceCopy и добавляем соответствующую строчку в Dosnet и Txtsetup.

Второе замечание, по поводу других ОС (2000 или 2003). В этом случае не забудьте удалить конфигурационный файл SpecCase, отредактировать шаблон SvcTmpl, а также ChkDistr.

Ну как, все понятно? Если нет - не переспрашивайте, а разбирайтесь сами :)

Последний раз редактировалось Petya V4sechkin, 08-04-2006 в 10:59.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:16, 14-10-2005 | #201