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
14-04-2012, 22:28
Обязательно программу распаковывать в TEMP? »
нет! куда распаковать команда - SetOutPath
КОНСТАНТА pkgdir, точнее ее значение говорит скрипту во время компиляции, откуда файлы(с какой папки) будем брать.
SetOutPath "D:\opera"
File"${pkgdir}\opera\1049.MST"
File"${pkgdir}\opera\opera installer.msi"

bugmenotagain
14-04-2012, 22:45
kotkovets, а можно сразу из setup.exe файлы брать? подскажите скрипт как должен выглядеть.

kotkovets
14-04-2012, 23:33
bugmenotagain, справка в шапке, глупые вопросы при внимательном чтении букафф резко отпадут.

bugmenotagain
14-04-2012, 23:44
kotkovets, процитируйте, пожалуйста, это место.

K.A.V.
14-04-2012, 23:54
bugmenotagain, пожалуйста, имейте совесть :read:
Скачайте справочник по NSIS на русском языке, ссылка в шапке темы

Народ, вы что-то совсем наглеете... :o

wolkow70
15-04-2012, 05:38
bugmenotagain,

Распаковывваете оригинальный дистрибутив в 7z FM или в Universal Extractor.

SetOutPath "$INSTDIR"
;
File "${pkgdir}\Opera11\c3nform.vxml"
File "${pkgdir}\Opera11\encoding.bin"
File "${pkgdir}\Opera11\files.sig"
File "${pkgdir}\Opera11\files_list"
File "${pkgdir}\Opera11\files_old.sig"
File "${pkgdir}\Opera11\html5_entity_init.dat"
File "${pkgdir}\Opera11\html40_entities.dtd"
File "${pkgdir}\Opera11\lngcode.txt"
File "${pkgdir}\Opera11\mathml.dtd"
File "${pkgdir}\Opera11\opera.dll"
File "${pkgdir}\Opera11\opera.exe"
File "${pkgdir}\Opera11\operaprefs_default.ini"
File "${pkgdir}\Opera11\pubsuffix.xml"

File "${pkgdir}\Opera11\opera_install_log.xml"
;
File /r "${pkgdir}\Opera11\defaults"
File /r "${pkgdir}\Opera11\extra"
File /r "${pkgdir}\Opera11\gstreamer"
File /r "${pkgdir}\Opera11\locale"
File /r "${pkgdir}\Opera11\program"
File /r "${pkgdir}\Opera11\region"
File /r "${pkgdir}\Opera11\skin"
File /r "${pkgdir}\Opera11\styles"
File /r "${pkgdir}\Opera11\ui"
File /r "${pkgdir}\Opera11\unite"

Файл Opera11\opera_install_log.xml берется отдельно уже из установленного дистрибутива и правится.
Без файла opera_install_log.xml Opera не устанавливается на Windows 7 как браузер по умолчанию и в расширенных настройках не работает вкладка Программы\Настройки.
С пустым opera_install_log.xml Opera не устанавливается на Windows 7 как браузер по умолчанию, но при этом вкладка Программы\Настройки работает
Если в install_log.xml пропарсить пути установки на реально используемые в "$INSTDIR" Opera устанавливается на Windows 7 как браузер по умолчанию, и вкладка Программы\Настройки работает.

wolkow70
15-04-2012, 08:09
kotkovets,
Вот так сделал, работает:

Function EnumReg
StrCpy $5 "$1" "" -10
${If} $5 == "extensions"
${AndIf} $2 == "Plugins"
${AndIfNot} $1 == "SOFTWARE\Mozilla\Thunderbird\Extensions"
;
DetailPrint "Раздел реестра: $1"
DetailPrint "Имя параметра: $2"
DetailPrint "Тип параметра: $4"
DetailPrint "Значение параметра: $3"
StrCpy "$5" "$3"
StrCpy $0 StopRegFind
${EndIf}
FunctionEnd

Section "Интеграция в браузер Firefox" Firefox
${RegFind} "${HKLM}\SOFTWARE\Mozilla" "/T=REG_SZ /V=1" EnumReg
CopyFiles /silent "$INSTDIR\npdm.dll" "$5"
SectionEnd

MKN
15-04-2012, 12:51
Подскажите, каким образом в стандартных и кастомных страницах, запретить действие кнопок "Next" и "Install".
Не скрыть эти кнопки , а именно запретить, при их нажатии (и, что важнее - клике на "Enter") , дальнейшее действие.

