Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Nullsoft Scriptable Install System | NSIS

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

Nep



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

 
NSIS (Nullsoft Scriptable Install System)
Скриптовая система создания инсталляционных пакетов от авторов Winamp

Основные характеристики:
 
  • Размер дистрибутива около 1,5 МБ
  • Наличие в базовом пакете файлов с примерами и подробной справки
  • Чрезвычайная гибкость при создании инсталляций для своих программ
  • Открытый исходный код
  • Использование различных алгоритмов сжатия (ZLIB, BZIP2, LZMA)
  • Наличие различных плагинов
     
    Новейшая версия ветки 2.х: NSIS 2.51 (от 1 апреля 2016 г., статус ветки - Old Releases)
    Новейшая версия ветки 3.х: NSIS 3.10 (от 30 марта 2024 г.)  
     
     
    Ссылки:
    NSIS: страница загрузкирусификатор ветки 2.xx (без гарантии, что подходит!)2.513.10NSIS 3 Pre-releaseNSIS 2 Pre-releaseисходники (SVN)
     
    Дополнительно: [ плагины, примеры и полезности ] • [ форум разрабочиков ] • [ Wiki ]
     
    Редактор для скриптового языка NSIS: [ скачать ] • [ домашняя страница ]
     
    NSIS Unpacker
    7-zip начиная с версии 4.40 beta поддерживает распаковку из некоторых типов инсталляций.  
    Обратите внимание, что 7za не поддерживает распаковку.
     
    Полноценного русификатора пока нет, но кто хочет, может перевести сообщения в исходных текстах NSIS и скомпилировать всё заново – это единственный корректный вариант. Из файлов поддаётся корректному переводу только меню интегратора NSIS, поскольку там HTML, а остальные переводы – это в основном "русификаторы" с непредсказуемыми последствиями применения.
     
    64-х битное развитие идей NSIS. В разработке, аннотация разработчика nsisbi.
     
    Просьба к тем, кто будет править шапку, сначала сверяться с http://nsis.sourceforge.net/Main_Page и не выдавать желаемое за действительное.

  • Всего записей: 41940 | Зарегистр. 24-06-2001 | Отправлено: 14:21 06-10-2001 | Исправлено: DimmY, 11:10 31-03-2024
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    WiperX
     
    Ну, тут просто - через макросы описания секций. Например как тут (код старый, но рабочий) - ImageIne.nsi. Вспомогательное окно выбора формируется блоком кода

    Код:
    !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
      !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Main files installation. Always installed"
      !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "JPEG2000 support plug-ins"
      !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Integration Imagine in to Windows Shell"
    !insertmacro MUI_FUNCTION_DESCRIPTION_END

    и средствами MUI2 из состава NSIS.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33228 | Зарегистр. 31-07-2002 | Отправлено: 13:22 16-06-2019
    heloy2010

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Может кто-нибудь подсказать пример скрипта для создания жесткой ссылки на каталог?

    Всего записей: 254 | Зарегистр. 17-05-2019 | Отправлено: 19:14 16-06-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    heloy2010
     
    Вам не скрипт нужен, а команда MKLINK и делается всё одной строкой EXEC в секции [POST]:
     
    EXEC 'mklink /d /h "target" "distantion"'


    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33228 | Зарегистр. 31-07-2002 | Отправлено: 19:26 16-06-2019
    heloy2010

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Если я не ошибаюсь, команда для создания символьных ссылок MKLINK, напрямую не поддерживается в NSIS. По крайней мере у меня она не срабатывает ни в каких вариантах. Для создания жесткой ссылки на каталог необходим именно специальный сценарий. Кроме того, мне нужно, чтобы жесткая ссылка, а точнее соединение для каталога, создавалась при запуске, а не по завершению работы программы. Мне это необходимо, т.к. я хочу использовать указанную функцию в портативных программах формата PortableApps.

    Всего записей: 254 | Зарегистр. 17-05-2019 | Отправлено: 09:16 20-06-2019 | Исправлено: heloy2010, 09:35 20-06-2019
    820815



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    При попытке сделать жёсткую ссылку на папку mklink выдаёт "Access is denied."
    Cимволическую создаёт нормально. Значит нужно пофайлово крутить

    Всего записей: 645 | Зарегистр. 18-12-2006 | Отправлено: 09:50 20-06-2019
    MKN



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    heloy2010
    Здесь сценарий-макрос:
    http://forums.winamp.com/showthread.php?t=325143
    здесь про командный способ :
    https://superuser.com/questions/1082476/mklink-symbolic-link-not-working

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 10:11 20-06-2019 | Исправлено: MKN, 10:17 20-06-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    heloy2010
     
    На ХР симлинки не создаются тк. ОС  не имеет их поддержки. Там на ставить Symbolic Link Driver for Windows XP - x64 | x86 | Src, а проще в первой же секции через плагин ExecDos  вызвать консольную программу ln.
     
    И по поводу MKLINK - вы бы сначала спросили у неё ключи вызвав mklink /? из окна CMD. Она вам и выведет свои ключи:

    Цитата:
    Создание символической ссылки.
     
    MKLINK [[/D] | [/H] | [/J]] Ссылка Назначение
     
            /D          Создание символической ссылки на каталог.
                        По умолчанию создается символическая ссылка на файл.
            /H          Создание жесткой связи вместо символической ссылки.
            /J          Создание соединения для каталога.
            Ссылка      Имя новой символической ссылки.
            Назначение  Путь (относительный или абсолютный), на который ссылается
                        новая ссылка.

    но, M$ забыла указать в сей справке что вызов этой утилиты требует прав админа т.к. функции CreateHardLinkA()/CreateHardLinkW() работают только с файлами, а CreateSymbolicLinkA() | CreateSymbolicLinkW() работающие с каталогами слегка не документированы - требование прав администратора в MSDN опущено - "Пользователю это знать не нужно!".

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33228 | Зарегистр. 31-07-2002 | Отправлено: 17:19 20-06-2019
    heloy2010

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Благодарю всех, кто откликнулся на мой вопрос. Но хочу еще раз уточнить - мне не нужны советы по созданию символьных ссылок командой MKLINK - как их создавать, я в курсе. Мне нужен конкретный пример сценария-макроса именно для NSIS, наподобие тех набросков, что пока в единственном числе можно найти на форумах в сети (http://forums.winamp.com/showthread.php?t=325143). И хотелось бы увидеть конкретный, работающий сценарий, а не ссылки на схожие темы или ресурсы.

    Всего записей: 254 | Зарегистр. 17-05-2019 | Отправлено: 18:41 20-06-2019 | Исправлено: heloy2010, 06:45 21-06-2019
    MKN



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    heloy2010

    Цитата:
    Мне нужен конкретный пример сценария-макроса именно для NSIS

    Так там вроде всё конкретно и решено, и сценарий был :

    Цитата:
    !include Util.nsh
    !include FileFunc.nsh
     
    !macro CreateSymbolicLinkFolderImplementation
    Exch $0   ; _TARGET
    Exch 1
    Exch $1   ; _JUNCTION
    IfFileExists "$0" 0 done
    ${GetParent} "$1" $R0
    CreateDirectory "$R0"
    System::Call "kernel32::CreateSymbolicLinkW(w `$1`, w `$0`, i 1) i .s"
    done:
    Pop $R0
    Pop $1
    Pop $0
    !macroend
    !macro CreateSymbolicLinkFolder _JUNCTION _TARGET
    Push "${_JUNCTION}"
    Push "${_TARGET}"
    ${CallArtificialFunction} CreateSymbolicLinkFolderImplementation
    !macroend
    !define CreateSymbolicLinkFolder "!insertmacro CreateSymbolicLinkFolder"
     
    Section
    ${CreateSymbolicLinkFolder} "c:\foo" "c:\bar"
    SectionEnd


    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 10:32 21-06-2019 | Исправлено: MKN, 10:33 21-06-2019
    heloy2010

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN
    К сожалению у меня предложенный вами сценарий, PortableApps.comLauncher оказывается компилировать в лаунчер для портативки. Спотыкается на трех последних строках сценария:

    Цитата:
    Section  
    ${CreateSymbolicLinkFolder} "c:\foo" "c:\bar"  
    SectionEnd

    Без этих строк компиляция происходит, но соответственно при запуске портативной программы, символьные ссылки создаваться не будут.
    Перепроверьте пожалуйста сценарий, может что упустили?

    Всего записей: 254 | Зарегистр. 17-05-2019 | Отправлено: 07:43 22-06-2019
    MKN



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    heloy2010
    вроде пробелы лишние... надо так :
    System::Call "kernel32::CreateSymbolicLinkW(w `$1`,w `$0`,i1)i.s"
     
    К примеру: создаём символьную ссылку "foo" на диске С, для каталога "bar" на диске D
    ${CreateSymbolicLinkFolder} "c:\foo" "d:\bar"
     
    у меня работает.

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 10:12 22-06-2019 | Исправлено: MKN, 10:14 22-06-2019
    heloy2010

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN
    Благодарю вас за помощь, у меня тоже заработало, создается символическая (мягкая) ссылка на каталог. Хотел у вас узнать еще про макрос для создания соединения для каталога. Т.е. по аналогии с командой MKLINK - параметр /J.
    Хотел еще уточнить, у вас сценарий для версии NSIS-3.04? Дело в том, что при работе с версией NSIS-2.46, у меня появляется сообщение об ошибке в строке ${CreateSymbolicLinkFolder} "c:\foo" "d:\bar". Всё бы ничего, но генератор-компилятор PortableApps.comLauncher 2.2.1 работает только с версией NSIS-2.46. И NSIS-3.04 он отказывается поддерживать, чтобы я с ним не делал. Нет ли у вас случаем, аналогичного сценария-макроса для NSIS-2.46?

    Всего записей: 254 | Зарегистр. 17-05-2019 | Отправлено: 23:19 22-06-2019 | Исправлено: heloy2010, 08:32 23-06-2019
    MKN



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    heloy2010

    Цитата:
    Хотел у вас узнать еще про макрос для создания соединения для каталога. Т.е. по аналогии с командой MKLINK - параметр /J.  

    во-первых, это сегодня никому не нужно :

    Цитата:
    Дополнительный ключ /J (Junction) команды mklink вряд ли понадобится. Он служит для создания тех же символических ссылок, но только на каталоги (на файлы ;нельзя) и только на локальных дисках (на сетевых нельзя). Junction — это устаревший вид ссылок.
     

    во-вторых, как пишут, с помощью api создавать точку соединения довольно-таки проблематично, для этого использовались другие средства...  
     
    в-третьих,  на кой городить десятки строк кода, если есть проверенная команда mklink, которая нормально работает в NSIS (и для  /J и для /D) :

    Код:
     
    nsExec::Exec 'cmd /c MKLINK /J "C:\foo" "D:\bar"'
    Pop $0 ; return value/error - если 0, то всё ОК
     

    ps я использовал NSIS-3.03
    ps2 перед созданием ссылок, сначала желательно выполнить проверку существования и ссылки и каталога... (ну, это вроде как очевидно)

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 10:26 25-06-2019 | Исправлено: MKN, 10:35 25-06-2019
    heloy2010

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN
    Еще раз благодарю вас за помощь. В первую очередь конечно за третий вариант создания символьной ссылки обычной командой. Изначально я сам пытался соорудить нечто подобное: nsExec::Exec 'MKLINK /J C:\foo D:\bar'. Только вот вызов командной строки перед MKLINK не знал как правильно прописать. Да еще с толку сбили некоторые публикации в сети, что в NSIS символьные ссылки создаются только с помощью сценариев-макросов.
    Еще раз благодарю и всех вам благ!
    PS. Как я в последствии понял, с помощью команды Exec 'cmd /c', т.е. вызова командной строки (могу ошибаться в терминологии), можно выполнять и некоторые другие операции, напрямую не поддерживаемые в NSIS, но допустимые в командной строке Windows.
    Для вас, это конечно не новость, но для меня очень полезная информация.

    Всего записей: 254 | Зарегистр. 17-05-2019 | Отправлено: 14:57 25-06-2019 | Исправлено: heloy2010, 17:21 30-06-2019
    Ruslang



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
    Создал инсталяшку, которая просто распаковывает файлы в заданную папку и все хорошо... но, если повторно запустить инсталятор, то он перезатирает все файлы (например, базу данных, а этого допускать нельзя). Можно ли как-то выдавать запрос на перезапись?

    Всего записей: 545 | Зарегистр. 14-04-2006 | Отправлено: 13:38 26-06-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ruslang
     
    Можно, например оператором SetOverwrite:

    Цитата:
    4.8.2.8 SetOverwrite
     
    on|off|try|ifnewer|ifdiff|lastused
     
    This command sets the overwrite flag which is used by the File command to determine whether or not the file should overwrite any existing files that are present. If overwriteflag is 'on', files are overwritten (this is the default). If overwriteflag is 'off', files that are already present are not overwritten. If overwriteflag is 'try', files are overwritten if possible (meaning that if the file is not able to be written to, it is skipped without any user interaction). If overwriteflag is 'ifnewer', then files are only overwritten if the existing file is older than the new file. If overwriteflag is 'ifdiff', then files are only overwritten if the existing file is older or newer than the new file. Note that when in 'ifnewer' or 'ifdiff' mode, the destination file's date is set, regardless of what SetDateSave is set to.
     
    SetOverwrite off
    File program.cfg # config file we don't want to overwrite
    SetOverwrite on
     
    поставив для нужных элементов его значение off мы запрещаем их перезапись до следующего по коду изменения оператора SetOverwrite.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33228 | Зарегистр. 31-07-2002 | Отправлено: 14:18 26-06-2019
    MaGoth

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN, Victor_VG
    Прива камраден..
     
    Пара вопросов имеется:
    1. Есть ли какие нормальные способы для определения граф-карты на компе Юзера средствами Нсиськи и/или его плагинов или мож еще каких тулз или Вынь АПИ ?!
    2. Для определения ОСей, Котковец, помнится переписывал плагин GetVersion на Нсиську, но он изначально был кривой и не определял корректно Вынь 10. Кто-нить пытался доработать его до вменяемого вида, и может глянуть в эту сторону поковырять его ??
     
    Если что я пользую Нсиську ЮТФ16-ЛЕ 2.46,5 / 2,50 на Хрюнделе..
    Спасибки..

    Всего записей: 114 | Зарегистр. 30-05-2007 | Отправлено: 18:53 12-07-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
     
    Видеоплату можно опросить через WMI API. Что до версии в десятке, то всё правильно, начиная с Windows 8.1 (Windows NT 6.3) функции GetVersion() и GetVersionEx() для всех старших версий ОС возвращают версию 6.3, используем функции WinAPI GetRealOSVersion() / GetRealOSName() / VerifyOSVersion() / GetOSEdition() через  StdUtils , например:
     
    ${StdUtils.GetRealOSVersion} user_var(out_major) user_var(out_minor) user_var(out_spack)
     
    При этом необходимости в ковырянии использующего старый (в ntdll.dll на эти функции стоит заглушка) API плагин нет.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33228 | Зарегистр. 31-07-2002 | Отправлено: 19:48 12-07-2019
    MaGoth

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Видеоплату можно опросить через WMI API.

    Виктор, а пример подсмотреть есть где для этого действа ?!
    желательно для нормального девайса и интегрированного..
     
    По StdUtils, чет не понял а где у него определение разрядности ?? Всю справку облазил и не нашел, нет что-ль ?
     
    зы, Млин млинский, то понос, то золотуха..  ))

    Всего записей: 114 | Зарегистр. 30-05-2007 | Отправлено: 20:33 12-07-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
     
    Разрядность ОС определяется по переменным среды, но это не всегда срабатывает, хотя можно просто проверить наличие ключа [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node] - он есть только в 64-х битных ОС, так же только в них есть каталог  C:\Program Files (x86). В принципе можно по ним смотреть, и ещё есть макрос в стандартных либах, но у меня руки не доходят с ним разобраться...
     
    Добавлено:
    MaGoth
     
    В Process Hacker есть плагин NvGpuPlugin который и выполняет данные задачи, а сам WMI API документирован на MSDN.

    ----------
    Жив курилка! (Р. Ролан, "Кола Брюньон")
    Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti

    Всего записей: 33228 | Зарегистр. 31-07-2002 | Отправлено: 07:53 13-07-2019
    Открыть новую тему     Написать ответ в эту тему

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

    Компьютерный форум Ru.Board » Компьютеры » Программы » Nullsoft Scriptable Install System | NSIS


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru