|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Пользователь Сообщения: 129
|
Профиль | Отправить PM | Цитировать icq99999999,
перед созданием ярлыка, нужно создать папку ярлыка, иначе ярлык может не создаваться: CreateDirectory "$SMPROGRAMS\mod" CreateShortCut "$SMPROGRAMS\mod\mod.lnk" "$INSTDIR\mod.exe" Цитата icq99999999:
SetOutPath "$SMPROGRAMS\" RMDir /r /REBOOTOK "$SMPROGRAMS\mod" Цитата icq99999999:
|
||
Отправлено: 09:39, 25-10-2013 | #641 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 86
|
Профиль | Отправить PM | Цитировать нужно распознать значение из ini
то есть в ini в секции Setting параметр (I)D будет значение например $EXEDIR вытяну значение ReadINIStr $1 "$INSTDIR\mod.ini" "Setting" "(I)D" но в переменную $1 будет скопировано сам текст $EXEDIR а мне нужно чтоб а но распознавалось и вместо текста $EXEDIR был путь exe ну то есть
как итог будет сообщение с текстом "вы запустили exe из $EXEDIR" а мне нужно чтоб был путь exe то есть например сообщение с текстом: "вы запустили exe из С:\1.exe" |
Последний раз редактировалось icq99999999, 25-10-2013 в 11:37. Отправлено: 11:20, 25-10-2013 | #642 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 11:53, 25-10-2013 | #643 |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать K.A.V., Первую часть читал. Сидел ночью часа полтора и построчно "проходил" код, записывал как изменяются переменные. Забавно.
Function nsRkeeperIni ;!insertmacro var_message ${if} $NumCash > 0 Goto CreateTest0 ${endif} ${IpPortMid_ar->Init} ${MID_ar->Init} ${RefServerMid_ar->Init} ${IPMidSrv_ar->Init} ${Station_ar->Init} StrCpy $ini ".ini" StrCpy $R6 "1" StrCpy $R7 "1" ;!insertmacro var_message StrCpy $NumMid "4" StartTest0: StrCpy $NumMidFlag "1" ;флаг входа в цикл NumMid nsDialogs::Create 1018 Pop $Dialog ${If} $Dialog == error Abort ${EndIf} ${NSD_CreateLabel} 0 0 100% 12u "Создаем Rkeeper.ini - Введите параметры ресторана ниже" Pop $Label1 ${NSD_CreateLabel} 0 13u 100% 12u "Имя кассового сервера:" Pop $Label2 ${NSD_CreateText} 0 25u 100% 13u "TEST_MIDSERVER" ;задаем имя клиента Pop $MID ${NSD_CreateLabel} 0 38u 100% 12u "Кассовый сервер подсоединяестся к серверу:" Pop $Label3 ${NSD_CreateText} 0 50u 100% 13u "TEST_RK7SRV" ;задаем имя сервера к которому подсоединяемся Pop $RefServerMid ${NSD_CreateLabel} 0 63u 100% 12u "IP-адрес и порт" Pop $Label4 ${NSD_CreateText} 0 75u 100% 13u "127.0.0.1:3669" ; Pop $IpPortMid ${NSD_CreateLabel} 0 88u 100% 12u "Количество касс на данном кассовом сервере (1..50)" Pop $Label25 ${NSD_CreateText} 0 100u 100% 13u "1" ; Pop $NumCash ;IntOp $R5 $NumCash -1 ;MessageBox MB_OK "NumCash=$NumCash $\n MID=$MID $\n IpPortMid=$IpPortMid" ;!insertmacro var_message ;Задаем количество касс на кассовом сервере ;StrCpy $Num1 $NumCash ;зачем-то надо копировать. С Numcash не работает nsDialogs::Show ${if} $R6 <= $NumMid ${andif} $NumCash == 0 Goto FinishTest0 ${endif} CreateTest0: ${if} $NumCash > 0 nsDialogs::Create 1018 Pop $Dialog ${If} $Dialog == error Abort ${EndIf} ${NSD_CreateLabel} 0 0 100% 12u "Создаем wincash.ini - введите параметры кассовой станции" Pop $Label8 ${NSD_CreateLabel} 0 13u 100% 12u "Имя кассовой станции:" Pop $Label9 ${NSD_CreateText} 0 25u 100% 13u "TEST_ST01" ;задаем имя кассовой станции Pop $Station ${NSD_CreateLabel} 0 38u 100% 12u "IP-адрес кассового сервера:" Pop $Label10 ${NSD_CreateText} 0 50u 100% 13u "127.0.0.1" ; Pop $IPMidSrv StrCpy $NumCashFlag "1" ;флаг разрешения входа в цикл NumCash ${endif} nsDialogs::Show IntOp $NumCash $NumCash - 1 ;MessageBox MB_OK "Уменьшаю NumCash на 1 $\n Теперь NumCash=$NumCash" FinishTest0: ${If} $NumCash == 0 IntOp $R6 $R6 + 1 ;MessageBox MB_OK "Увеличиваю R6 на 1 $\n Теперь R6=$R6 $\n NumCash=$NumCash" StrCpy $NumCashFlag "0" ;флаг запрета входа в цикл NumCash ${endif} ${if} $NumCash > 0 Goto CreateTest0 ${endif} ${If} $R6 <= $NumMid ;${andif} $NumCash > 0 Goto StartTest0 ${endif} FunctionEnd ;работа с массивами тут необходима Function nsRkeeperIniLeave ${if} $NumMidFlag == 1 ${NSD_GetText} $NumCash $NumCash ${NSD_GetText} $MID $MID ${NSD_GetText} $RefServerMid $RefServerMid ${NSD_GetText} $IpPortMid $IpPortMid ;${NSD_GetText} $Num1 $Num1 ${MID_ar->Write} $R6 "$MID" ${MID_ar->Read} $R2 $R6 ${RefServerMid_ar->Write} $R6 "$RefServerMid" ${RefServerMid_ar->Read} $R3 $R6 ${IpPortMid_ar->Write} $R6 "$IpPortMid" ${IpPortMid_ar->Read} $R4 $R6 !insertmacro var_message !insertmacro MakeRkeeperIni StrCpy $NumMidFlag "0" ;флаг выхода в цикл NumMid StrCpy $NumCashFlag "0" ;флаг запрета входа в цикл NumCash - в принципе тут лишний ${endif} ${if} $NumCashFlag == 0 ${orif} $NumCashFlag == "" Goto FinishTest1 ${endif} ${if} $NumCash < 1 ${OrIf} $NumCash > 50 ;MessageBox MB_OK "Задано слишком маленькое или большое количество станций $\n либо задано некорректное NumCash=$NumCash $\n $\n R6<NumCash ($R6<$NumCash) $\n Перезапустите инсталлятор" ${else} ;MessageBox MB_OK "На кассовой станции №$R6 $NumCash станций $\n R7=$R7" ${NSD_GetText} $Station $Station ;${NSD_GetText} $RefServer2 $RefServer2 ${NSD_GetText} $IPMidSrv $IPMidSrv ${Station_ar->Write} $R7 "$Station" ${Station_ar->Read} $2 $R7 ${IPMidSrv_ar->Write} $R7 "$IPMidSrv" ${IPMidSrv_ar->Read} $3 $R7 ${NSD_GetText} $2 $2 ${NSD_GetText} $3 $3 !insertmacro var_message !insertmacro WinCashIniBat IntOp $R7 $R7 + 1 ${endif} /* ${if} $NumCash ${if} $R6 < $NumMid Goto FinishTest1 ${endif} */ ;;Íå îáÿçàòåëüíî, íî åñëè çàäàòü áóäåò êîííåêòèòüñÿ áûñòðåå, òî æå äëÿ êàññû ;;Èíîãäà íåîáõîäèìî (åñëè íå ïðîõîäÿò broadcast ñîîáùåíèÿ) ;;TEST_RK7SRV=127.0.0.1:3669 ;MessageBox MB_OK "Внизу Numcash=$Numcash" /* */ FinishTest1: FunctionEnd Форум читал - Ну страниц 50-80, наверное. Интересно. Не помню, кажется первую часть читал. Некоторые вещи просто сносят крышу и вызывают вопросы "как это работает??", но практически для меня неважны были всё равно. KAV, жалко ваших потраченных усилий, когда сам разобрался... Но спасибо. У вас способ короче намного, конечно. Пока в код досконально не всматривался. Но я так понимаю, что вы предлагаете перехватить управление кнопкой Next. На будущее возьму на заметку. Цитата:
|
|
------- Отправлено: 13:21, 25-10-2013 | #644 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата alexfinik:
Ну, а то, что сами разобрались - это тоже хорошо, голова работает логически, в программировании это очень важно Цитата alexfinik:
Цитата alexfinik:
Цитата alexfinik:
Если будут вопросы или проблемы с кодом, спрашивайте, не стесняйтесь |
||||
------- Отправлено: 13:39, 25-10-2013 | #645 |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать icq99999999, Вот с таким mod.ini всё работает
[Setting] (U)F=Example1 I(D)=Example2 (J)G=Example3 [NETKERN] ;возможные протоколы - nbhdup.dll, SPXSOC.dll Protocols=.\TCPSOC.dll [TCPSOC] LISTEN=0 [TCPDNS] Цитата K.A.V.:
|
|
------- Отправлено: 13:43, 25-10-2013 | #646 |
Пользователь Сообщения: 86
|
Профиль | Отправить PM | Цитировать Цитата K.A.V.:
то есть с начало копирую в переменную ReadINIStr $1 "$exeDIR\mod.ini" "Setting" "(I)D" потом MessageBox MB_OK "$1" как итог будет сообщение с текстом "$PROGRAMFILES\не известное значение пришедшее в голову пользователя" нужно сообщение с текстом: "C:\Program Files\не известное значение пришедшее в голову пользователя" |
|
Отправлено: 14:27, 25-10-2013 | #647 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата icq99999999:
|
|
------- Отправлено: 14:32, 25-10-2013 | #648 |
Пользователь Сообщения: 86
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
подхватываю значение ReadINIStr $0 "$1\mod.ini" "Setting" "(I)Vers" значение это путь установки который должен показаться в сообщении пользователю MessageBox MB_OK "$1" если в ini написано(притом может быть любая переменная nsis($SMPROGRAMS,$APPDATA итд) "$PROGRAMFILES\любой путь" то нужно определить эту переменную и (любой путь) и отправить в сообщении пользователю то есть например значение в ini $PROGRAMFILES\Portable то определить и отправить сообщение "C:\Program Files\Portable" если любая друга переменная пример $APPDATA\имя придуманное пользователем то определить и отправить сообщение "C:\Users\%username%\AppData\Roaming\имя придуманное пользователем" |
|
Последний раз редактировалось icq99999999, 25-10-2013 в 15:07. Отправлено: 15:00, 25-10-2013 | #649 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата icq99999999:
Делайте по принципу замены всех возможных переменных в прочитываемой строке, пример: И т.д. со всеми переменными |
|
------- Отправлено: 15:13, 25-10-2013 | #650 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 | dimadr | Наборы обновлений для Windows XP/2003/Windows 7 | 267 | 14-02-2020 08:25 | |
[архив].: NSIS - все вопросы :. | kotkovets | Автоматическая установка приложений | 3387 | 09-12-2012 11:56 | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 | jameszero | Наборы обновлений для Windows XP/2003/Windows 7 | 1491 | 22-07-2011 22:42 | |
Выбор|модернизация процессора .:[все вопросы]:. Часть I | Myxa | Выбор отдельных компонентов компьютера и конфигурации в целом | 1845 | 01-01-2011 19:18 | |
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|