powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / NSIS или Inno Setup?
25 сообщений из 159, страница 5 из 7
NSIS или Inno Setup?
    #35605048
sqllex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NextMan
Т.е., например, для такого объявления:

Код: plaintext
1.
2.
3.
4.
Section "Первая секция" var_index

; Как здесь узнать значение, заданное параметру var_index?

SectionEnd

Может быть я чего-то не понимаю, но
Код: plaintext
1.
2.
Section "Первая секция" var_index
MessageBox MB_OK "${var_index}"
SectionEnd

Если нужна функция, в которой нужно обработать значение по имени var_index , то ее тело должно быть ниже по тексту скрипта.
Либо передавай значение var_index в функцию перед вызовом через стек.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #35605446
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqllex
Либо передавай значение var_index в функцию перед вызовом через стек.
Ну привет...
Весь вопрос и состоит в том, чтобы узнать, чему равен индекс. Если я буду знать, что передать, то мне и функция не нужна.


Смотри:
Определяем макрос без параметров :

Код: plaintext
1.
2.
3.
4.
5.
!macro MyMacro
  ...
  ...
  ...
!macroend

Далее, берем ЛЮБУЮ секцию, вставляем в нее этот макрос:

Код: plaintext
1.
2.
3.
4.
5.
Section "Любая секция" sect_index
...
  !insertmacro MyMacro
...
SectionEnd

Задача состоит в том, чтобы макрос напечатал либо имя секции "Любая секция", либо значение ее индекса sect_index.
Андырстэнд?
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #35605526
GoodMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А из хелпа пример не пойдет?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Section test2 sec2_id
SectionEnd

 Function  .onInit
  SectionGetText $ {sec2_id}  $ 0 
  MessageBox MB_OK "name  of  $ {sec2_id} :$\n$ 0 " # will correctly display 'name of 1: test2'
FunctionEnd
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #35605532
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoodMind,

господи боже, ну откуда же я узнаю значение индекса, чтобы получить имя?


Ну как бы так еще сказать... Короче - нужен аналог "this" контекста текущей секции.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #35605537
GoodMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так используй глобальную переменную
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #35605556
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так и использую.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #35605559
sqllex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoodMindНу так используй глобальную переменную
Индекс секции - это и так глобальная переменная.

NextMan, а можно привести текст макроса. Я, хоть убей, не могу понять, что же тебе нужно. В каком контексте ты используешь индекс секции?
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #35954692
Бобик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, вы здесь все специалисты. Быть может подскажете в чем может быть проблема с NSIS. Конкретно интересует конструкция:

!insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP

Из хелпа:

For the uninstaller, use the MUI_STARTMENU_GETFOLDER macro to get the Start Menu folder:

!insertmacro MUI_STARTMENU_GETFOLDER page_id $R0
Delete "$SMPROGRAMS\$R0\Your Shortcut.lnk"


Проблема в том, что MUI_STARTMENU_GETFOLDER не присваивает $ICONS_GROUP изменного значения STARTMENU.

От сеюя хочется добавить, что весьма сложно разбраться с NSIS. Даже нет толкового описания синтаксиса. Приходится каждую буковку выковыривать.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #35954804
Бобик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NextMan интересные вещи говорил, полезно почитать его посты.

А насчет проблемы с !insertmacro MUI_STARTMENU_GETFOLDER пришлось сырцы глянуть. Оказывается в

!insertmacro MUI_PAGE_STARTMENU Application $Переменная_измененной_группы

нужно не только устанавливать

MUI_STARTMENUPAGE_REGISTRY_ROOT
MUI_STARTMENUPAGE_REGISTRY_KEY
MUI_STARTMENUPAGE_REGISTRY_VALUENAME

для сохранения в реестре изменнной STARTMENU группы($Переменная_измененной_группы), но также еще и дополнительно прописывать ID к чему это все хозяйство относится:

!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
!insertmacro MUI_STARTMENU_WRITE_END

и лишь затем получать группу (например в Unstaller):

!insertmacro MUI_STARTMENU_GETFOLDER Application $Переменная_измененной_группы

Примеры NSIS слабенькие, многие просто не доведены до конца: тот же StartMenu (NSIS\Examples\StartMenu\) - группу создают, но не удаляют. В чем и есть весь прикол, т.к. тема MUI_STARTMENU_GETFOLDER мягко обойдена вниманием - типа е..тесь как хотите сами ;)

Вопросов масса. Например, как в background window (BGFont, BGGradient) сделать разбиение текста на две и более строки.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #36325788
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бобик2...
Примеры NSIS слабенькие, многие просто не доведены до конца: тот же StartMenu (NSIS\Examples\StartMenu\) - группу создают, но не удаляют.
... Удаляем обычными операциями с файлами/директориями.
...
Имхо, в примерах мало внимания уделено процессу деинсталляции.
В Инно это как бы все "само собой", а здесь - ты должен понимать, что делаешь. И, соответственно, проектировать инсталляцию с учетом будущей деинсталляции.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #36326588
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  StrCpy $ 1  "абвгд"


  $ {IfNot}  $ 1  <> ""
# Фиквам
  $ {EndIf} 


  $ {IfNot}  $ 1  == ""
# Теперь да
  $ {EndIf} 
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #36327582
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пипец...вот написал так написал...
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #36452200
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NextManНарод, кто-нибудь знает, как внутри секции определить, что это за секция? :)

Задача в том, что есть некоторый универсальный макрос, который делает разные вещи в зависимости от того, в какой секции он находится.
${__SECTION__}

${__SECTION__}Defined as the section name, without any prefixes, in section scope.
Аналогично:


${__FUNCTION__}Defined as the function name, without any prefixes, in function scope.
${__PAGEEX__}Defined as the page type in PageEx scope.
${__UNINSTALL__}Defined in section, function or PageEx scopes of the uninstaller.

Источник: NSIS user manual, chapter 5.2 "Predefines".
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #36452225
Фотография NextMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть, кому понадобится.

Если нужна условная компиляция в зависимости от разных внешних условий (наличе/отсутствие файла, например), то используем директиву !system.
Вещь очевидная, описана в примерах, но я не знал :(.

Пример.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
### If nsx.dll not found then "Search with banner" example will not be compile ###
; Создается временный файл - пустышка
!system 'ECHO.>"%TEMP%\Temp$$$.nsh"'
; Если файл nxs.dll  существует, во временный файл дописывается директива !define nxs_exist
!system 'IF EXIST "${NSISDIR}\Plugins\nxs.dll" ECHO !define nxs_exist>>"%TEMP%\Temp$$$.nsh"'
; временный файл включается в текущий скрипт
!include "$%TEMP%\Temp$$$.nsh"
; временный файл удаляется
!system 'DEL "%TEMP%\Temp$$$.nsh"'

!ifdef nxs_exist
; Понеслась...
Section /o "Search with banner - 'NxS' plugin required" SearchWithBanner
...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
NSIS или Inno Setup?
    #38306858
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Под Windows 8 появилась проблемка: инсталлятор, приготовленный с помощью NSIS, инсталлирует ХЗ как.
Если перед запуском указать файлу инсталлятора режим совместимости Windows 7 - то все ОК.

Версия NSIS - 2.46 (последний доступный релиз).

Как бы и что поправить?

Спасибо.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #38306880
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, третью версию недавно выпустили:

авторAdded support for Windows 8 and Windows Server 2012

Гут.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #38306888
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДАга, третью версию недавно выпустили:

авторAdded support for Windows 8 and Windows Server 2012

Гут.
Нихт гут, зер шлехт. :(

"Тройка" - пока первая падучая "альфа". А 2.хх, похоже, заморозили.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #38306891
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДВсем привет.

Под Windows 8 появилась проблемка: инсталлятор, приготовленный с помощью NSIS, инсталлирует ХЗ как.
Если перед запуском указать файлу инсталлятора режим совместимости Windows 7 - то все ОК.

Версия NSIS - 2.46 (последний доступный релиз).

Как бы и что поправить?

Спасибо.
Вот тут один дяденька пишет, что в манифест приложения генерируемого инсталлятора нужно добавить запись о совместимости с Windows 8:

Код: xml
1.
             <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />


только делает это он через анус с помощью утилиты mt.exe из состава MS Visual Studio.
Проверил: работает, но требует установленного дотнета соответствующей версии.
Блин. Оставлю этот вариант "на сладкое", если ничего не придумаю.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #38306893
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ёпть, ну я и идиот. NSIS же опен-соурсе. Вкомпиляй в ресурсы какие хочешь манифесты, на здоровье!

~~~~~~

ЛЮ-У-У-У-ДИ! Кто-нибудь самостоятельно, из исходников собирал NSIS?
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #38306903
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДЁпть, ну я и идиот. NSIS же опен-соурсе. Вкомпиляй в ресурсы какие хочешь манифесты, на здоровье!

~~~~~~

ЛЮ-У-У-У-ДИ! Кто-нибудь самостоятельно, из исходников собирал NSIS?
Так, продолжаем тормозить...

В SVN лежат исходники, в которых все сделано: http://nsis.svn.sourceforge.net/viewvc/nsis/NSIS/trunk/

Осталось найти способ все это "щасте" откомпилять или найти откомпиленную версию. Последний найтбилд делался сто лет назад.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #38306912
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БлѢ ... Building NSIS хоть с сипипишникам на поклон иди...

Нужно поставить:
- python версии 2.* (не ниже 2.4).
- SCons - версии не ниже 1.2.0.
- zlib - dt
- wxWidgets

Потом откомпилять все это с помощью C++ из состава VS 2005 Express Editions.

Питон: Качаем версию 2.7 , ставим.

SCons: http://www.scons.org/ Качаем версию 2.3.0, ставим. Не ставится. Не видит место, где инсталлировался питон. Выбор руками задизейблен...блин.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #38306914
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нсис умер, инно живет и местами процветает. Я им пользуюсь и все рады. Особенно корпоративнве клиенты.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #38306929
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДБлѢ ... Building NSIS хоть с сипипишникам на поклон иди...

Нужно поставить:
- python версии 2.* (не ниже 2.4).
- SCons - версии не ниже 1.2.0.
- zlib
- wxWidgets

Потом откомпилять все это с помощью C++ из состава VS 2005 Express Editions.

Питон: Качаем версию 2.7 , ставим.

SCons: http://www.scons.org/ Качаем версию 2.3.0, ставим. Не ставится. Не видит место, где инсталлировался питон. Выбор руками задизейблен...блин.
Угу. Нефиг умничать: не работало из-за того, что питон был установлен 64 - разрядный.
Снес, поставил 32-разрядный, SCons установился.

Качаем zlib: http://zlib.net/ Выбираем zlib128-dll.zip, качаем, распаковываем. создаем системную переменную ZLIB_W32, в которую прописываем путь к распакованной библиотеке zlib.

Качаем wxWidgets: http://www.wxwidgets.org/ - берем версию 2.8.4 (есть поновее, но как бы не вышло типа наподобие как с питоном). Инсталлируем. Создаем системную переменную WXWIN, в которую прописываем путь в директорию инсталляции.

Теперь надо весь этот хлам откомпилять.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #38306931
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanНсис умер...
С чего бы это? 20 мая третья версия вышла.
...
Рейтинг: 0 / 0
NSIS или Inno Setup?
    #38306933
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД20 мая третья версия вышла.
Естественное газообразование не есть развитие. :)
...
Рейтинг: 0 / 0
25 сообщений из 159, страница 5 из 7
Форумы / Delphi [игнор отключен] [закрыт для гостей] / NSIS или Inno Setup?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]