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

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

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

Сообщение MKN »

kotkovets,

А можно для создания вышеискомых переменных, определив системный диск в переменную, подставить эту переменную вместо C:\ ?
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

Цитата a--e:



так. если я все правильно понял, для каждого файла *.pat файл надо создавать отдельно?
[архив].: NSIS - все вопросы :.




совершенно верно, нужно для каждого файла, и файл .pat для конкретного файла свой

я скрипты писал и на 7000 строк и нормально, дело тренировки, можно для этих дел макрос сварганить и 15 раз вызывать.



Вот такой макрос для себя делал, пользуйтесь:



Код:

Код: Выделить всё

Page Instfiles
Name "Example"
OutFile "Example.exe"
ShowInstDetails show
!define VPatchFile "!insertmacro VPatchFile"
!macro VPatchFile PATCHDATA SOURCEFILE TEMPFILE VALUE
  Push $1
  Push $2
  Push $3
  Push $4
  Push `${SOURCEFILE}`
  Push `${TEMPFILE}`
  Pop $2
  Pop $3
  InitPluginsDir
  GetTempFileName `$1` $PLUGINSDIR
  File `/oname=$1` `${PATCHDATA}`
  vpatch::vpatchfile `$1` `$3` `$2`
  Pop $4
  StrCpy $4 $4 2
  StrCmp $4 "OK" +4
  SetErrors
  DetailPrint "Vpatch: error"
  Goto +6
  IntCmp ${VALUE} 1 0 +6 +6
  IfFileExists `$2` 0 +4
  Delete $3
  Rename /REBOOTOK `$3` `$2`
  Delete $1
  Pop $4
  Pop $3
  Pop $2
  Pop $1
!macroend
Section "Main"
  SetOutPath "$EXEDIR"
  File "D:\Nero_designer\Nero Burning ROM\nero.exe"
  ${VPatchFile} "Nero.pat" "$EXEDIR\Nero.exe" "Nero Express.exe" 1
SectionEnd

Nero.pat - должен лежать рядом со скриптом

Nero Express.exe - имя пропатченного файла, т.е сохраниться с указанным именем в одной директории оригинального файла

1- удалить оригинал, 0 - не удалять

Условие: имя оригинала и патченного файла не должны совпадать
Аватара пользователя
MKN

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

Сообщение MKN »

После выхода из инсталлятора (его закрытия) необходимо убить процесс и удалить его файл .

Процесс выгружаю так:



Код:

Код: Выделить всё

Function .onGUIEnd
nsProcess::_FindProcess /NOUNLOAD "APP.exe"
 Pop $R0
 StrCmp $R0 0 0 +3
 nsProcess::_KillProcess /NOUNLOAD "APP.exe"
 StrCmp $R0 603 0 +2
FunctionEnd

А вот как удалить ставший не нужным файл APP.exe (из $temp) - не могу придумать. Инсталлятор то уже закрыт...

Что можно сделать ?
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

a--e,

скачайте на 92 стр. темы справочник, там есть ответы на ваши вопросы..



File /oname=$PLUGINSDIR\path.pat "Effects.vfs.pat"

Означает взять Effects.vfs.pat и скопировать в папку $PLUGINSDIR с именем path.pat

далее ясно почему ошибка...

Delete "c:\Temp\{app}\data\NEW_Effects.vfs" и никогда не применяйте абсолютные пути в скриптах, кроме забора файлов в инсталлятор.

Delete "$PLUGINSDIR\path.pat"

Почитайте в справочнике про переменные окружения


читать дальше »




Код:

Код: Выделить всё

OutFile "test.exe"
Section
  SetOutPath "c:\"
  File "c:\Temp\{app}\data\Effects.vfs"
  InitPluginsDir
  File /oname=$PLUGINSDIR\Effects.vfs.pat "Effects.vfs.pat"
  vpatch::vpatchfile "$PLUGINSDIR\Effects.vfs.pat" "c:\Effects.vfs" "c:\path_Effects.vfs"
  Delete "c:\Effects.vfs"
  Rename "c:\path_Effects.vfs" "c:\Effects.vfs"
SectionEnd
Аватара пользователя
Krinkels

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

Сообщение Krinkels »

Друзья, сделал плагин для NSIS с помощю которого можно комфортно использовать unarc.dll в инсталяторе NSIS. В архиве так же присутствует скрипт с примером. nsisarc.dll и unarc.dll нужно закинуть в папку NSIS\Plugins. Это первая версия, по этому прошу не сильно пинать Изображение

Скрин


Скачать
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

Krinkels A а мануальчик, как использовать то?



Код:

Код: Выделить всё

nsisarc::ArcExtract "1.arc" "tmp" "" "" ""

И что, можно подставить в пустые кавычки ???
Аватара пользователя
Krinkels

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

Сообщение Krinkels »

Упс, пардон.

nsisarc::ArcExtract

"1.arc" - Архив. Когда у себя тестил он лежал рядом с инсталятором

"tmp" - Папка куда нужно распаковать архив

"" - Вроде для пароля

"" - Без понятия для чего, нужно у автора спрашивать

"" - Без понятия для чего, нужно у автора спрашивать
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

Krinkels,

Я думал вы автор, беспарольные архивы распаковывает, как заявлено, а вот с паролем никак!

Уточните у автора параметры все таки!
Аватара пользователя
Krinkels

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

Сообщение Krinkels »

Цитата racner:



То есть дело в том, какая кодировка настроена для вывода текста в окне лога установки через команду nsExec::ExecToLog, как её переключить подскажите пожалуйста ?
[архив].: NSIS - все вопросы :.




Проблема в самом плагине nsExec - не поддерживает кириллицу, он же строки такие передает в ListBox (окно деталей) установщика. буржуи писали... Изображение
Аватара пользователя
Krinkels

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

Сообщение Krinkels »

Подскажите пожалуйста, как решить такую задачу :

Необходимо дождаться появления(создания) file.txt в $TEMP и как только он появится (когда именно - неизвестно), закрыть инсталлятор.
Ответить

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