на этапе сборки, чтобы задавать предопределенные сце-
нарии установки (например,
Минимальная, Обычная, П о л-
ная
и т.п.), или же пользователем непосредственно в про-
цессе работы (вариант
Пользовательский — Custom).
Имен-
но команды, определенные в секциях, выполняют всю ос-
новную невизуальную часть работы инсталлятора. Каждая
секция имеет имя, определяю щее текст, который пользо-
ватель сможет увидеть, выбирая компоненты для установ-
ки. О с о б о е значение имеет имя секции
Uninstall
(или лю -
бое другое, начинающееся на
ип)
— оно определяет, что
данная секция содержит команды деинсталляции.
И так, страницы и секции — это основа для создания
инсталлятора, и этого обычно достаточно. Для гурманов
же предусм отрен такой инструмент, как
функции,
кото-
рые и обеспечиваю т продвинутые возможности. Функции
в NSIS бывают двух типов —
обычные (пользовательские)
и
функции обратного вызова (callback).
Пользовательские
функции хорош о знакомы всем, кто хоть раз пытался на-
писать лю бую программу но лю бом языке програм м иро-
вания. О н и играю т ту же роль, что и при обычном про-
граммировании, нужны для выполнения серии одинако-
вых команд с разными параметрами и вызываются из са-
мого скрипта. Функции о б р а тн о го вызова (callback) так-
же должны быть хорош о известны программистам под
W indow s. В отличие от обычных, их вызывает сам инстал-
лятор в ответ на некоторые события, происходящ ие в
процессе установки. Наприм ер, функция
- o n i n i t вызы-
вается вначале при инициализации и нсталлера, .
o n i n -
s t S u c c e s s
— в конце процесса инсталляции при у с ло -
вии, что он был успешным, и т.п. Задача же программи-
ста — предусм отреть реакцию на нужные ему события.
Из сказанного становится ясно, сколь многое можно
сделать с помощью N SIS 2.0 — а ведь я еще и не гово-
рил о командах! Как по мене, то предоставляемые ими
возможности просто потрясаю т. Чтобы оценить их, д о с-
таточно пролистать более чем 100-страничный м ануал,
идущий в комплекте. О дн а к о просто перечислять их скуч-
но и никому не нужно — поэтому предлагаю самые важ-
ные из них опробовать в «полевых условиях», на р а б о -
чем примере — а я постараю сь прокомментировать все,
чтобы было понятней.
Теперь оставим на время разбор NSIS и посмотрим на
нашу проблему с другой стороны. Работоспособность про-
граммы в общем случае чаще всего зависит от двух фак-
торов: наличия нужных файлов в определенных местах и
наличия нужных ключей реестра в определенных его вет-
вях. Поэтому для лю бого инсталлятора жизненно необхо-
димыми являются
списки файлов,
которые должны быть ин-
сталлированы, и
ключей/записей реестра,
которые долж -
ны быть созданы. Для автора программного продукта ни-
каких проблем нет — он и сам знает, что нужно для того,
чтобы его собственное творение заработало. В других же
случаях, в том числе и нашем, все не так просто. Иногда
приходится проводить чуть ли не детективное расследова-
ние, чтобы заставить капризную программу работать.
Наш случай довольно простой — никаких других фай-
лов, кроме как записанных в оригинальную инсталляцион-
ную папку, игре не требуется. В этом можно убедиться, про-
сто скопировав эти фойлы, например из архива, на компь-
ютер, где игра не инсталлировалась, — она останется р а -
ботоспособной. Иногда подопытная программа сама под-
сказывает: «Для работы мне нужно присутствие такого-то
файла там -то и том -то». В тяжелых случаях поможет утили-
та FileMon — с ее помощью можно от-
следить все обращения программы к фай-
лам и таким образом определить, чего
же ей не хвотает.
О бы чно программы использую т не
только файлы, но и системный реестр
W indows. Э то следующее поле для на-
ших исследований. О тсутствие нужных
ключей в реестре для программы может
быть таким же фатальным, как и отсут-
ствие нужных файлов, а определить их
сложнее. Н о нам снова повезло — игра
не требует обязательного присутствия «родны х» записей в
реестре (что подтверждается описанным выше эксперимен-
том с «ручной» установкой игры но «чистый» компьютер).
О дн а ко это не значит, что она им вообще не пользуется
(туда записываются розничные параметры игры, и в этом
скоро можно будет убедиться). Д е ло в том, что, не найдя
эти записи при первом старте, игра заново создает не-
сколько веток в реестре со значениями по умолчанию. П о -
этому нам не нужно заботиться о реестре при инсталля-
ции. В противном случае опять же на выручку приходит
близнец уже упоминавшейся FileMon — утилита RegM on
(обе программы и еще много других зомечательных вещей
на все случаи жизни можно взять на сайте http://www.sysm
ternals.com). Аналогично, онс позволит отследить все об р а -
щения программы, но уже не к файлам, а к реестру.
О дн а к о совсем избежать возни с реестром все равно
нам не удастся. П рограм м а-то дописывает данные в ре-
естр автоматически, но сами собой они оттуда никуда не
денутся. И если мы хотим создать корректный деинстал-
лятор, то нодо предусмотреть удаление этих записей. Для
решения этой задачи можно предлож ить два способа.
Первый: взять
Regedit
и проверить в реестре наличие
строк, которые, возможно, относятся к инсталлируемой
программе. С п о со б второй: сделать то же, но с помощью
специализированных утилит. Для этих целей идеально под-
ходит RegShot (последняя версия — 1 .7.2; качать, напри-
мер, здесь http://wasm.ru/tools/17/regshot.zip). Э та крохотная
программа, будучи зспущ енной, позволяет в лю бой мо-
мент времени сделать моментальный «снимок» реестра,
а также сравнить его с предыдущим, показав, таким о б -
разом , все изменения, произош едш ие в реестре. Э то нам
и нужно. Запускаем RegShot, делаем снимок, запускаем
игру, снова делаем снимок, сравниваем — и вот мы уже
знаем, что программа пишет в реестр!
Итак, вооружившись нужными списками и знаниями о
NSIS, можно соорудить полноценную , вполне работоспо-
собную инсталляцию. Как я и обещ ал, после каждого ло -
гического блока команд я буду давать краткий коммента-
рий, поясняющий работу соответствующей части скрипта.
; S i m p l e М М б I n s t a l l a t i o n
; V e r s i o n 1 . 2 — 0 3
0 8 . 2 0 0 4
# # # # # D e f i n e s :
! d e f i n e S N A M E " М М б "
! d e f i n e M N A M E " M i g h t a n d M a g i c V I "
! d e f i n e F N A M E " M i g h t a n d M a g i c V i s T h e M a n d a t e o f
H e a v e n "
' d e f i n e S O U R C E P A T H " E : \ T E M P \ M M 6 "
Здесь определены константы — сокращ енное, сред-
нее и полное имя инсталлируем ого продукта (полезно,
если надо будет по-бы стром у, в походных условиях пе-
ределать этот скрипт в инсталляцию чего-нибудь друго-
го) и путь, по которому уже можно найти игру (источник
ф айлов)
К стати , пока б уде те эксперим ентировать со
скриптом, полезно заменить реальные инсталлируемые
файлы, которые занимают сотни м егабойт, на файлы -пус-
тышки — файлы с теми же именами, но имеющие малень-
кий размер. В противном случае каждый раз компиляция
б удет затягиваться на многие десятки минут.
# # # # # I n s t a l l e r a t t r i b u t e s :
N a m e " $ { S N A M E } "
C a p t i o n " $ { M N A M E } S e t u p "
I c o n " $ { S N A M E }
i c o "
U n i n s t a l l l c o n " $ { S _ N A M E } U n . i c o "
O u t F i l e " $ { S N A M E } S e t u p . e x e "
S i l e n t l n s t a l l n o r m a l
B G G r a d i e n t o f f
I n s t a l l C o l o r s O x F F C 0 4 0 0 x 0 0 0 0 0 0
О пределяю тся главные атрибуты ин-
сталлятора: название, заголовок окно,
конечный ф айл и файлы-иконки для ин-
сталлятора и деинсталлятора (посколь-
ку я не силен в рисовании, я просто
скомбинировал иконку с головой д р а -
кона от сомой игры со стандартными
иконками W indows — компьютера и кор-
Рис.1
предыдущая страница 34 Мой Компьютер 2004 39 читать онлайн следующая страница 36 Мой Компьютер 2004 39 читать онлайн Домой Выключить/включить текст