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

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

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

Сообщение kotkovets »

Добрый день.

Изучал справку NSIS, но к сожалению не нашёл ответа на интересующий меня вопрос. Если вас не затруднит, пожалуйста, подскажите как можно организовать реальный прогресс установки на странице инсталляции? Просто у меня на данный момент получается так, что инсталляция реально не завершена и на половину, а прогресс-бар заполняется уже на 90%.

Поискав плагины на эту тему, обнаружил что имеется NSIS Real Plugin (
http://nsis.sourceforge.net/RealProgress_plug-in)
. Но моя криворукость не позволяет мне понять принцип работы данного плагина... Быть может в стандартных средствах NSIS есть более простой способ решения моей проблемы?

Спасибо!
Аватара пользователя
diakov

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

Сообщение diakov »

Цитата Sidril:



Изучал справку NSIS, но к сожалению не нашёл ответа на интересующий меня вопрос. Если вас не затруднит, пожалуйста, подскажите как можно организовать реальный прогресс установки на странице инсталляции? Просто у меня на данный момент получается так, что инсталляция реально не завершена и на половину, а прогресс-бар заполняется уже на 90%
[архив].: NSIS - все вопросы :.




Проблема в Вашем скрипте, может макросе, идет прерывание установки - ИМХО на 100% !

Ищите команды - abort, return - наверняка по неправильным условия срабатывают, а может и правильным...Изображение
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

kotkovets

Да нет, установка не прерывается. Дело в том что прогресс установки ориентируется на выполнение команд скрипта, т.е к примеру в скрипте 500 команд, если выполнено уже 450 строк, то прогресс-бар заполнится на 90%. Меня это не устраивает, мой инсталлятор построен на принципах запуска и ожидания конца работы внешних приложений, это всё прописано ближе к концу скрипта, поэтому и показывает прогресс 90%... Но работа внешних приложений длится приличное кол-во времени, а прогресс бар как за 5 секунд дошёл до 90% и потом уже не двигается. Установка продолжается - прогресс бар стоит.



Нужно как-то настраивать прогресс-бар... В справочнике по NSIS тоже увы нет примеров для этого. Как-то странно, вроде нормальный прогресс установки - элементарная вещь, а такие вот проблемы (
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

Цитата Sidril:



Установка продолжается - прогресс бар стоит
[архив].: NSIS - все вопросы :.




Прогрecc бар двигается только по внутренним командам, сообщениям - но не запускам внешних приложений.

попробуйте между перед каждым запуском приложения прописать:



Код:

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

DetailPrint "Установка название приложения"

А ну последней командой в последней секции



Код:

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

DetailPrint "готово"

Можно конечно получить последними командами дескриптор прогресса, найти верхний предел и установить
Аватара пользователя
Painkiller

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

Сообщение Painkiller »

kotkovets , подскажите пример скрипта для правильной установки приложение в $PROGRAMFILES64 и $PROGRAMFILES32 ???

Так не получается :



Код:

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

!include "x64.nsh"
.....
${If} ${RunningX64} 
InstallDir "$PROGRAMFILES64\${PRODUCT_NAME}" 
  ${Else}
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
 ${EndIf}

Тогда как ?
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

Painkiller, Все гораздо проще, чем вы думаете...

пишем вне секции, в начале скрипта, но после объявления константы ${PRODUCT_NAME}



Код:

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

InstallDir "$PROGRAMFILES64\${PRODUCT_NAME}"

Предопределенных констант несколько:

$PROGRAMFILES, $PROGRAMFILES32, $PROGRAMFILES64 — папка Program files. В 64разрядной системе констатация $PROGRAMFILES и $PROGRAMFILES32 представляют папку C:\Program Files (x86), а $PROGRAMFILES64 - C:\Program Files.

А значит 32разрядной системе $PROGRAMFILES64 — папка Program files. и Все!
Аватара пользователя
diakov

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

Сообщение diakov »

kotkovets, все таки не дает мне покоя IDM прочитав ети строки из idmtdi.inf и idmwfp.inf я понял что запускаются некие сервисы





Код:

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

Class		= NetService
ClassGuid	= {4d36e974-e325-11ce-bfc1-08002be10318}
CatalogFile	= idmtdi.cat
[DestinationDirs]
DriverFiles32	= 12	; %windir%\system32\drivers
DriverFiles64	= 12	; %windir%\system32\drivers
.............................
[IdmTdi.Service]
DisplayName	= %ServiceName%
Description	= %ServiceDesc%
ServiceBinary	= %12%\idmtdi.sys	; %windir%\system32\drivers\idmtdi.sys
ServiceType	= 1			; SERVICE_KERNEL_DRIVER
StartType	= 1			; SERVICE_SYSTEM_START
ErrorControl	= 0			; SERVICE_ERROR_IGNORE
;Dependencies	= Tcpip
;LoadOrderGroup	= PNP_TDI
;
; Copy Files
;
[DriverFiles32]
idmtdi.sys,idmtdi32.sys,,0x04		; COPYFLG_NOVERSIONCHECK
[DriverFiles64]
idmtdi.sys,idmtdi64.sys,,0x04		; COPYFLG_NOVERSIONCHECK
[SourceDisksNames]
1 = %SourceDisk%
[SourceDisksFiles]
idmtdi32.sys	= 1
idmtdi64.sys	= 1

и





Код:

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

[DefaultInstall.NTx86]
CopyFiles	= DriverFiles32
[DefaultInstall.NTamd64]
CopyFiles	= DriverFiles64
[DefaultInstall.NTx86.Services]
AddService	= %ServiceName%,0,IdmTdi.Service
[DefaultInstall.NTamd64.Services]
AddService	= %ServiceName%,0,IdmTdi.Service
....................
[IdmTdi.Service]
DisplayName	= %ServiceName%
Description	= %ServiceDesc%
ServiceBinary	= %12%\idmtdi.sys	; %windir%\system32\drivers\idmtdi.sys
ServiceType	= 1			; SERVICE_KERNEL_DRIVER
StartType	= 1			; SERVICE_SYSTEM_START
ErrorControl	= 0			; SERVICE_ERROR_IGNORE
;Dependencies	= Tcpip
;LoadOrderGroup	= PNP_TDI



в директории самой проги есть файлы idmtdi32.sys, idmtdi64.sys, idmwfp32.sys, idmwfp64.sys, idmtdi.cat, idmwfp.cat, тоесть при установке запускаются сетевый сервисы IdmTdi.Service и IdmWfp.Service как запустить такие сервисы средствами нсис? Спасибо!
Аватара пользователя
kotkovets

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

Сообщение kotkovets »

kotkovets, Подскажите пожалуйста возможно ли сделать такое:



Есть группа секций "Установить Winamp Agent"



В одной из секций опция "Запустить WinampAgent после установки"



Exec "$INSTDIR\winampa.exe"



Как можно реализовать, что бы при установке галочки на чебоксе действительно агент запускался после успешной установки?



Если прописать в функцию Function .onInstSuccess, то как реализовать условие значения в секции?
Аватара пользователя
diakov

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

Сообщение diakov »

Цитата wolkow70:



Есть группа секций "Установить Winamp Agent"

В одной из секций опция "Запустить WinampAgent после установки"

Exec "$INSTDIR\winampa.exe"

Как можно реализовать, что бы при установке галочки на чебоксе действительно агент запускался после успешной установки?

Если прописать в функцию Function .onInstSuccess, то как реализовать условие значения в секции?
[архив].: NSIS - все вопросы :.




xex...Изображение, проверяете, считываете состояние секции и наличие файлика собственно.



Код:

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

SectionGroup  /e "some stuff"
Section "install"
SectionEnd
Section "exec" SEC1
SectionEnd
SectionGroupEnd
Function .onInstSuccess
     ${If} ${SectionIsSelected} ${SEC1}
     ${AndIf} ${FileExists} "$INSTDIR\winampa.exe"
           Exec "$INSTDIR\winampa.exe"
     ${EndIf}
FunctionEnd


Цитата Sidril:



Нужно установить тотальный контроль за прогрессом...

Если вам не сложно, посмотрите что за зверь такой Real Progress plugin. Как его можно использовать в моём случае.
[архив].: NSIS - все вопросы :.




Да вроде бы элементарно...допустим у вас есть 5 блоков команд,

т.е после каждого блока команды двигаем на 20%

и так до 100%, т.е рассчитываете сколько у вас блоков однотипных команд и

сотню делите на кол-во блоков однотипных команд.


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




Код:

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

Section
  RealProgress::FileProgress /NOUNLOAD 0 
  Sleep 300    ;[блок команд]
  RealProgress::FileProgress /NOUNLOAD 20 ;установка прогресса на 20%.
  Sleep 300    ;[блок команд]
  RealProgress::FileProgress /NOUNLOAD 40
  Sleep 300    ;[блок команд]
  RealProgress::AddProgress /NOUNLOAD  60
  Sleep 300    ;[блок команд]
  RealProgress::AddProgress /NOUNLOAD  80
  Sleep 300    ;[блок команд]
  RealProgress::AddProgress /NOUNLOAD  100 ;установка прогресса на 100%.
  SectionEnd
## Unload the plugin so that it can be deleted!
Function .onGUIEnd
  RealProgress::Unload
FunctionEnd
Аватара пользователя
diakov

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

Сообщение diakov »

возможно начиная с какого-то момента полностью скрыть интерфейс установщика ?
Ответить

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