NSIS: Hello, world.

Изучение любого языка начинается с Hello, world, вот и я не буду отступать от этой традиции. Напишем простой инсталлятор, который даже не инсталлятор, потому что ничего не устанавливает, а просто пишет сообщение пользователю.

Name "HelloWorld"
OutFile "helloworld.exe"

ShowInstDetails show
RequestExecutionLevel User

Section
	DetailPrint "Hello, world!"	
SectionEnd

Объяснение кода

Сначала пишем обязательную конструкцию Name и придумываем имя установщика, тут, естественно, "HelloWorld". Имя может содержать пробелы, оно будет отображаться в заголовках окон и окнах инсталлятора, а также попадет в список программ в «Программы и компоненты», в случае реального установщика.

Далее идет обязательная конструкция OutFile — файл установщика. Если его не прописать, то компилятор не будет знать под каким именем собрать программу установки и пошлет нас.

Следующим шагом (ShowInstDetails show) развернем окно с логом установки, как это было описано в предыдущей копия заметке.

Теперь запрашиваем запуск из под пользователя с ограниченными правами (RequestExecutionLevel User). Инсталляторы обычно запускаются с правами администратора, но в данном случае мы ничего не устанавливаем, и нажимать лишний раз кнопку в окошке UAC не нужно.

Далее необходимо завести хотя бы одну секцию. Если в скрипте не будет хотя бы одной секции — компилятор прервет работу. Организуем единственную секцию без названия.

Section
	[ТУТ БУДЕТ КОД]
SectionEnd

На самом деле секции нужны для того, чтобы сделать возможным выбор компонентов устанавливаемой программы, полную или выборочную установку. Но об этом ниже.

Внутри секции пишем сообщение, выводящее заданный текст в окошко с логом (деталями установки):

DetailPrint "Hello, world!"

О редакторах кода для NSIS

На самом деле выбора не так, чтобы много, но какой-никакой есть. На официальном сайте предлагают пользоваться Eclipse и плагином к нему, но у меня на Клипсу, wim и TeX стойкая аллергия еще со студенческих времен.
Есть плагин для Visual Studio, но написан он китайцами для китайцев, так что нафиг. Впрочем, может есть и нормальные плагины, но я не нашел. Сам пользуюсь пожилой средой Venis IX, там есть мастер для генерации простых установщиков, которого вполне хватает, чтоб постоянно не писать одно и то же, создавая новый инсталлятор.

Исходник

На GitHub

NSIS: Открыть окошко с логом установки (Show details) по умолчанию

Если ничего не делать, детали установки по умолчанию скрыты:

Чтобы лог установки сразу был виден пользователю, необходимо применить один из следующих методов:

1. В коде скрипта, до секций прописываем команду:

ShowInstDetails show

Окошко с логом (деталями установки) будет открыто

2. Прописать внутри секции команду:

SetDetailsView show

Это может быть полезно, например, если вы хотите, чтобы детали показывались и при удалении. В таком случае, вышеуказанная команда добавляется в начало секции, описывающей анинсталлер:

Section Uninstall
	
	SetDetailsView show
	
	[..]
	[..]

SectionEnd

Переделал автоматический инсталлятор для Devcon. Или куча ворчания.

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

Предыдущий я сделал на Inno Setup, но Inno Setup оказался той еще заразой, нихрена он версию Винды толком определить не мог, и тихой сапой подкладывал во все винды один и тот же devcon, который подходит для Windows 7 и выше. От чего у клиента с виндой XP x64 произошел адский баттхерт, так, что забрызгало пол-Петербурга, аж до моей деревни брызги долетели. Видимо, клиент меня проклял, потому что мне на ногу упал топор (слава Ктулху обухом), у меня упали форточки, точнее форточка, но стеклянная и на пол, ко мне какого-то черта приперлась лесная охрана и стала [РОСКОМНАДЗОР], и я после этого [РОСКОМНАДЗОР] в результате, теперь страдаю [МИНЗДРАВ].

Новый сделал на NSIS, но как оказалось — NSIS тоже [РОСКОМНАДЗОР], точнее, не сам NSIS, он мне как раз понравился, за исключением одного странного недокументированного глюка, о котором как-нибудь расскажу, и скрипт-язык, вполне себе такая помесь Бейсика с Башем. А вот документация, это, товарищи, лютый [РОСКОМНАДЗОР] в последней стадии.

Русский мануал к популярному инсталл-мэйкеру писали сто лет назад какие-то [ДАННЫЕ УДАЛЕНЫ] с OSZone.net, еще и назвали свое творение «справочником», хотя что-что а справочники так не делают. Просто плохо структурированные статьи, которые на [РОСКОМНАДЗОР] запихнули в chm-файл. [РОСКОМНАДЗОРКА], поучитесь у того же Исзелиона с wasm.ru, как нужно делать справочники и мануалы. На туториале Исзелиона сотня-другая студентов если не аспирантами стали, так свой зачет по ассемблеру точно получили. Аффтар еще и жалуется на форуме, типа, «ну на[РОСКОМНАДЗОР] обновлять мануал, если его никто не читает, и очевидные вопросы задает». Так [РОСКОМНАДЗОРКА], [РОСКОМНАДЗОРКА], ты так написал этот мануал, что кошка [РОСКОМНАДЗОРОМ] по клавиатуре лучше напишет. Но ладно, я много захотел, русского мануала. Да, согласен. Но теперь «поговорим о влажности в номере», точнее об оригинальной вики от разработчиков.

Оригинальная вики тоже [РОСКОМНАДЗОРНЫЙ], [РОСКОМНАДЗОР] твою мать, [РОСКОМНАДЗОР]. Причем, я вполне себе уверен, что там есть все описания функций языка NSIS, вот только отдельной категории для списка функций нет. Функции потом ищутся гуглем, который выводит на страницу-сироту с вполне нормальным описанием, но [РОСКОМНАДЗОР] знает, почему на эту страницу нельзя попасть из самой вики. В навигации [РОСКОМНАДЗОР] не валялся, в общем без стакана не разобраться. А еще пишут, что «хорошо документированный продукт». Документирован он может и хорошо, но найти в документации что-то конкретное, это как в ГОРФ пойти к чиновнику: «вы мне справку ЕПРСТ-1488 принесли, а надо было ЖПЧШЦ-666», и [РОСКОМНАДЗОР] знает где это написано.

Даже есть мысль как-нибудь выкачать эту вики себе на комп, сделать нормально, попытаться перевести и выпустить в виде справочника.

Впрочем, инсталлер сделал:

Скачать с Mega.nz
С GitHub
Исходник (файлы devcon_all.nsi и gvv.nsi)

ШОК: Семь капитанов искали РУБЛЬ

И никакой конспирологии…

Тут некоторые задаются вопросом, что семь капитанов первого ранга искали на секретной подлодке в глубине северных морей. Есть совсем уж русофобские и конспирологические версии, что они хотели устроить всем суверенный Рунет, обрубив трансатлантический кабель.

Да конспирология это все, причем, довольно низкого пошиба. Чем у нас могут заниматься военные, да еще и в первых чинах, на дне, причем, проводя батиометрические исследования, т.е. исследования того самого дна.

Да рубль они на дне искали.

А почему у них бомбануло, ну, знаете ли, океанская кора тонкая, и куда там рубль провалится…