[архив].: NSIS - все вопросы :.
-
kotkovets
Re: [архив].: NSIS - все вопросы :.
BARS73, скрипт в студию, а то надоело уже догадываться, че вы вы там понаписали.
-
BARS73
Re: [архив].: NSIS - все вопросы :.
Цитата MaGoth:
Собственно вопрос, чем вам не угодил стандартный скин Нсис?
Это прошлый век, серые унылые окна.....
Собственно вопрос, чем вам не угодил стандартный скин Нсис?
[архив].: NSIS - все вопросы :.
Это прошлый век, серые унылые окна.....
-
kotkovets
Re: [архив].: NSIS - все вопросы :.
BARS73,
Строку !insertmacro MUI_UNPAGE_CONFIRM пишем
после строки !insertmacro MUI_PAGE_FINISH
Вы нарушаете порядок страничек!!!
Код:
У вас нет секции Uninstall для выполнения различных действий деинсталятора, вы не внимательно читали статьи из шапки темы, в конце скрипта:
Код:
У вас не определена константа ${APPNAME} - вам об этом предупреждает компилятор. В вашем случае здесь это излишне.
Код:
Строку !insertmacro MUI_UNPAGE_CONFIRM пишем
после строки !insertmacro MUI_PAGE_FINISH
Вы нарушаете порядок страничек!!!
Код:
Код: Выделить всё
--
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
--У вас нет секции Uninstall для выполнения различных действий деинсталятора, вы не внимательно читали статьи из шапки темы, в конце скрипта:
Код:
Код: Выделить всё
Section Uninstall
Delete "$DESKTOP\PipeDataVisualizer.lnk" ;удаляем ярлык на рабочем столе
RmDir /r "$SMPROGRAMS\MIDA15TOOL" ; удаляем папку в меню Пуск
RmDir /r "$INSTDIR" ;удаляем папку прграммы
SectionEndУ вас не определена константа ${APPNAME} - вам об этом предупреждает компилятор. В вашем случае здесь это излишне.
Код:
Код: Выделить всё
CreateShortCut "$SMPROGRAMS\MIDA15TOOL\Help.lnk" "$INSTDIR\Help.chm"-
BARS73
Re: [архив].: NSIS - все вопросы :.
MaGoth
Ты забыл о последовательности исполнения команд в NSIS, а это очень важно!
Если, к примеру перейдем по каким-то причинам к глобальной метке .NextP1, то исполнение кода начнется с этой метки,
дальше по скрипту, следовательно будет исполняться весь код начиная с метки .NextP1
Цитата MaGoth:
Кто что об этом думает ?!
А че тут думать, если есть общие файлы, группируем в одной секции
Код:
Далее в секции one, делаем определение файлов и в зависимости
нахождения файла: копируем группу файлов - все делается последовательно!
Код:
А вот аналог на логической конструкции, для меня так удобнее...
Код:
На примере логической конструкции выше работает принцип: если найден один из указанных файлов - копируем группу файлов, остальные группы будут игнорироваться в любом случае.
Если нужно копировать несколько групп файлов (при нахождении указанных файлов) можно делать так:
Код:
Ты забыл о последовательности исполнения команд в NSIS, а это очень важно!
Если, к примеру перейдем по каким-то причинам к глобальной метке .NextP1, то исполнение кода начнется с этой метки,
дальше по скрипту, следовательно будет исполняться весь код начиная с метки .NextP1
Цитата MaGoth:
Кто что об этом думает ?!
[архив].: NSIS - все вопросы :.
А че тут думать, если есть общие файлы, группируем в одной секции
Код:
Код: Выделить всё
Section "share"
;общие файлы для установки
;[...]
SectionEndДалее в секции one, делаем определение файлов и в зависимости
нахождения файла: копируем группу файлов - все делается последовательно!
Код:
Код: Выделить всё
Section "one"
IfFileExists "$G2ChPath\Speech_Wegelagerer_english.vdf" 0 NextA1
;файлы для установки
;[...]
NextA1:
IfFileExists "$G2ChPath\Data\Speech_Wegelagerer_deutsch.vdf" 0 NextB1
;файлы для установки
;[...]
NextB1:
;---
SectionEndА вот аналог на логической конструкции, для меня так удобнее...
Код:
Код: Выделить всё
Section "one"
${If} ${FileExists} "$G2ChPath\Speech_Wegelagerer_english.vdf"
;файлы для установки
;[...]
${ElseIf} ${FileExists} "$G2ChPath\Data\Speech_Wegelagerer_deutsch.vdf"
;файлы для установки
;[...]
${EndIf}
SectionEndНа примере логической конструкции выше работает принцип: если найден один из указанных файлов - копируем группу файлов, остальные группы будут игнорироваться в любом случае.
Если нужно копировать несколько групп файлов (при нахождении указанных файлов) можно делать так:
Код:
Код: Выделить всё
Section "one"
${If} ${FileExists} "$G2ChPath\Speech_Wegelagerer_english.vdf"
;файлы для установки
;[...]
${EndIf}
${If} ${FileExists} "$G2ChPath\Data\Speech_Wegelagerer_deutsch.vdf"
;файлы для установки
;[...]
${EndIf}
SectionEnd-
kotkovets
Re: [архив].: NSIS - все вопросы :.
BARS73, Значит не судьба....
Читайте до дыр статьи, больше мне вам посоветовать нечего...
Читайте до дыр статьи, больше мне вам посоветовать нечего...

