М О Й К О М П Ь Ю Т Е Р
S e c t i o n E n d
S u b S e c t i o n E n d
Э то часть интересна тем, что демон-
стрирует одну из новых возможностей
NSIS 2.0 — создание древовидной сис-
темы выбора компонентов инсталляции.
Ф орм ально, это две независимые сек-
ции, заключенные в оболочку из
S u b -
s e c t i o n / s u b s e c t i o n E n d . И м енно это и
определяет вид этих секций, потомков от
общего родителя (рис. 2). П о правде го-
воря, я бы назвал это не
Subsection,
а
Supersection,
ток кок по смыслу это не
«подсекция», а «нодсекция» — но разра-
ботчиком, наверное, виднее. В самих же
секциях происходят тривиальные вещи —
создание папок и ярлыков но
Рабочем
столе
и в меню
Программы,
причем ак-
тивно используются внутренние констан-
ты NSIS — $
s m p r o g r a m s
(для доступа к
меню «Программы») и
$ d e s k t o p (для д о с-
тупа к. Рабочему столу). Вместе с еще
ОДНОЙ,
$ R O G R A M F I L E S ,
ОНИ СОСТОВЛЯЮТ
наиболее широко используемые констан-
ты, вообще же их больше трех десятков.
# # # # # U n i n s t a l l p a g e c o n f i g u r a t i o n c o m m a n d :
U n i n s t a l l T e x t " $ \ r Y o u a r e a b o u t t o u n i n s t a l l
$ { F _ N A M E } f r o m y o u r c o m p u t e r "
Здесь заканчивается то, что касается инсталлятора, и
начинается часть, относящаяся к деинсталлятору.
S e c t i o n " U n i n s t a l l "
S e t D e t a i l s V i e w s h o w
D e l e t e R e g K e y H K L M " S o f t w a r e X N e w W o r l d
C o m p u t i n g \ M i g h t a n d M a g i c ® V I \ 1 . 0 "
D e l e t e R e g K e y H K L M " S o f t w a r e X N e w W o r l d
C o m p u t i n g \ M i g h t a n d M a g i c ® V I "
D e l e t e " $ S M P R O G R A M S \ 3 D O \ M i g h t a n d M a g i c
V I \ $ { S N A M E } . I n k "
D e l e t e " $ S M P R O G R A M S \ 3 D O \ M i g h t a n d M a g i c
V I X U n i n s t a l l $ { S _ N A M E } . I n k "
R M D i r " $ S M P R O G R A M S \ 3 D O \ M i g h t a n d M a g i c V I "
R M D i r " $ S M P R G G R A M S \ 3 D O "
D e l e t e " $ D E S K T 0 P \ $ { S N A M E > . I n k "
D e l e t e " $ I N S T D I R \ A n i m s \ A n i m s l . v i d "
D e l e t e " $ I N S T D I R \ A n i m s \ A n i m s 2 . v i d "
R M D i r " $ I N S T D I R \ A n i m s "
D e l e t e " $ I N S T D I R \ D a t a \ B i t m a p s . l o d "
D e l e t e " $ I N S T D I R \ D a t a \ G a m e s . l o d "
D e l e t e " $ I N S T D I R X D a t a \ I c o n s . l o d "
D e l e t e " $ I N S T D I R \ D a t a \ S p r i t e s . l o d "
D e l e t e " $ I N S T D I R \ D a t a \ N e w . l o d "
R M D i r " $ I N S T D I R X D a t a "
D e l e t e " $ I N S T D I R \ S o u n d s \ A u d i o . s n d "
R M D i r " $ I N S T D I R \ S o u n d s "
D e l e t e " $ I N S T D I R \ G a m e U p . e x e "
D e l e t e " $ I N S T D I R \ M M 6 . e x e "
D e l e t e " $ I N S T D l R \ m s s 3 2 . d l l "
D e l e t e " $ I N S T D I R \ s m a c k w 3 2 . d l l "
D e l e t e " $ I N S T D I R \ r e a d m e . t x t "
D e l e t e " $ I N S T D I R \ U n i n s t . e x e "
M e s s a g e B o x M B Y E S N O I M B _ I C O N Q U E S T I O N " W o u l d y o u l i k e
t o r e m o v e s a v e d g a m e s ? " i d n o + 4
D e l e t e " $ I N S T D I R \ S a v e s \ * . * "
R M D i r " $ I N S T D I R \ S a v e s "
R M D i r " $ I N S T D I R "
S e c t i o n E n d
Здесь, я думаю, интуитивно понятно должно быть почти
все. Как и в случае с инсталляцией, включаем режим де-
тального показа проводимых оперсций, после подтвержде-
ния пользователем (рис. 5) удаляем сразу целую ветвь из
реестра. Далее с помощью серии команд
D e l e t e и R M D i r
удаляем сначала ярлыки, потом все файлы и папки, что мы
накопировали (плюс еще некоторые файлы, которые игра
сама создает в процессе своей работы). Честно говоря,
можно было вместо всех этих команд удаления написоть од-
ну —
R M D i r / г " $ I N S T D I R " , — тогда все,
что находилось в инсталляционной пап-
ке, включая и ее саму, было бы удалено
«за один присест», но.
.. Лично у меня во
время игры в этой папке скапливается
достато чное количество «левых» ф ай-
лов — собранный игровой материал, так
сказать. Поэтому удаление того, что не
записывал инсталлятор, считаю непра-
вильным. В конце деинсталлятор удаляет
сам себя (да, этот трюк проходит ©!), за-
тем спрашивает, нужно ли удалить и за-
писанные игры (рис.
6
). При отрицатель-
ном ответе работа деинсталлятора за-
канчивается, при положительном — уда-
ляется все, что еще не успел удалить © .
; E n d o f i n s t a l l a t i o n
Что мы получили в результате? П ро-
стой, кросивый и удобный инсталлятор лю-
бимой игры, за работу которого можно
ручаться (поскольку все сделано собст-
венными рукоми), не опосаясь никаких под-
вохов. Кроме того, поскольку копирова-
ние основных фойлов не является обяза-
тельным компонентом для выбора, наш
инсталлятор может к уже проинсталлированной игре доба-
вить недостающий видеофайл для ускорения игры, а также
создать ярлыки (а вот такой функциональности я не видел ни
в одном инсталляторе ©). Вот что значит «сделано для себя»!
Вот и все Я думаю , теперь написать инсталляционный
скрипт лю бой сложности для тех, кто дочитал до этого
места, — пара пустяков. Хочется надеяться, что вскоре
после выхода в свет ж урнала со статьей я увижу в И н -
тернете множество удобных, функциональных, компакт-
ных и просто красивых программ от читстелей М К — с
инсталлятором , созданным с помощью NSIS!
'
y«i.»e-9bouttc
Mght Ы Мадк VI: The Mandate of Не»
, f Г«П your'(»frpute!
Рис.5
предыдущая страница 36 Мой Компьютер 2004 39 читать онлайн следующая страница 38 Мой Компьютер 2004 39 читать онлайн Домой Выключить/включить текст