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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    MKN



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

    Цитата:
    пример подсмотреть


    Код:
     
    ;http://nsis.sourceforge.net/header
    OutFile "GetVideoController.exe"
    !include WMI.nsh
     
    Section
    ${WMIGetInfo} root\CIMV2 Win32_VideoController Caption callback_Function
    SectionEnd
     
    Function callback_Function
    ;System::Call "user32::OemToChar(t R2, t. r2)"  ; если будут "крякозябры"
    MessageBox MB_OK "$2"
    FunctionEnd
     

    Можно и без WMI.nsh, используя команду с wmic.

    Данные об ОС :

     
    OutFile "GetOSVersion.exe"
    !include "StdUtils.nsh"
     
    Section
        ${StdUtils.GetRealOSVersion} $1 $2 $3
        ${StdUtils.GetRealOSBuildNo} $4
    MessageBox MB_OK "Windows NT v$1.$2, ServicePack $3, Build $4"
        ${StdUtils.GetOSEdition} $1
    MessageBox MB_OK "Edition: $1"
        ${StdUtils.GetRealOSName} $1
    MessageBox MB_OK "Friendly name: $\"$1$\""
    SectionEnd

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 09:27 13-07-2019 | Исправлено: MKN, 09:36 13-07-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN
    MaGoth

     
    Для любых ОС начиная с VISTA битность в имени ОС не используется, а в SDUtils имена ОС указаны литералами в файле src/DetectOsVersion.cpp . Детект Windows 10 v1903 я поправил - STDUtils.zip v1.1.4.0.
     
    P.S.
     
    Исходники поправил (было одно глючное место, прибил ), бинарники пересобрал , сборочный мусор подчистил, релиз перезалил, глюков не жду.


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

    Всего записей: 33206 | Зарегистр. 31-07-2002 | Отправлено: 12:26 13-07-2019 | Исправлено: Victor_VG, 12:57 13-07-2019
    MaGoth

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN, Victor_VG
    О, спасибо за примеры и обновку, будем посмотреть..
     
     
    MKN, Правда на страничке проекта запарился искать этот нсэйч для видео..
    + сварганил для примера твой код в ехе-шник инсталла, а при его выполнении рядом со скриптом появляется файлик - TempWmicBatchFile.bat
     
    Откуда он, для чего и какого хрена что-то создается само по себе ?!

    Всего записей: 114 | Зарегистр. 30-05-2007 | Отправлено: 14:51 13-07-2019 | Исправлено: MaGoth, 14:55 13-07-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
     
    https://github.com/processhacker/plugins-extra/tree/master/NvGpuPlugin - исходники, остальные в PH.

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

    Всего записей: 33206 | Зарегистр. 31-07-2002 | Отправлено: 14:56 13-07-2019
    MaGoth

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

    Цитата:
    https://github.com/processhacker/plugins-extra/tree/master/NvGpuPlugin - исходники, остальные в PH.

    Виктор, это ж на Сиське писанное, а я не проггер, что я с этим делать то буду ?!

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



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
     
    РН написан на С, но там можно отыскать имена функций Win32API с примерами их вызова, а далее отыскать их подробное описание на MSDN. Или самостоятельно читать описание WMI API разбираясь кто и что делает. По моему плагин тут удобнее...

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

    Всего записей: 33206 | Зарегистр. 31-07-2002 | Отправлено: 17:47 13-07-2019
    MaGoth

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

    Цитата:
    РН написан на С, но там можно отыскать имена функций Win32API с примерами их вызова, а далее отыскать их подробное описание на MSDN. Или самостоятельно читать описание WMI API разбираясь кто и что делает. По моему плагин тут удобнее...

    Ну, это все понятно, не зря же про сиську писал, это и есть Си..
     
    Вопрос другой..
    Поковырялся в код-крейторе и чет не пойму, а как получить номер по Device ID ??
    Чтобы на выходе было что-то типа:
    10DE (4318) для Nvidia
    и
    1002 (4098) для ATI/AMD
     
    В текущем виде оно это выдает::
    ----------------------------
    Win32_VideoController instan
    ----------------------------
    DeviceID: VideoController1
     
    А как подобное определить?

    Всего записей: 114 | Зарегистр. 30-05-2007 | Отправлено: 12:41 14-07-2019 | Исправлено: MaGoth, 12:43 14-07-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
     
    DeviceID устройства мы знаем, а уже по нему спрашиваем у WMI PCIId устройства по данному DeviceID. Дальше парсим PCIId с учётом того что он содержит код производителя. Или как вариант звать внешнюю утилиту типа HWiNFO32/64, AIDA64 и после разбирать её лог, а он может и десятки тысяч строк содержать...

    Всего записей: 33206 | Зарегистр. 31-07-2002 | Отправлено: 21:19 14-07-2019
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
    можно через wmi
     
     

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 00:27 15-07-2019
    heloy2010

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. На 59 стр. форума, был задан вопрос о возможности регистрации программы, если рег-файл с данными находится рядом с установщиком.
    На вопрос, был представлен образец кода:
    IfFileExists "$EXEDIR\data.reg" 0 +2  
    Execwait 'regedit /s "$EXEDIR\data.reg"'
    А возможно ли также просто, импортировать данные из рег-файла в установщик? Как это реализовано в других инсталляторах. Либо каждое значение реестра необходимо прописывать в скрипте?
    Ни в справке, ни на форуме я не нашел ответа на данный вопрос. Может просто плохо искал?

    Всего записей: 250 | Зарегистр. 17-05-2019 | Отправлено: 17:46 17-07-2019 | Исправлено: heloy2010, 19:09 17-07-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    heloy2010
     
    Используйте сходный приём с внешним файлом.

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

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Совсем сходно с вышеизложенным приемом у меня не получилось. Сделал немного по-другому:

    Код:
    Section -Reg
    IfFileExists "$INSTDIR\data.reg" 0 +2 ; по-моему здесь бесполезная строка, у меня без нее всё работает.
    Execwait 'regedit /s "$INSTDIR\data.reg"'
    Delete "$INSTDIR\data.reg"
    SectionEnd

    Т.е. упаковал data.reg вместе со всем содержимым в установщик. При установки программы вносятся данные из рег-файла в ОС, после чего data.reg автоматом удаляется с глаз долой. Не знаю, насколько верен этот подход, но вроде всё работает. Если что, укажите на ошибки. Буду благодарен.
    PS. Данная схема не работает в частности с программами от Hasleo в 64-разрядных ОС. Вместо ветки реестра HKLM\SOFTWARE\Hasleo, регистрационные вносятся в  HKLM\SOFTWARE\WOW6432Node\Hasleo, что не есть хорошо. Здесь придется прописывать полностью значение ключа в самом сценарии:

    Код:
    Section -Reg
    SetRegView 64
    WriteRegStr HKLM "SOFTWARE\Hasleo\WinToHDD" "Data0000" "00020048UEJWRUM0UFctWkFWQjJFNEYtOTlKNkdWQjItNFRVVE1NV1QtRjRGRFhOSEQtS0tURlBBVTk=v/wou4BIWVFjMCbSBE6WyoXqslbozHz2UbswO9QNogIQ71bhsNDpmrrCmje5A24ma7+7tNtcvNhz94rWL7+1/7pD85PShk4/0tyAhOrj/n7P785ikvLTrhhq0CqMBS4GcThntUYiZxGlUXr2vYhIJcKdR9KeO9VVuVtIUniem/Q="
    SectionEnd

    Всего записей: 250 | Зарегистр. 17-05-2019 | Отправлено: 21:08 17-07-2019 | Исправлено: heloy2010, 09:55 18-07-2019
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    heloy2010
     
    В принципе, не сложно конвертировать рег-файл в .nsh-скрипт - это делает консольная  утилита Reg2Nsis которая формирует скрипт-заготовку. Дальше остаётся чуток подчистить мусор и мелочи поправить, после чего вставить готовый фрагмент в свой код. Собственно у меня это давно в HM NIS прикручено...

    Всего записей: 33206 | Зарегистр. 31-07-2002 | Отправлено: 11:22 18-07-2019
    MaGoth

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

    Цитата:
    DeviceID устройства мы знаем, а уже по нему спрашиваем у WMI PCIId устройства по данному DeviceID. Дальше парсим PCIId с учётом того что он содержит код производителя. Или как вариант звать внешнюю утилиту типа HWiNFO32/64, AIDA64 и после разбирать её лог, а он может и десятки тысяч строк содержать...

    Виктор, а можно первый пункт в виде примера кода для нсиськи чтобы был ID девайса ?!
     
     

    Цитата:
    можно через wmi

    Аналогично..
     
    Спасибо..

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

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    Также пользуюсь утилитой Reg2Nsis для конвертации рег-файлов. Отличная вещь.

    Всего записей: 250 | Зарегистр. 17-05-2019 | Отправлено: 13:18 18-07-2019
    MKN



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
    Так всё-таки, что ты хочешь получить и для каких целей ?  
    Модель видеокарты (пример дан), HWID или ещё чего ?

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 13:20 18-07-2019 | Исправлено: MKN, 13:23 18-07-2019
    MaGoth

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

    Цитата:
    Так всё-таки, что ты хочешь получить и для каких целей ?  
    Модель видеокарты (пример дан), HWID или ещё чего ?  

    Оке, начну из далека..
    1. мы делаем патчики к одной серии игры..
    2. имеется плавающий баг с низким FPS в эксклюзивном полном экране, который проявляется только в связке Win10+AMD..
    3. чтобы его исправить нам нужно сгенерировать свой ини-файл в псевдо-полноэкранном режиме со своими значениями параметров если это Win10+AMD. Если любая другая связка то все генериться по умолчанию.
     
    моё мнение что по Device ID надёжнее определять, но на выходе должен быть 10DE (4318) для Nvidia и 1002 (4098) для ATI/AMD
     
    но у меня эти номера не выводятся я хз как их получить..
    надеюсь понятно все расписал..

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



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

    Цитата:
    на выходе должен быть 10DE (4318) для Nvidia и 1002 (4098) для ATI/AMD

    Дык это совсем из другой оперы... Это Vulkan API_шное -   VkPhysicalDeviceType.
    Но можно ориентироваться и по HWID.
    В HWID этот ID находится в начале. К примеру для Nvidia - PCI\VEN 10DE и т.д.
    0x10DE - это шестнадцатеричное обозначение десятичного числа 4318
     
    Т.е. получаешь с помощью WMI, HWID видеоконтроллера и выделяешь из него идентификатор поставщика NVIDIA или др.
     
    ps пока расписывал, Sanch8 тебе готовый код наваял...

    Всего записей: 4928 | Зарегистр. 21-04-2005 | Отправлено: 15:53 18-07-2019 | Исправлено: MKN, 16:07 18-07-2019
    Sanch8



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
    Вот, этот код поможет:

    Код:
    OutFile "GetVideoController.exe"
    SilentInstall silent
    !include WMI.nsh
    !include LogicLib.nsh
     
    Section
    ${WMIGetInfo} root\CIMV2 Win32_VideoController PNPDeviceID callback_Function
    Quit
    SectionEnd
     
    Function callback_Function
    ;System::Call "user32::OemToChar(t R2, t. r2)"  ; если будут "крякозябры"
    StrCpy $R8 "$2" 12
    StrCpy $R8 "$R8" "" -4
    ${If} $R8 = 1002
      MessageBox MB_OK "ATI Technologies Inc"
    ${ElseIf} $R8 = 10DE
      MessageBox MB_OK "NVIDIA Corporation"
    ${EndIf}    
    FunctionEnd      

    PS
    WMICodeCreator
    Программа для получения информации о компонентах и программном обеспечении компьютера.

    Всего записей: 125 | Зарегистр. 29-01-2012 | Отправлено: 15:59 18-07-2019 | Исправлено: Sanch8, 16:34 18-07-2019
    MaGoth

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MKN, Sanch8
    Спасиб парни, убёг проверять..

    Всего записей: 114 | Зарегистр. 30-05-2007 | Отправлено: 16:13 18-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