-
K.A.V.
Re: [архив].: NSIS - все вопросы :.
Цитата MaGoth:
kotkovets, Нет, это не прокатывает перепробовал разные варианты, вот пример:
Я вообще не пишу скрипты по принципу "прокатывания" и тебе не советую.
Цитата MaGoth:
Причем, не зависимо от того как реализованы последние две секции, первый пример выше, а второй так:
А где последовательность действий, не вижу...Оно будет так работать!
секции всегда будут срабатывать, это очевидно! Во что за извращения с глобальными метками в функции с переходом в секции??????????
Пиши сразу код в вызываемой в функции, или под конструкцией.
И ты забыл очевидное, про непечатываемые символы(мессага их не показывает) - переходы на новую строку и т.д
По этому и логика твоя и не работала, а если бы логика работала и прыжок был
на метку .NextAk:, то секции one1 и one2 выполнялись в любом случае.
Пример на логике И-ИЛИ который прекрасно работает
Код:
kotkovets, Нет, это не прокатывает перепробовал разные варианты, вот пример:
[архив].: NSIS - все вопросы :.
Я вообще не пишу скрипты по принципу "прокатывания" и тебе не советую.
Цитата MaGoth:
Причем, не зависимо от того как реализованы последние две секции, первый пример выше, а второй так:
[архив].: NSIS - все вопросы :.
А где последовательность действий, не вижу...Оно будет так работать!
секции всегда будут срабатывать, это очевидно! Во что за извращения с глобальными метками в функции с переходом в секции??????????
Пиши сразу код в вызываемой в функции, или под конструкцией.
И ты забыл очевидное, про непечатываемые символы(мессага их не показывает) - переходы на новую строку и т.д
По этому и логика твоя и не работала, а если бы логика работала и прыжок был
на метку .NextAk:, то секции one1 и one2 выполнялись в любом случае.
Пример на логике И-ИЛИ который прекрасно работает
Код:
Код: Выделить всё
Section ""
ClearErrors
${LineRead} "C:\Files.txt" "1" $Lokalize
${Unless} ${Errors}
${If} `$Lokalize` == "1. Системные требования$\r$\n"
${OrIf} `$Lokalize` == "1. Системные требования$\n"
${OrIf} `$Lokalize` == "1. Системные требования"
Call LokA
${EndIf}
${If} `$Lokalize` == "1. Hardwarevoraussetzungen$\r$\n"
${OrIf} `$Lokalize` == "1. Hardwarevoraussetzungen$\n"
${OrIf} `$Lokalize` == "1. Hardwarevoraussetzungen"
Call LokB
${EndIf}
${Else}
MessageBox MB_ICONINFORMATION|MB_OK "Файл не найден!" IDOK
${EndUnless}
SectionEnd
Function LokA
MessageBox MB_ICONINFORMATION|MB_OK $Lokalize IDOK
FunctionEnd
Function LokB
MessageBox MB_ICONINFORMATION|MB_OK $Lokalize IDOK
FunctionEnd-
kotkovets
Re: [архив].: NSIS - все вопросы :.
не могу найти плагины для расаковки 7z и arc архивов, можете подсказать или отправить по пм ?
-
K.A.V.
Re: [архив].: NSIS - все вопросы :.
Поигрался с
CallGetUserSID
и обнаружил интересные положительные свойства этого макроса, ещё раз спасибо!