PDA

Показать полную графическую версию : [архив].: NSIS - все вопросы :.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 [119] 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

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, благодарю, уже этим и воспользовался, хотя эдак с полгода назад ничего не получилось. Спасибо за отзывчивость!

Sidril
04-03-2012, 00:46
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, а если запускать как я делаю, то родитель - инсталлятор.

diakov
05-03-2012, 13:59
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

;дальше ниже по скрипту другие секции

diakov
05-03-2012, 14:41
нашел в 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'

Ну это только установка службы, а последующего автозапуска не происходит.

diakov
05-03-2012, 16:13
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 ????

Всяко пробовал. не получается...

Paval
06-03-2012, 13:01
Задача из скрипта 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

Paval
06-03-2012, 15:15
Вот одно понять не могу, причем здесь nsis, если вопрос касается установщика windows (пакетов msi) »
Пишу инсталяцию на nsis. В дополнение к основному продукту нужно еще поставить пару отдельных программ. Я их упаковываю в свой инсталятор. И прописываю на исполнение ExecWait.

Вроде объяснил понятно. Теперь, как их вызвать в пассивном режиме и прописать путь для установки.

Gnast
06-03-2012, 15:32
Добрый день.

Подскажите пожалуйста следующее...
Имеем:
; 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