пятница, 23 июля 2010 г.

Почему установщик Windows не представляет собой просто распаковку образа диска и дампа реестра?

Это перевод Why isn't Windows Setup just a disk reimage plus a registry dump? Автор: Реймонд Чен.

Почему все ключи реестра, требуемые для Windows Setup, не могут быть предвычислены заранее и обработаны за один заход?

Первая причина: Windows Setup может быть настроен с помощью так называемых "unattend file" (файл настроек автоматической установки системы), что означает, что многие вещи не могут быть вычислены заранее. А некоторые настройки также имеют каскадные эффекты на другие настройки.

Кроме того, мы используем модель, при которой регистрация компонента является ответственностью этого компонента, которая (регистрация), к тому же, может быть зависящей от контекста: "если система имеет конфигурацию x, то сделать y, иначе - z". К примеру, регистрация компонентов Internet Explorer-а содержит много условных секций, зависящих от конфигурации установки, указанной в файле автоматической установки и даже в ещё более интересном файле Winbom.ini, используемом при развёртывании типа Sysprep (используется производителями компьютеров и большими корпорациями).

Делая каждый компонент ответственным за свою регистрацию, мы уменьшаем зависимости между компонентами. Но это также означает, что глобальные оптимизации (типа заранее готового реестра) не могут быть выполнены. Проектирование - это наука о компромиссах, и это один из них: настраиваемость против скорости.

(Конечно же, в реестре есть не контекстно-зависимые блоки, и они в какой-то степени собраны вместе, в единый блок, чтобы скопировать их на машину при установке все за один заход. Посмотрите на файлы HIVExxx.INF на вашем CD Windows XP).

Я слышал, что команда Longhorn движется к модели образа диска для установки. Желаю им удачи.

4 комментария:

  1. Вы прослушали лекцию Капитана Очевидность. Хотя, кто не делал сложный инсталляторов может и не знать. :)

    ОтветитьУдалить
  2. Он совсем не так очевиден, как вы пытались показать. Microsoft пошла на поддержку, но решила ли она проблему? Сколько было криков про "грёбанный майкрософт" и их "глючный МастДай(tm)", в котором ничего не работает? ;-) Я знаю, сам использовал DDE для экспорта данных в Excel. Был вынужден оставить резервный OLE-код (на порядок более медленный) из-за того, что DDE порой непредсказуемо вис. Хотя делалось всё строго по руководству.

    ОтветитьУдалить
  3. >>> Я знаю, сам использовал DDE для экспорта данных в Excel

    Когда вы пишите новую программу, вам лучше бы не использовать устаревшие средства, оставленные для совместимости со старым софтом.

    DDE устарел и не надёжен в современном мире Win32. Он оставлен по соображениям совместимости, потому что альтернатива (выпиливание DDE из 32-х разрядных программ) была бы намного хуже.

    Я думаю, что нет смысла продолжать на тему, хороша или плоха обратная совместимость. Смысл в том, что Microsoft её придерживается, и многие вещи можно объяснить с её точки зрения, если немного подумать. В частности, ответ на вопрос, почему в Windows до сих пор есть DDE, заключается именно в этом, и ответить на этот вопрос достаточно просто.

    Но многие люди не могут это сделать, потому что не принимают во внимание обратную совместимость. "Но вы же могли сделать XYZ и тогда всё не было бы так криво!" (они просто смотрят на проблему в сферическом вакууме, в отрыве от её контекста). Да, но это означало бы отсутствие обратной совместимости - что для Microsoft означало бы, что никто не станет обновляться. Таким образом, предлагаемое такими людьми решение получается ещё хуже, чем существующее. Не все это понимают.

    Да, иногда итоговое решение получается кривое, но только потому что альтернативы были бы ещё хуже. Или вы делаете красивую систему, которую никто не купит, или вы жертвуете её чистотой ради её популярности.

    Поэтому, с определённой точки зрения, в выигрыше оказываются более молодые системы, не имеющие "тяжкого наследства" старых программ. Они имеют возможность быть чище и красивее, потому что им не надо заботится об обратной совместимости. С другой стороны, это означает, что у них нет большой базы программ. Курица и яйцо.

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.

Примечание. Отправлять комментарии могут только участники этого блога.