[архив].: NSIS - все вопросы :.

Ответить
 • Просмотры: 14
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

BARS73, скрипт в студию, а то надоело уже догадываться, че вы вы там понаписали.
Аватара пользователя
BARS73

Re: [архив].: NSIS - все вопросы :.

Сообщение BARS73 »

Цитата MaGoth:



Собственно вопрос, чем вам не угодил стандартный скин Нсис?
[архив].: NSIS - все вопросы :.




Это прошлый век, серые унылые окна.....
Аватара пользователя
kotkovets

Re: [архив].: NSIS - все вопросы :.

Сообщение kotkovets »

BARS73,

Строку !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 - все вопросы :.

Сообщение BARS73 »

MaGoth

Ты забыл о последовательности исполнения команд в 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 - все вопросы :.

Сообщение kotkovets »

BARS73, Значит не судьба.... Изображение

Читайте до дыр статьи, больше мне вам посоветовать нечего... Изображение
Аватара пользователя
K.A.V.

Re: [архив].: NSIS - все вопросы :.

Сообщение K.A.V. »

Цитата MaGoth:



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 - все вопросы :.

Сообщение kotkovets »

не могу найти плагины для расаковки 7z и arc архивов, можете подсказать или отправить по пм ?
Аватара пользователя
BARS73

Re: [архив].: NSIS - все вопросы :.

Сообщение BARS73 »

vahe-91,

для аrc во вложении
Аватара пользователя
K.A.V.

Re: [архив].: NSIS - все вопросы :.

Сообщение K.A.V. »

Поигрался с
CallGetUserSID
и обнаружил интересные положительные свойства этого макроса, ещё раз спасибо!
Ответить

Вернуться в «Автоматическая установка приложений»