PDA

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


Страниц : 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

Serg866
13-01-2017, 18:14
По вкусу: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx »
Ну то что WS_VSCROLL надо добавить я понял. А как отключить редактирование текста внутри окна и по возможности убрать мерцающий курсор?

Begin2Fly
13-01-2017, 18:22
как отключить редактирование текста внутри окна »
SendMessage $hwnd ${EM_SETREADONLY} 1 0

Serg866
14-01-2017, 14:13
Можно ли прописать самоудаление инсталлятора после окончания установки?

den.filipchenko0000
15-01-2017, 04:58
Всем привет! Понадобилось перепаковать одну программу. С nsis до этого был не очень знаком. Поэтому возникла проблема. В секции install пишу:
SetOutPath $PLUGINSDIR
SetOverwrite on
File logo.wav
И так далее...
При попытке создать инсталятор makensis, делаю через командную строку, выбивает, что такой файл не найден. Если пишу полный путь, к примеру:
File D:\myprogs\$PLUGINSDIR\logo.wav
Все работает, файл находится.
Вручную прописывать путь к каждому файлу не вариант, там тысячи файлов, ещё и с подпапками. Рекурсивно все файлы, тоже не подойдет. Видел, что так должно работать, без указания полного пути всмысле, но почему у меня не работает? Файл nsi лежит рядом с $PLUGINSDIR.

Begin2Fly
15-01-2017, 05:24
File D:\myprogs\$PLUGINSDIR\logo.wav »
Естественно, файл не найден. Компилятор воспринимает это примерно как D:\myprogs\C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\AppData\Local\Temp\nsgE66E.tmp\logo.wav
Начните с чтения справочника, потом вопросы задавайте.

den.filipchenko0000
15-01-2017, 07:47
Begin2Fly Begin2Fly вне форума
Справочник я читал, а вот вы мое сообщение, видимо, по-диагонали... Пишу же:
Если написать:
File logo.wav
То файл не находит.
А если написать:
File D:\myprogs\$PLUGINSDIR\logo.wav
То все находит. Вот и вопрос, неужели у каждого файла нужно полный путь прописывать, почему с кратким не находит?

K.A.V.
15-01-2017, 12:00
Файл nsi лежит рядом с $PLUGINSDIR. »
File D:\myprogs\$PLUGINSDIR\logo.wav »
никак не сходится с вашим утверждением
Справочник я читал »
Т.к. в принципе, при использовании переменных инсталлятора (ну, по-крайней мере этой вашей конкретной) в пути к файлам, которые нужно упаковать - вы должны получить ошибку компиляции, т.к. папка $PLUGINSDIR создаётся при запуске вашего уже готового инсталлятора, а не при начале процессе компиляции проекта

Компилятор воспринимает это примерно как D:\myprogs\C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\AppData\Local\Temp\nsgE66E.tmp\logo.wav »
Не воспримет он это так, этой переменной не существует в момент компиляции, если бы переменная указывалась как папка назначения для файла - другое дело, но уж точно не когда указывается путь к файлу на ЖД, который нужно упаковать...

Serg866
15-01-2017, 16:37
Можно ли прописать самоудаление инсталлятора после окончания установки?

MKN
17-01-2017, 11:23
самоудаление инсталлятора после окончания установки »
пропиши удаление инсталлятора (с ключом /REBOOTOK), в функции .onInstSuccess (см. Справочник)
Также можно использовать http://nsis.sourceforge.net/SelfDel_plug-in

Flix
17-01-2017, 22:24
Serg866, подобный вопрос уже рассматривался на страницах этого форума, нужно всего лишь воспользоваться поиском. Например, вот: ссылка (http://forum.oszone.net/post-2377345-1241.html).

Kopejkin
22-01-2017, 21:59
Подскажите, пожалуйста, где грабли?
Пытаюсь на Windows 10(x64) импортировать данные реестра из файла в HKEY_LOCAL_MACHINE\SOFTWARE\Licenses.
Вместо этого импорт выполняется в HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Licenses.

Name "RegistryTest"
OutFile "RegistryTest.exe"

!include "Registry.nsh"
!include "x64.nsh"

Page components
Page instfiles


Section "Save to the file"
${If} ${RunningX64}
SetRegView 64
${registry::SaveKey} "HKEY_LOCAL_MACHINE\SOFTWARE\Licenses222" "$EXEDIR\save222.reg" "/U=1 /G=1" $0
${registry::Unload}
StrCmp $0 0 0 +2
MessageBox MB_OK "файл успешно создан" IDOK
StrCmp $0 -1 0 +2
MessageBox MB_OK "ошибка" IDOK
${EndIf}
SectionEnd

Section "Restore from the file"
${If} ${RunningX64}
SetRegView 64
${registry::RestoreKey} "$EXEDIR\tree.reg" $R0
${registry::Unload}
StrCmp $R0 0 0 +2
MessageBox MB_OK "файл успешно импортирован" IDOK
StrCmp $R0 -1 0 +2
MessageBox MB_OK "ошибка" IDOK
${EndIf}
SectionEnd

P.S. ExecWait '$WINDIR\regedit.exe /s "$EXEDIR\tree.reg"' - это работает аналогично импорту в сценарии...

Flix
24-01-2017, 17:43
Подскажите, пожалуйста, где грабли? »
Команда SetRegView имеет влияние только на внутренние команды компилятора NSIS, а именно на команды вида ReadReg... и WriteReg.... В вашем сценарии для работы с данными реестра используется внешний инструмент - плагин, которому абсолютно по барабану команда SetRegView. Он (плагин) про неё просто ничего не знает, тем более он использует стандартный инструмент Windows по работе с реестром - regedit.exe. Аналогичная картина и с использованием вами инструмента regedit.exe напрямую. По умолчанию весь импорт ключей реестра из внешних файлов выполняется в WOW6432Node.

Вам нужно или переделать сценарий так, чтобы получить необходимые строки для импорта в реестр и потом задействовать стандартные команды NSIS ReadReg... и WriteReg.... Или воспользоваться консольной программой для доступа к реестру reg.exe с параметрами /reg:32 или /reg:64, которые определяют область видимости реестра. Все параметры reg.exe описаны здесь (http://www.computerhope.com/reg.htm) или можно выяснить в командной строке (reg /?). В вашем случае команда сценария будет примерно такой:

ExecWait '$SYSDIR\reg.exe import "$EXEDIR\tree.reg" /reg:64'

Не уверен, но параметра 'silent' или подавления запроса на импорт данных в реестр программа reg.exe не имеет. Ну и, конечно, не забываем по права Администратора.

Flix
29-01-2017, 16:57
Возможно кому будет интересна альтернативная разработка NSIS без ограничения 2Гб.

Автор: jasonfriday13. Проект: https://sourceforge.net/projects/nsisbi/
Проект создан базе NSIS v3.01. Системные требования: ОС Windows 64-bit.

От автора (перевод):
Эта модификация NSISBI позволяет обойти текущее ограничение 2Гб для файла установки. В этой версии добавлена поддержка использования раздельных файлов для данных инсталляции, что теоретически позволяет получить максимальный размер инсталлятора до 8Эб (эксабайт - 10 в степени 18). Одиночные файлы по прежнему ограничены пределом 2Гб.

Компилятор NSIS (makensis) разработан для работы на ПК с 64-бит ОС, поскольку только на этих системах возможно использование функции для создания инсталляторов с рамерами более 2Гб.

По умолчанию работа модифицированного компилятора аналогична работе классического NSIS и ничем от него не отличается. Это все тот же знакомый вам NSIS. Чтобы активировать функцию преодоления ограничения на 2Гб, используйте в сценарии команду "SetExOutFile" с параметрами "auto | off | on". Параметр "off" отключает функцию и компилятор NSIS работает в стандартном режиме (с ограничением в 2Гб). Параметр "on" включает функцию и компилятор разбивает файл установки на исполняемую часть и архивную, с данными установки. Параметр "auto" позволяет компилятору автоматически принять решение о разделении файла установки. Если размер инсталлятора превысит размер 4Гб, то он переключится на создание внешнего файла с данными. Обратите внимание, если функция активна ("SetExOutFile" с параметром "auto" или "on"), то сжатие данных (команда "SetCompressor") с флагом /SOLID не поддерживается. Это просто не представляется возможным в виду особенностей данного алгоритма.

Также существует команда "Target", не отраженная в документации NSIS. Эта команда позволяет выбрать целевую архитектуру, для которой предназначен создаваемый пакет установки. Допустимые параметры: x86-ansi, x86-unicode, amd64-unicode.

Сборка NSISBI выполнена 16.01.2017 на Windows 10 c использованием Visual Studio 2008 и Windows 7 SDK. По умолчанию компилятор создает 32-bit ANSI инсталляторы. Но вы можете настроить 32-bit Unicode или 64 bit Unicode. В последней версии я допустил ошибку и по умолчанию установил amd64-unicode, теперь исправил на x86-ansi. Также добавил файл clean.bat для очистки каталогов с компиляциями x86 и amd64.

IlyaNSK
01-02-2017, 10:25
Уважаемые форумчане, помогите понять работу с dialog designer
создаю диалог, получаю файлы, инклюдю, помещаю ссылку
!insertmacro MUI_PAGE_INSTFILES
Page custom fnc_getIP_Show ;его нужно запускать после установки файлов
на форме одно тестовое поле $hCtl_getIP_TextBox1.
В какой момент оно получает значение? В какую часть (section) установщика помещать обработку этого значения?

-разобрался, поместил обработчик в функцию вызова диалога в конец после метода ::Show

однако, в поле $hCtl_getIP_TextBox1 вбил "ХХХХХХХХХХХ" а в переменной оказалось 1507670

хм.. что делать?

MKN
01-02-2017, 12:22
что делать? »
Поставь задачу более внятно. (что и каким образом предполагается получить в итоге).

ps dialog designer - задумка хорошая, но практическая реализация бестолковая и незавершённая. После него скрипт приходится , как говориться, дорабатывать напильником, т.е. много чего править вручную. Быстрее сделать с нуля...

Flosik
07-02-2017, 17:46
Здравствуйте.

Подскажите а с Windows 10 есть какой-то способ данный установщик подружить? Нигде не смог этой информации найди.
Проблема заключается в том, что при запуске установщика на Windows 10 его блокирует SmartScreen фильтр. Или же его надо как-то подписывать?

Kopejkin
07-02-2017, 22:40
...его блокирует SmartScreen »
Может вам сначала просто потренироваться пользоваться системой?
Там, в окошке, есть еще дополнительная кнопка...
http://i5.imageban.ru/out/2017/01/27/2723871996197d4f276fbfc9431017bf.png

Flosik
08-02-2017, 12:25
Может вам сначала просто потренироваться пользоваться системой?
Там, в окошке, есть еще дополнительная кнопка... »

Да что Вы говорите!? Целая кнопка!? Вот это да...
Я конечно Вас поздравляю с попыткой сумничать. Но нет, спасибо.

Вопрос заключался не в том, как разрешить запуск данного установщика. А именно в способах сделать установщик валидным для фильтра W8-W10 без фин. затрат на подписание, либо с максимально бюджетными затратами.

MKN
08-02-2017, 15:23
сделать установщик валидным для фильтра W8-W10 »
Паскудство со стороны SmartScreen затрагивает многие исполняемые файлы, а не только NSIS-exe. Пол интернета обсуждает эту проблему.
Насколько успешно решение, поищи сам. Навскидку:
http://forums.winamp.com/showthread.php?t=378452
http://stackoverflow.com/questions/12311203/how-to-pass-the-smart-screen-on-win8-when-install-a-signed-application
http://www.codeproject.com/Questions/555248/Willplussigningplusanplusexecutablepluspreventplus

Kopejkin
08-02-2017, 16:45
Вопрос заключался не в том... »
А мне-то откуда было это знать? Поэтому и ответ был дан в соответствии с содержанием. Формулируйте вопросы яснее :wink:




© OSzone.net 2001-2012