NSIS

Feb. 14th, 2008 12:55 pm
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Поптобовал тут NSIS. Это такой компилятор для генерации виндовых инсталляторов. Хорош в первую очередь тем, что работает не только под виндами, т.е. собрав под Linux-ом программу кросскомпилятором, можно её тут же завернуть в инсталлятор и получить законченный продукт.

Язык для генерации инсталляторов там, конечно, что-то с чем-то. Авторы характеризуют его как "помесь PHP с ассемблером", но мне тамошние flow control конструкции скорее напомнили Fortran IV.

Но для простых случаев инсталляторы пишутся тривиально.

Помимо того что работает на удобной для работы системы, преимуществовм данного инструмента перед InstallShield является то, что получившиеся инсталляторы МАЛЕНЬКИЕ. InstallShield туда запихивает несколько мегабайт своего мусора. А с nsis у меня весь инсталлятор OpenSSL почти-что на дискетку уместился. (на 1.7).

За это, правда, ириходится платить тем, что некоторые тривиальные вещи вроде регистрации деинсталлятора в Add/Remove Programs
и прописывания переменных среды приходится делать на низком уровне, посредством операции WriteRegStr.

Date: 2008-02-14 10:32 am (UTC)
From: [identity profile] metaclass.livejournal.com
Хорошая штука, но скрипты для него писать это тяжкий кошмар. Смесь императивного и декларативного кода, функции безумные, и тому подобные ужасы. Ну расширения к нему в виде dll подключать, для всяких неадекватных действий.

Date: 2008-02-14 09:10 pm (UTC)
From: [identity profile] roman_sharp.livejournal.com
Нет, не обязательно 10. В моей коллекции есть реальные двухметровые.

Date: 2008-02-14 11:43 am (UTC)
From: [identity profile] os80.livejournal.com
А вот интересно, когда кто-нибудь напишет "неправильный" инсталлятор, который не надо будет ИЗУЧАТЬ? А то, может, я тупой, но я стандартный инсталлятор создать не смог, пришлось bat-файл делать :-)

Date: 2008-02-14 09:12 pm (UTC)
From: [identity profile] roman_sharp.livejournal.com
Ну вот на форуме человек спросил, как бы просто пакет(ы) документов выборочно разбросать (нужные развернуть, ненужные нет).

Ни реестра, ни контрольной панели - простое копирование.
Если под такие задачи делать инсталляторы, то их можно делать простыми.

А если приложения писать без реестра - тоже никому плохо не будет по-моему.

Date: 2008-02-15 07:30 am (UTC)
From: [identity profile] os80.livejournal.com
Я сломался на том, что мне нужно было просто зарегистрировать dll. Остальное делалось.
Наверняка это делается просто. Но неочевидно.

(а почему работа с реестром должна быть сложной? Сам реестр, допустим, сложен, но, если человек юзает реестр, то, наверное, знает, как он устроен. Главное, чтобы автор инсталлера не изобретал своих сущностей вроде языка скриптования для стандартных вещей.)

Date: 2008-02-15 08:46 am (UTC)
From: [identity profile] os80.livejournal.com
Во-первых, это я в bat-файле могу просто написать regsvr32 имя.dll. А как работает "свой скриптовый язык" - понятия не имею. В частности, какой функцией вызываются стандартные утилиты. На изучение этого вопроса уйдёт полдня. Это бы ничего, но следующий инсталлятор я буду писать через полгода, и к тому моменту всё забуду и потрачу ещё час на вспоминание.
Во-вторых, как показала практика, в 98 винде этой утилиты нет.
В-третьих, я не призывал регистрировать библиотеки через реестр, скорее наоборот, хотел, чтобы для этого часто выполняемого действия был в инсталляторе какой-то специальный пункт. И (если такой пункт есть) чтобы его реально можно было легко найти, а не чесать репу "как я проглядел", когда покажут на него.

InnoSetup?

Date: 2008-02-14 03:09 pm (UTC)
From: [identity profile] viklequick.livejournal.com
Я в свое время набрел на сабж, с моей точки зрения - гораздо более удобная штука чем NSIS. К ней есть всяких визуальных генерилок и даже редактор форм, все опенсорц. Один минус - на делфе написана, потому в линухе запускаю через wine ейный compiler32 (работает без нареканий).

Re: InnoSetup?

Date: 2008-02-14 05:40 pm (UTC)
phd_ru: (Default)
From: [personal profile] phd_ru
Я пишу скрипты для InnoSetup в vim в Linux, потом запускаю VirtualBox, копирую в него исходники, и натравливаю InnoSetup.

Re: InnoSetup?

Date: 2008-02-14 05:53 pm (UTC)
phd_ru: (Default)
From: [personal profile] phd_ru
В дистрибутив vim7 даже входит syntax hilighting для скриптов InnoSetup - iss.vim (:set filetype=iss).

Re: InnoSetup?

Date: 2008-02-14 06:03 pm (UTC)
From: [identity profile] viklequick.livejournal.com
Руками - удобнее чем NSIS, факт. По крайней мере - имхо.

Re: InnoSetup?

Date: 2008-02-15 07:12 am (UTC)
From: [identity profile] mc6312.livejournal.com
Скрипты пишутся в любом текстовом редакторе, формат документирован.
Плюс внутри для нестандартных действий вместо "помеси PHP с ассемблером" есть диалект паскаля.

Date: 2008-02-14 04:13 pm (UTC)
From: [identity profile] netfilter.livejournal.com
Выужден не согласиться: ничего не могу сказать по поводу создания виндовых сетапов из линукса, но писать скрипты для NSIS'а это действительно тяжкий кошмар, который к тому же наводит на странные размышления о разработчиках, которые почему-то не подумали прикрутить нечто более стандартное, вроде тикля или Lua.

И потому под виндами я сделал выбор в пользу InnoSetup, который декларативно скриптуется и имеет минимум две GUI-морды к себе, которые позволяют сляпать простой сетап за пять минут. Что обычно и требуется.

Да, вот ещё что...

Date: 2008-02-14 04:26 pm (UTC)
From: [identity profile] netfilter.livejournal.com
Есть в виндах куда более страшно скриптуемая штука, чем NSIS. Она называется wix. И морды для неё на горизонте пока что не видно.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

January 2026

S M T W T F S
     1 2 3
4 5678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 7th, 2026 05:06 pm
Powered by Dreamwidth Studios