K.A.V.
15-04-2012, 14:48
Не скрыть эти кнопки , а именно запретить, при их нажатии (и, что важнее - клике на "Enter") , дальнейшее действие. »
Как запретить я не в курсе, вроде бы никак...т.к. там сами макросы страничек изменить нельзя

Но отловить событие нажатия кнопки "Далее" и возвратиться на предыдущую страничку можно, вот так я бы сделал на стандартных страничках, добавив между страничками свою функцию:

!insertmacro MUI_PAGE_WELCOME
Page Custom MyCustomPage
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH

Function MyCustomPage
MessageBox MB_OK|MB_ICONINFORMATION "Нажата кнопка Далее$\n$\nВозврат на страничку Приветствия"
GetDlgItem $0 $HWNDPARENT 3
SendMessage $0 ${BM_CLICK} 0 0
# 1 - кнопка Далее
# 2 - кнопка Отмена
# 3 - кнопка Назад
FunctionEnd


P.S.
А вообще не понятно, зачем их блокировать??

bugmenotagain
15-04-2012, 17:54
Я спрашивал программа должна распаковаться потом устанавливаться? а сразу она не может устанавливать? зачем мне стандартный установщик Я делаю свой собственный. что так она не может программа сама не может понять какие ей нужны файлы для установки?

kotkovets
15-04-2012, 19:27
при их нажатии (и, что важнее - клике на "Enter") , дальнейшее действие »
по умолчанию фокус стоит на кнопке "далее"(установить) поэтому достаточно установить при открытии(создании) странички на
на другой элемент окна
${NSD_SetFocus} "описатель(хэндл) элемента"

bugmenotagain
15-04-2012, 21:50
глухая тема

K.A.V.
15-04-2012, 22:07
глухая тема »
:laugh:

Согласен с вами, 2500+ сообщений в теме...совсем тихо здесь как в тайге :biggrin:
Да и люди здесь, какие-то не отзывчивые, не помагают ничем :lol:

Как найдёте на просторах рунета более "подвижную" тему в которой обсуждают язык NSIS, сообщите сюда пожалуйста :drug:

bugmenotagain
15-04-2012, 22:46
K.A.V., вам наверно 15 лет, столько смайликов понаставили

kotkovets
15-04-2012, 22:59
bugmenotagain, хорош оффтопить, все претензии в личной переписке высказываете

celovec
16-04-2012, 00:07
Когда появляется новая версия моей программы. Люди ее инсталлирую поверх старой программы.
Возможно ли NSIS заставить не перезаписывать некоторые файлы?
Тоесть есть файл settings.ini в нем хранятся настройки. И его не нужно перезаписывать (не нужно заменять на исходный который есть в инсталляторе).
Спасибо.

K.A.V.
16-04-2012, 00:53
celovec, .: NSIS - все вопросы :. (http://forum.oszone.net/thread-67386.html)
В шапке темы - Справочник по NSIS (http://forum.oszone.net/thread-168287.html)

Изучаем

celovec
16-04-2012, 01:17
К сожалению я там не нашел ответ на свой вопрос.

K.A.V.
16-04-2012, 08:27
celovec, Посмотрите страничку в справке на всякий случай "Перевод справки NSIS => File"

А вообще чтобы НЕ перезаписывать файл, нужно перед командой распаковки (File) прописать команду SetOverwrite off

Вот так:

SetOverwrite off ; Отключаем перезапись файла
File settings.ini ; Распаковка вашего файла
SetOverwrite on ; Включаем обратно перезапись файлов


Либо можно проверять наличие файла в директории, куда происходит установка, это можно сделать вот так:

IfFileExists "$INSTDIR\settings.ini" +2 0 ; Проверяем, есть ли файл в каталоге, куда происходит установка
File settings.ini ; Распаковка вашего файла

MKN
16-04-2012, 08:50
А вообще не понятно, зачем их блокировать?? »
Например, на кастомной странице есть элементы выбора поведения установки, выбор папки\файлов и т.д. Имеется собственная кнопка начала установки. Далее идут команды установки (команды могут продолжаться и на следующей странице).
Если после запуска скрипта, случайно или как, кликнуть на Enter, то начинается выполнение команд. Совершенно не нужное и бестолковое, вплоть до сообщений об ошибках, хотя ничего ещё не выбрано и не отмечено.
Поэтому и надо блокировать Enter.




© OSzone.net 2001-2012