Показать полную графическую версию : [архив].: NSIS - все вопросы :.
kotkovets
02-03-2012, 22:55
Надо просто вставить PNG-изображение (справа вверху) »
на всех страничках установщика, в начале скрипта, вне секции и функции:
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_RIGHT
!define MUI_HEADERIMAGE_BITMAP "Моя картинка.bmp"
для чисто кастомной странички можно повесить bmp, jpg и gif
Естественно через nsDialogs (определить координаты CreateBitmap), если в "самом верху",
то через nsDialogs::Create 1044
http://nsis.sourceforge.net/NsDialogs_SetImageOLE
Как рисовать и т.д в шапке - справочник по NSIS
Begin2Fly
02-03-2012, 23:28
kotkovets, та это всё я уже перепробовал. Стандартные средства, к сожалению, не позволяют вставить PNG с прозрачностью. А нужна именно прозрачность, для того, чтобы пользователи с нестандартными темами оформления не видели монотонный квадрат вокруг изображения.
kotkovets
02-03-2012, 23:56
Begin2Fly, bmp и фотошоп, или др. программы
позволяющие задавать "прозрачный "(прозрачный цвет, Windows - как его воспринимает) слой картинке,
не раз так сам проделывал...только bmp
Begin2Fly
03-03-2012, 00:07
kotkovets, благодарю, уже этим и воспользовался, хотя эдак с полгода назад ничего не получилось. Спасибо за отзывчивость!
kotkovets.
Если позволите, ещё пара простых для Вас вопросов:
Про проверку наличия ключа в реестре при запуске инсталлера я понял. Подскажите пожалуйста как прописать проверку определённого запущенного процесса на компе у клиента. Т.е также при запуске инсталлера проверяется запущен ли процесс, если запущен - то нельзя продолжить установку.
И ещё такая тема заитересовала меня... Хотелось бы, чтобы готовый дистрибутив инсталлятора ничем нельзя было распаковать. Всегда думал, что инсталляторы созданные в NSIS ни один архиватор распознать не может. Отчасти это правда, судя по информации в титульном сообщении. Но там также есть и оговорка:
....Есть, однако, внешние инструментальные средства, которые позволяют это сделать. 7-zip поддерживает частичную распаковку NSIS инсталляторов с алгоритмом сжатия lzma или bzip. Так же существует мульти-архивный плагин для TotalCommander.
Небольшая заметка для разработчиков: используйте DCryptDll, если хотите скрыть некоторые файлы в вашей инсталляции. »
Какие нужно выставить параметры сжатия, чтобы и могучий 7-zip оказался полностью бессилен в распаковке инсталлятора. И если не трудно, не могли бы подробнее рассказать о то что такое DCryptDll и как его использовать для защиты файлов.
Большое спасибо.
kotkovets
04-03-2012, 15:31
Подскажите пожалуйста как прописать проверку определённого запущенного процесса на компе у клиента. Т.е также при запуске инсталлера проверяется запущен ли процесс, если запущен - то нельзя продолжить установку »
Читайте в справочнике в шапке(примеры кодов):
1. » Предотвращение множественности запуска.
2. » Работа с процессами с помощью NSIS (Process).
Какие нужно выставить параметры сжатия, чтобы и могучий 7-zip оказался полностью бессилен в распаковке инсталлятора »
никакие, разрабы прикрыли лавочку начиная, где то с 2.00 ???, пощите в сети: nsis_hide.exe
wolkow70
05-03-2012, 10:54
kotkovets, подскажите пожалуйста как все-таки лучше установить службу:
В дистрибутиве есть файл DfSdkS.exe (служба дефрагментации дисков ashampoo)
В принципе запускается и устанавливается такой коммандой DfSdkS.exe -install
Запускается с консольным окном. Потом приходится запускать DfSdkS.exe -stats для определения списка дисков и записи в реестр, и тоже с консольным окном.
Родной Inno инсталлятор как-то запускает все сразу и без окон. Причем родительским процессом является service.exe, а если запускать как я делаю, то родитель - инсталлятор.
kotkovets, такой вопрос вот есть в теле скрипта коды
Section "-Распаковка фул"
${If} $Radio3 == 1
SetOutPath "$INSTDIR"
File /r "D:\ystanovka\XnView\portfull\*.*"
${EndIf}
SectionEnd
Section "-Распаковка стандарт"
${If} $Radio4 == 1
SetOutPath "$INSTDIR"
File /r "D:\ystanovka\XnView\portstandart\*.*"
${EndIf}
SectionEnd
Section "-Распаковка стандарт"
${If} $Radio5 == 1
SetOutPath "$INSTDIR"
File /r "D:\ystanovka\XnView\portsmall\*.*"
${EndIf}
SectionEnd
При отметке Radio5 ничего не происходит, сразу страница завершения...раньше все работало а теперь нет, все остальные радиобутоны работают...мож глюк или че....не пойму
kotkovets
05-03-2012, 14:07
wolkow70, смотрите скрипт Inno и ключи запуска приложения.
устанавливается такой коммандой DfSdkS.exe -install
Запускается с консольным окном. Потом приходится запускать DfSdkS.exe -stats »
Запускается с консольным окном »
nsexec - для скрытного запуска консоли, или читайте
» Работа с процессами с помощью NSIS (Process).
При отметке Radio5 ничего не происходит, сразу страница завершения... »
Вот и смотрите события в своем скрипте по дескриптору контрола ,
кстати вера, что ли не дает, проверить состояние $Radio5
например отдельной, самой первой секцией, или при закрытии кастомной странички,
после определения статусов контрола:
Section
MessageBox MB_OK "$$Radio5 = $Radio5" IDOK
SectionEnd
;дальше ниже по скрипту другие секции
нашел в PageDestroy случайно стер n тоесть было $RadioButto6 $Radio6
однако вчера думал лоб розшибу :lol:
wolkow70
05-03-2012, 15:25
wolkow70, смотрите скрипт Inno и ключи запуска приложения. »
Нет их там. Вообще из скрипта не понятно как устанавливается служба.
В Process monitor вот, что видно:
Путь: E:\WINDOWS\system32\services.exe
Командная строка: E:\WINDOWS\system32\services.exe
Класс события: Процесс
Операция: Process Create
Результат: SUCCESS
Путь: E:\Program Files\Ashampoo\Ashampoo WinOptimizer 9\DfSdkS.exe
TID: 1364
Длительность: 0.0000000
PID: 3928
Command line: "E:\Program Files\Ashampoo\Ashampoo WinOptimizer 9\DfSdkS.exe"
пока сделал так:
nsExec::Exec '"$INSTDIR\DfSdkS.exe" -install'
Ну это только установка службы, а последующего автозапуска не происходит.
wolkow70, а если попробовать с помощью NsSCM plug-in
; Service (auto starting)
nsSCM::Install /NOUNLOAD "XXX" "XXX service" 16 2 \
"$PROGRAMFILES\${PRJ_NAME}\XXX.exe" "" "" "" ""
не получится?
wolkow70
05-03-2012, 16:29
не получится? »
То же чего то не работает.
wolkow70
06-03-2012, 08:59
Сделал так:
nsExec::ExecToLog '"$INSTDIR\DfSdkS.exe" -install'
Pop $0
nsSCM::Start /NOUNLOAD "DfSdkS"
Pop $0
wolkow70
06-03-2012, 11:25
Товарищи, реально ли для деинсталлятора сделать такие же комманды интефейса:
!define MUI_WELCOMEPAGE_TITLE "Добро пожаловать! Вас приветствует мастер установки MyApp"
!define MUI_FINISHPAGE_NOAUTOCLOSE ????
Всяко пробовал. не получается...
Задача из скрипта nsis запустить другую инсталяцию в пассивном режиме и прописать путь установки. Реально ли это вообще.
Когда устанавливал подобным образом .NET Framework Писал так:
ExecWait "$INSTDIR\vcredist_x64.exe /passive"
Но там то путь прописывать не нужно было.
Рылся в инете в поисках параметров командной строки, так ничего и не нашел. Подскажите, если кто сталкивался.
kotkovets
06-03-2012, 14:19
wolkow70, от чего уж, реально...
!define MUI_UNTEXT_WELCOME_INFO_TITLE "????"
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
Рылся в инете в поисках параметров командной строки, так ничего и не нашел. Подскажите, если кто сталкивался. »
Вот одно понять не могу, причем здесь nsis, если вопрос касается установщика windows (пакетов msi)
wolkow70
06-03-2012, 14:45
!define MUI_UNTEXT_WELCOME_INFO_TITLE "????"
ЭТО РАБОТАЕТ!
К сожалению, !define MUI_UNFINISHPAGE_NOAUTOCLOSE - это нет.
Может, потому, что у меня так:
!define MUI_UNTEXT_WELCOME_INFO_TITLE "Добро пожаловать! Вас приветствует мастер удаления MyApp"
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_COMPONENTS
!insertmacro MUI_UNPAGE_INSTFILES
UninstPage custom un.INSTFILES_LEAVE
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
!insertmacro MUI_UNPAGE_FINISH
Вот одно понять не могу, причем здесь nsis, если вопрос касается установщика windows (пакетов msi) »
Пишу инсталяцию на nsis. В дополнение к основному продукту нужно еще поставить пару отдельных программ. Я их упаковываю в свой инсталятор. И прописываю на исполнение ExecWait.
Вроде объяснил понятно. Теперь, как их вызвать в пассивном режиме и прописать путь для установки.
Добрый день.
Подскажите пожалуйста следующее...
Имеем:
; Ini file generated by the HM NIS Edit IO designer.
[Settings]
NumFields=10
[Field 1]
Type=RadioButton
Text=Полная установка (рекомендуется)
Left=6
Right=143
Top=0
Bottom=11
[Field 2]
Type=Label
Text=Установить Программу включая все компоненты
Left=20
Right=214
Top=10
Bottom=18
[Field 3]
Type=RadioButton
Text=Настройка параметров
Left=6
Right=105
Top=29
Bottom=39
[Field 4]
Type=Checkbox
Text=Компонент 1
Left=20
Right=119
Top=44
Bottom=54
[Field 5]
Type=Checkbox
Text=Компонент 2 (большое и длинное описание, которое не помещается в одну строку)
Left=20
Right=207
Top=60
Bottom=77
[Field 6]
Type=Label
Text=Еще какой-то текст
Left=6
Right=135
Top=99
Bottom=107
[Field 7]
Type=Checkbox
Text=Компонент 3
Left=20
Right=216
Top=84
Bottom=95
[Field 8]
Type=Label
Text=Устанавливая и используя данное ПО, вы соглашаетесь
Left=6
Right=204
Top=115
Bottom=123
[Field 9]
Type=Link
Text=Лицензионного соглашения
Left=50
Right=145
Top=124
Bottom=132
[Field 10]
Type=Label
Text=с условиями
Left=6
Right=50
Top=124
Bottom=132
и
!include "MUI.nsh"
SetCompress off
!insertmacro MUI_PAGE_WELCOME
Page custom fnCustomInit fnCustomDestroy
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"
Name "Программа"
OutFile "proga.exe"
ShowInstDetails show
Function fnCustomInit
!insertmacro INSTALLOPTIONS_EXTRACT "menu.ini"
!insertmacro MUI_HEADER_TEXT "Установка программы" "Выберите желаемый способ установки"
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "menu.ini"
FunctionEnd
Function fnCustomDestroy
FunctionEnd
Section
DetailPrint "Хелло.."
SetAutoClose false
SectionEnd
Подскажите как сделать чтобы пока выбран первый RadioButton, активным остается только второй RadioButton, Checkbox все выбраны и неактивны. Если выбрать второй RadioButton, Checkbox становятся активными и все выбраны, первый RadioButton становится неактивным.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC