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

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



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    спасибо за помощь, помогло !!!
     
    Добавлено:
    а как сделать так, чтобы в конце установки не появлялась строка с предлежением о запуске программы?
     
    скрип создавал с помощью "Мастер сценарии NSIS" который является частью HM NIS Edit

    Всего записей: 7 | Зарегистр. 26-02-2009 | Отправлено: 13:48 26-02-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ab10001
     
    По дефолту NSIS ставит SetShellVarContext current, для использования SetShellVarContext all директиву надо прописать явно. Вот смотри пример моего кода:

    Цитата:
      SetShellVarContext all
      !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
      Delete "$DESKTOP\setup.lnk"
      Delete "$SMPROGRAMS\$ICONS_GROUP\setup.lnk"
      Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"  
      RMDir /r "$SMPROGRAMS\$ICONS_GROUP"
     

    Макрос связанный с MUI возвращает путь к каталогу группы, затем удаляются ярлыки и директивой RMDir /r "$SMPROGRAMS\$ICONS_GROUP" удаляется сам каталог группы со всеми вложенными подкаталогами и файлами. Но, с ключом /r надо быть очень осторожным он удаляет сразу всю вложенную структуру каталогов, в RMDir "$SMPROGRAMS\$ICONS_GROUP" удалит каталог только если он будет пустым.
     
    Элементарно: в директиве !define MUI_FINISHPAGE_RUN "$INSTDIR\myapp.exe" убрать элемент "$INSTDIR\myapp.exe", а можно и её саму удалить заменив строкой SetAutoClose /true в последней перед директивой SectionEnd строке секции Post. И если ещё убрать директиву !insertmacro MUI_PAGE_WELCOME, то можно удалить и директиву !define MUI_WELCOMEFINISHPAGE_BITMAP "modern-wizard.bmp" сократив тем самым размер программы.

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

    Всего записей: 33232 | Зарегистр. 31-07-2002 | Отправлено: 19:35 26-02-2009 | Исправлено: Victor_VG, 19:42 26-02-2009
    alroy

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет не любитель я писать на форумах стараюсь сам разобраться но тут туплю не имоверно. Теперь вопрос могу ли я использовать переменную для того что бы в нее поместить путь к каталогу установки а потом подставить ее в InstallDir примерно так  
     

    Код:
     
     
    var in_pyTb ; Обьявить переменную
     
    StrCpy $in_pyTb "c:\temp" ; присвоить ей путь  
     
    InstallDir $in_pyTb ; А потом использовать ее
     
     

     
     
    Как правильно этим пользоваться ?????

    Всего записей: 59 | Зарегистр. 15-06-2005 | Отправлено: 11:58 27-02-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alroy
     
    Начало верное - переменную надо объявить явно. А дальше мы можем сделать нужные нам операции - переопределить её например в функции .onInit, иной функции/секции, можем присвоить ей значение регистра или прямо считать в неё строку Реестра, например так:

    Код:
    ReadRegStr HKLM "Software\MyProg\Path" "InstDirPatch" $INSTDIR
    SetOupPath $INSTDIR
    File $INSTDIR\myprog.exe

    Т.е. с переменной можно сделать всё, что определено нашим алгоритмом, в пределах возможностей компилятора и синтаксиса языка. Я этим механизмом часто пользуюсь в модификации обновлений - особенно когда пути переменные. Всё работает великолепно.


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

    Всего записей: 33232 | Зарегистр. 31-07-2002 | Отправлено: 16:39 27-02-2009
    ab10001



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет! тут такой вопрос: как сделать так что бы во время установки пользователю предоставлялся выбор создавать иконку на рабочем столе или нет, и чтобы по умолчанию она была отключена, т.е. чтобы вовремя тихой установки она не создавалась ??
     
    что и где надо добавить или исправить??
     
    ; Shortcuts
      SetShellVarContext all
      !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
      CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
      CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MyApp.lnk" "$INSTDIR\MyApp.exe"
      CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe"
      !insertmacro MUI_STARTMENU_WRITE_END
    SectionEnd
     
     
    Заранее всем спасибо !!!  

    Всего записей: 7 | Зарегистр. 26-02-2009 | Отправлено: 17:10 28-02-2009
    Victor_VG



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

    Цитата:
     ; Shortcuts
      SetShellVarContext all
      !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
      CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
      CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MyApp.lnk" "$INSTDIR\MyApp.exe"
      StrCmp $LANGUAGE 1049 +2
      MessageBox MB_ICONQUESTION|MB_YESNO "Create Desktop icon?" IDYES +2 IDNO +4
      MessageBox MB_ICONQUESTION|MB_YESNO "Создать иконку на рабочем столе?" IDYES +1 IDNO +2

      CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe"
      !insertmacro MUI_STARTMENU_WRITE_END
    SectionEnd

    А для случая Silent надо выводить не запрос в диалоге, а использовать логику с выбором секций и переменной-семафором. Когда мне такие фокусы требуются я просто просчитываю нужную СДНФ или СКНФ используя аппарат дискретной математики. Именно поэтому мои решения иной раз не универсальны - они рассчитываются каждый раз заново с использованием математической модели. Для меня такой метод давно стал привычен, хотя он и не самый простой в применении.


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

    Всего записей: 33232 | Зарегистр. 31-07-2002 | Отправлено: 17:36 28-02-2009 | Исправлено: Victor_VG, 17:36 28-02-2009
    ab10001



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо за помощь, но это не то что надо, так как во время тихой установки задается  вопрос о создании иконки, а мне надо чтобы все по тихому проходило и иконки не создавала, а при обычной установки можно было поставить галочку, чтобы иконка была создана.
     Спасибо за помощь!!!

    Всего записей: 7 | Зарегистр. 26-02-2009 | Отправлено: 18:48 28-02-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ab10001
     
    Используй создание иконки в не выбранной по умолчанию секции (ключ /о в директиве Section). В ней ставим команду изменения состояния семафора:
     
    var sem
     
    Function .onInit
    StrCpy sem 0
    FunctionEnd

    ....
     
    Section /o "Desk" SEC001
    StrCpy $sem 1
    SectionEnd

     
    ....
     
     Shortcuts
      SetShellVarContext all
      !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
      CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
      CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MyApp.lnk" "$INSTDIR\MyApp.exe"
      StrCmp $sem 1 +1 +2
      CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe"
      !insertmacro MUI_STARTMENU_WRITE_END
    SectionEnd

     
    После секции Post и вне секций, перед UNINSTALL!
     
    !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
      !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Install Desktop icon"
    !insertmacro MUI_FUNCTION_DESCRIPTION_END

     
    Вся структура создаётся автоматом если указать мастеру в HM NIS создание скрипта с возможностью выбора компонент.

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

    Всего записей: 33232 | Зарегистр. 31-07-2002 | Отправлено: 19:03 28-02-2009 | Исправлено: Victor_VG, 19:04 28-02-2009
    MaGoth

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

    Цитата:
    2All  
    Ребята, забирайте мой подарок к Празднику: NSIS 2.44 Kit включая пакет Обновления для NSIS 2.44 версии 1.0.0.1  
     
    Данный пакет содержит:  
     
    Примечание:  
     
    При обновлении NSIS с более старой версии согласитесь с её удалением. Так Вы сможете избежать многих проблем вызванных изменением структуры новой версии компилятора! Лучше потом всё заново подстроить...  
    Страницы закачки  
    Зеркало 1  
    Зеркало 2  
    Зеркало 3  
     
    P.S.  
    "Тянул кота за хвост" я - надо было разобраться с ошибками в Far Manager и в ряде других пакетов, и я решил выпустить всё вместе, а NSIS именно сегодня, как подарок к Празднику.

     
    С вашей странички не смог загрузить обновку программы,
    Ожидание в 30 сек, про которые вы писали ничего не дает, файлик не подгружается, как висела так и висит эта инфа на страничке:
    Для скачивания файла вам необходимо
    бесплатно зарегистрироваться
    или
    войти под своим паролем

     
    Скачал только после регистрации...
     
     
     
    ***
    Теперь по скриптам NSIS'а:
    Есть одна задачка установить модификацию на игру, а именно:
     
    1. Установка мода на игру Готика2 с проверкой пути и верификации ехешника(реализовано)
    2. В процессе установки найти на компе пользователя игру Готика 1 (не реализовано)
    2.1 Распаковать файлы томов VDFs Готики 1 во временный каталог устанавливаемого мода на игру Готика2 (реализацию представляю и сделаю)
    2.3 Собрать VDFs тома с обновленными материалами (реализовано)
    3. Продолжить и завершить установку модификации на игру.(реализовано)
     
    Здесь, вопросы вызавает пункт 2, как определить при установке каталог с другой игрой и выпотрошить ее содержимое, во временный каталог другой игры в который устанавливается мод???
    Причем, сама игра, поиск пути для которой требуется идет в 2-х лицензиях, первая от 1C/SnowBall, вторая от Russobit-M?
     
    Если у кого есть соображения по этому вопросу?  
    Или же отпишите в какую сторону рыть при решении этой проблемы(примеры, ссылки и т.д.).
    Буду очень благодарен.
     
    Ps. Скрипт своего инсталера могу скинуть если что, ибо там не все так просто...
     
    Pss. Victor_VG, если нужно, то смогу выделить место у себя на нормальном Хосте.

    Всего записей: 114 | Зарегистр. 30-05-2007 | Отправлено: 18:53 01-03-2009 | Исправлено: MaGoth, 19:14 01-03-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaGoth
     
    Поиск реализуется с помощью плугина Locate, но к нему надо в заголовке использовать инклюд Locate.ins. Этот плугин реализует поиск по именам. Когда надо что-то найти, используй его. Я кинул его описание под тэг more.  
     
    Что касается регистрации, то и сам был удивлён - раньше её не требовалось. Видимо придётся решать вопрос с хостингом.

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

    Всего записей: 33232 | Зарегистр. 31-07-2002 | Отправлено: 20:44 01-03-2009
    alroy

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
     
    Спасибо у меня то как раз проблема в том что я не знаю  как сделать путь который у меня в переменной путем по умолчанию для установки !!!!!

    Всего записей: 59 | Зарегистр. 15-06-2005 | Отправлено: 12:30 02-03-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alroy
     
    Это легко сделать - достаточно присвоить переменной $INSTDIR нужное значение. Это можно сделать или в функции .onInit либо в любом месте кода программы. Тут мы вольны в выборе.

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

    Всего записей: 33232 | Зарегистр. 31-07-2002 | Отправлено: 20:33 02-03-2009
    alroy

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

    Всего записей: 59 | Зарегистр. 15-06-2005 | Отправлено: 20:51 02-03-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alroy
     
    Не за что. Всё в порядке. И меня когда-то учили тому что я не знал.

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

    Всего записей: 33232 | Зарегистр. 31-07-2002 | Отправлено: 22:27 02-03-2009
    alroy

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос такой  Можно ли организовать то что я напишу ниже средствами Nsis.
     
    1. Скачать файл с FTP (архив)
    2. Распаковать его!
    3. Очень желательно показывать индикатор копирования файла!!!!!!!!!
    4. Нужно сделать так что б на экране было только окно с индикатором копирования, и при этом не спрашивала ничего (кликнул на ярлык на рабочем столе и прочес пошол)

    Всего записей: 59 | Зарегистр. 15-06-2005 | Отправлено: 00:36 06-03-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alroy
     
    Да, можно. Для этого используем плугины. А логику пишем под свою задачу. С распаковкой могут быть проблемы если использовать распаковщики NSIS, а если через nsExec вызывать консольный распаковщик проблем не будет. Просто надо сначала расписать алгоритм и его проверить, а потом писать код. Обычная практика.

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

    Всего записей: 33232 | Зарегистр. 31-07-2002 | Отправлено: 01:57 06-03-2009
    alroy

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Victor_VG
    ЕСли нетрудно дай Названия плугинов дай пожалуйста

    Всего записей: 59 | Зарегистр. 15-06-2005 | Отправлено: 08:26 06-03-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alroy
     
    Часть найдёшь в подкаталоге /Plugins каталога NSIS, примеры в /Examples, описания в /Docs, необходимые файлы *.nsh в /Include. Полный список с описаниями на офсайте http://nsis.sourceforge.net/Category:Plugins .

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

    Всего записей: 33232 | Зарегистр. 31-07-2002 | Отправлено: 18:09 06-03-2009
    Chukotka

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не подскажете, есть ли правила размещения в коде строки:
    !insertmacro MUI_LANGUAGE "Russian"
     
    Почему при размещении сразу после подключения заголовков (!include MUI.nsh etc) у меня перестает отображаться на страницах Caption\SubCaption и не работает MUI_ABORTWARNING?
    Если размещаю эту строку в скрипте после описания страниц (!insertmacro MUI_PAGE_XXX) - все нормально.

    Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 18:25 07-03-2009
    Victor_VG



    Tracker Mod
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Chukotka
     
    Вот демо-пример:

    Код:
    !define PRODUCT_NAME "Моя программа"
    !define PRODUCT_VERSION "1.0"
    !define PRODUCT_PUBLISHER "Моя компания, LLC."
    !define PRODUCT_WEB_SITE "http://www.mycompany.com"
    !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\AppMainExe.exe"
    !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
    !define PRODUCT_UNINST_ROOT_KEY "HKLM"
    !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"
     
    SetCompressor lzma
     
    ; MUI 1.67 compatible ------
    !include "MUI.nsh"
     
    ; MUI Settings
    !define MUI_ABORTWARNING
    !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
    !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
     
    ; Language Selection Dialog Settings
    !define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
    !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
    ;Здесь задаётся многоязычный режим
    !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
     
    ; Welcome page
    !insertmacro MUI_PAGE_WELCOME
    ; License page
    !define MUI_LICENSEPAGE_RADIOBUTTONS
    !insertmacro MUI_PAGE_LICENSE "c:\path\to\licence\YourSoftwareLicence.txt"
    ; Directory page
    !insertmacro MUI_PAGE_DIRECTORY
    ; Start menu page
    var ICONS_GROUP
    !define MUI_STARTMENUPAGE_NODISABLE
    !define MUI_STARTMENUPAGE_DEFAULTFOLDER "Моя программа"
    !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
    !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
    !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
    !insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
    ; Instfiles page
    !insertmacro MUI_PAGE_INSTFILES
    ; Finish page
    !define MUI_FINISHPAGE_RUN "$INSTDIR\AppMainExe.exe"
    !insertmacro MUI_PAGE_FINISH
     
    ; Uninstaller pages
    !insertmacro MUI_UNPAGE_INSTFILES
    ;Здесь заканчивается формирование общих языковых структур
    ; Language files
    !insertmacro MUI_LANGUAGE "Danish"
    !insertmacro MUI_LANGUAGE "English"
    !insertmacro MUI_LANGUAGE "Finnish"
    !insertmacro MUI_LANGUAGE "Galician"
    !insertmacro MUI_LANGUAGE "Hungarian"
    !insertmacro MUI_LANGUAGE "Russian"
    ;Заданы языки сообщений
    ; Reserve files
    !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
     
    ; MUI end ------
     
    Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
    OutFile "setup.exe"
    InstallDir "$PROGRAMFILES\Моя программа"
    InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
    ShowInstDetails show
    ShowUnInstDetails show
    ;Pack installer start
    !define HAVE_UPX
    !ifdef HAVE_UPX
      !packhdr tmpexe.tmp "UPX --best -q --compress-icons=0 tmpexe.tmp"
    !endif
    ;Pack installer end
     
    Function .onInit
      !insertmacro MUI_LANGDLL_DISPLAY
    ;Здесь инициализируется текущий язык и $LANGUAGE:=%USER_LANGUAGE% определяемой переменными среды
    FunctionEnd
     
    Section "Main" SEC01
      SetOutPath "$INSTDIR"
      SetOverwrite ifnewer
      File "c:\path\to\file\AppMainExe.exe"
      File "c:\path\to\file\Example.file"
     
    ; Shortcuts
      !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
      CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
      CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Моя программа.lnk" "$INSTDIR\AppMainExe.exe"
      CreateShortCut "$DESKTOP\Моя программа.lnk" "$INSTDIR\AppMainExe.exe"
      !insertmacro MUI_STARTMENU_WRITE_END
    SectionEnd
     
    Section -AdditionalIcons
      !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
      WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
      CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
      CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
      !insertmacro MUI_STARTMENU_WRITE_END
    SectionEnd
     
    Section -Post
      WriteUninstaller "$INSTDIR\uninst.exe"
      WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\AppMainExe.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\AppMainExe.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
    SectionEnd
     
     
    Function un.onUninstSuccess
      HideWindow
      MessageBox MB_ICONINFORMATION|MB_OK "Удаление программы $(^Name) было успешно завершено."
    FunctionEnd
     
    Function un.onInit
    !insertmacro MUI_UNGETLANGUAGE
      MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Вы уверены в том, что желаете удалить $(^Name) и все компоненты программы?" IDYES +2
      Abort
    FunctionEnd
     
    Section Uninstall
      !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP
      Delete "$INSTDIR\${PRODUCT_NAME}.url"
      Delete "$INSTDIR\uninst.exe"
      Delete "$INSTDIR\Example.file"
      Delete "$INSTDIR\AppMainExe.exe"
     
      Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
      Delete "$SMPROGRAMS\$ICONS_GROUP\Website.lnk"
      Delete "$DESKTOP\Моя программа.lnk"
      Delete "$SMPROGRAMS\$ICONS_GROUP\Моя программа.lnk"
     
      RMDir "$SMPROGRAMS\$ICONS_GROUP"
      RMDir "$INSTDIR"
     
      DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
      DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
      SetAutoClose true
    SectionEnd

    Ответы на вопросы даны в комментариях.

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

    Всего записей: 33232 | Зарегистр. 31-07-2002 | Отправлено: 23:27 07-03-2009
    Открыть новую тему     Написать ответ в эту тему

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