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.
Ну как, все понятно? Если нет - не переспрашивайте, а разбирайтесь сами :)