Показать полную графическую версию : [архив].: NSIS - все вопросы :.
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, процитируйте, пожалуйста, это место.
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
Подскажите, каким образом в стандартных и кастомных страницах, запретить действие кнопок "Next" и "Install".
Не скрыть эти кнопки , а именно запретить, при их нажатии (и, что важнее - клике на "Enter") , дальнейшее действие.
Не скрыть эти кнопки , а именно запретить, при их нажатии (и, что важнее - клике на "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
глухая тема
глухая тема »
:laugh:
Согласен с вами, 2500+ сообщений в теме...совсем тихо здесь как в тайге :biggrin:
Да и люди здесь, какие-то не отзывчивые, не помагают ничем :lol:
Как найдёте на просторах рунета более "подвижную" тему в которой обсуждают язык NSIS, сообщите сюда пожалуйста :drug:
bugmenotagain
15-04-2012, 22:46
K.A.V., вам наверно 15 лет, столько смайликов понаставили
kotkovets
15-04-2012, 22:59
bugmenotagain, хорош оффтопить, все претензии в личной переписке высказываете
Когда появляется новая версия моей программы. Люди ее инсталлирую поверх старой программы.
Возможно ли NSIS заставить не перезаписывать некоторые файлы?
Тоесть есть файл settings.ini в нем хранятся настройки. И его не нужно перезаписывать (не нужно заменять на исходный который есть в инсталляторе).
Спасибо.
celovec, .: NSIS - все вопросы :. (http://forum.oszone.net/thread-67386.html)
В шапке темы - Справочник по NSIS (http://forum.oszone.net/thread-168287.html)
Изучаем
К сожалению я там не нашел ответ на свой вопрос.
celovec, Посмотрите страничку в справке на всякий случай "Перевод справки NSIS => File"
А вообще чтобы НЕ перезаписывать файл, нужно перед командой распаковки (File) прописать команду SetOverwrite off
Вот так:
SetOverwrite off ; Отключаем перезапись файла
File settings.ini ; Распаковка вашего файла
SetOverwrite on ; Включаем обратно перезапись файлов
Либо можно проверять наличие файла в директории, куда происходит установка, это можно сделать вот так:
IfFileExists "$INSTDIR\settings.ini" +2 0 ; Проверяем, есть ли файл в каталоге, куда происходит установка
File settings.ini ; Распаковка вашего файла
А вообще не понятно, зачем их блокировать?? »
Например, на кастомной странице есть элементы выбора поведения установки, выбор папки\файлов и т.д. Имеется собственная кнопка начала установки. Далее идут команды установки (команды могут продолжаться и на следующей странице).
Если после запуска скрипта, случайно или как, кликнуть на Enter, то начинается выполнение команд. Совершенно не нужное и бестолковое, вплоть до сообщений об ошибках, хотя ничего ещё не выбрано и не отмечено.
Поэтому и надо блокировать Enter.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC