Руководство пользователя NSIS 2.46
Полный документ вы можете скачать по указанной выше ссылке. Некоторые разделы можно посмотреть
он-лайн.
Перевод выполнен лично мной, поэтому найти его вы можете только на сайте av-mag.ru.
Конечно, со временем всё это разворуют и разместят на других сайтах. Видно далеко нам ещё до
цивилизованных отношений. Зато все кричат о нечестных выборах...
Создание инсталляторов - задача непростая. Если вы захотите создать инсталлятор
самостоятельно, то вам потребуется досканально изучить методы сжатия данных, функции и особенности
операционной системы, где будет устанавливаться программа и многое другое. Однако есть программы, подобные
NSIS, которые упрощают процесс создания инсталлятора до минимума. Одним из преимуществ NSIS является то, что
она создана професиионалами и при этом совершенно бесплатна. Подробности см. в документации, скачать которую можно также бесплатно
по указанной выше ссылке. А ниже приводится содержание этого документа.
СОДЕРЖАНИЕ
1. ВВЕДЕНИЕ В NSIS ................................................ 11
1.1. Об NSIS ................................................... 11
1.2. Основные возможности ..................................... 11
1.3. Список возможностей ....................................... 13
2. ОСНОВЫ ......................................................... 14
2.1. Введение .................................................. 14
2.2. Файлы сценариев ........................................... 14
2.3. Структура сценария ........................................ 15
2.3.1. Атрибуты инсталлятора .............................. 15
2.3.2. Страницы ........................................... 15
2.3.3. Разделы ............................................ 16
2.3.4. Функции ............................................ 16
2.3.5. Работа со сценариями ............................... 17
2.3.5.1. Логическая структура кода ................. 17
2.3.5.2. Переменные ................................ 19
2.3.5.3. Отладка сценариев ......................... 19
2.3.6. Выполнение сценария ................................ 20
2.3.7. Команды компилятора ................................ 20
2.4. Компилятор ................................................ 21
2.5. Modern UI ................................................. 21
2.6. Плагины ................................................... 21
2.7. Прочее .................................................... 22
3. ИСПОЛЬЗОВАНИЕ КОМАНДНОЙ СТРОКИ ................................. 23
3.1. Использование MakeNSIS .................................... 23
3.1.1. Опции .............................................. 23
3.1.2. Примечания ......................................... 23
3.1.3. Переменные окружения ............................... 24
3.1.4. Примеры ............................................ 24
3.2. Использование инсталлятора ................................ 24
3.2.1. Общие опции ........................................ 24
3.2.2. Специфические опции деинсталлятора ................. 25
3.2.3. Примеры ............................................ 25
4. СПРАВОЧНЫЕ МАТЕРИАЛЫ ........................................... 26
4.1. Формат файла сценария ..................................... 26
4.2. Переменные ................................................ 28
4.2.1. Пользовательские переменные ........................ 28
4.2.1.1. Команда Var ............................... 28
4.2.2. Другие записываемые переменные ..................... 28
4.2.3. Константы .......................................... 29
4.2.4. Константы, используемые в строках .................. 34
4.3. Метки ..................................................... 34
4.4. Относительные переходы .................................... 34
4.5. Страницы .................................................. 35
4.5.1. Очерёдность ........................................ 35
4.5.2. Опции страницы ..................................... 36
4.5.3. Обратный вызов ..................................... 37
4.5.4. Страница ........................................... 38
4.5.6. PageEx ............................................. 38
4.5.7. PageExEnd .......................................... 38
4.5.8. PageCallBacks ...................................... 39
4.6. Разделы ................................................... 39
4.6.1. Раздел команд (Commands) ........................... 39
4.6.1.1. AddSize ................................... 39
4.6.1.2. Section ................................... 39
4.6.1.3. SectionEnd ................................ 40
4.6.1.4. SectionIn ................................. 40
4.6.1.5. SectionGroup .............................. 41
4.6.1.6. SectionGroupEnd ........................... 41
4.6.2. Раздел деинсталляции ............................... 41
4.7. Функции ................................................... 42
4.7.1. Команды функций .................................... 42
4.7.1.1. Function .................................. 42
4.7.1.2. FunctionEnd ............................... 42
4.7.2. Функции обратного вызова ........................... 42
4.7.2.1. Функции обратного вызова инсталлятора ..... 42
4.7.2.1.1. .onGUIInit ..................... 42
4.7.2.1.2. .onInit ........................ 43
4.7.2.1.3. .onInstFailed .................. 43
4.7.2.1.4. .onInstSuccess ................. 43
4.7.2.1.5. .onGUIEnd ...................... 44
4.7.2.1.6. .onMouseOverSection ............ 44
4.7.2.1.8. .onSelChange ................... 44
4.7.2.1.9. .onUserAbort ................... 45
4.7.2.1.10. .onVerifyInstDir .............. 45
4.7.2.2. Функции обратного вызова деинсталлятора ... 45
4.7.2.2.1. un.onGUIInit ................... 45
4.7.2.2.2. un.onInit ...................... 45
4.7.2.2.3. un.onUninstFailed .............. 46
4.7.2.2.4. un.onUninstSuccess ............. 46
4.7.2.2.5. un.onGUIEnd .................... 46
4.7.2.2.6. un.onRebootFailed .............. 46
4.7.2.2.7. un.onSelChange ................. 47
4.7.2.2.8. un.onUserAbort ................. 47
4.8. Атрибуты инсталлятора ..................................... 47
4.8.1. Основные атрибуты .................................. 47
4.8.1.1. AddBrandingImage .......................... 47
4.8.1.2. AllowRootDirInstall ....................... 48
4.8.1.3. AutoCloseWindow ........................... 48
4.8.1.4. BGFont .................................... 48
4.8.1.6. BrandingText .............................. 48
4.8.1.7. Caption ................................... 49
4.8.1.8. ChangeUI .................................. 49
4.8.1.9. CheckBitmap ............................... 49
4.8.1.10. CompletedText ............................ 50
4.8.1.12. CRCCheck ................................. 50
4.8.1.13. DetailsButtonText ........................ 50
4.8.1.14. DirText .................................. 50
4.8.1.15. DirVar ................................... 51
4.8.1.16. DirVerify ................................ 51
4.8.1.17. FileErrorText ............................ 52
4.8.1.18. Icon ..................................... 52
4.8.1.19. InstallButtonText ........................ 52
4.8.1.20. InstallColors ............................ 52
4.8.1.21. InstallDir ............................... 52
4.8.1.22. InstallDirRegKey ......................... 53
4.8.1.23. InstProgressFlags ........................ 53
4.8.1.24. InstType ................................. 53
4.8.1.25. LicenseBkColor ........................... 54
4.8.1.26. LicenseData .............................. 54
4.8.1.27. LicenseForceSelection .................... 54
4.8.1.28. LicenseText .............................. 54
4.8.1.29. MiscButtonText ........................... 55
4.8.1.30. Name ..................................... 55
4.8.1.31. OutFile .................................. 55
4.8.1.32. RequestExecutionLevel .................... 55
4.8.1.33. SetFont .................................. 56
4.8.1.34. ShowInstDetails .......................... 56
4.8.1.35. ShowUninstDetails ........................ 56
4.8.1.36. SilentInstall ............................ 57
4.8.1.37. SilentUnInstall .......................... 57
4.8.1.38. SpaceTexts ............................... 57
4.8.1.39. SubCaption ............................... 57
4.8.1.40. UninstallButtonText ...................... 58
4.8.1.41. UninstallCaption ......................... 58
4.8.1.42. UninstallIcon ............................ 58
4.8.1.43. UninstallSubCaption ...................... 58
4.8.1.44. UninstallText ............................ 59
4.8.1.45. WindowIcon ............................... 59
4.8.1.46. XPStyle .................................. 59
4.8.2. Флаги компилятора .................................. 59
4.8.2.1. AllowSkipFiles ............................ 60
4.8.2.2. FileBufSize ............................... 60
4.8.2.3. SetCompress ............................... 60
4.8.2.4. SetCompressor ............................. 60
4.8.2.5. SetCompressorDictSize ..................... 61
4.8.2.6. SetDatablockOptimize ...................... 61
4.8.2.7. SetDateSave ............................... 61
4.8.2.8. SetOverwrite .............................. 62
4.8.3. Информация о версии ................................ 62
4.8.3.1. VIAddVersionKey ........................... 62
4.8.3.2. VIProductVersion .......................... 63
4.9. Инструкции ................................................ 63
4.9.1. Основные инструкции ................................ 63
4.9.1.1. Delete .................................... 63
4.9.1.2. Exec ...................................... 63
4.9.1.3. ExecShell ................................. 64
4.9.1.4. ExecWait .................................. 64
4.9.1.5. File ...................................... 64
4.9.1.6. Rename .................................... 66
4.9.1.7. ReserveFile ............................... 66
4.9.1.8. RMDir ..................................... 66
4.9.1.9. SetOutPath ................................ 67
4.9.2. Инструкции реестра, файлов, INI-файлов ............. 67
4.9.2.1. DeleteINISec .............................. 67
4.9.2.2. DeleteINIStr .............................. 68
4.9.2.3. DeleteRegKey .............................. 68
4.9.2.5. EnumRegKey ................................ 68
4.9.2.5. EnumRegKey ................................ 68
4.9.2.6. EnumRegValue .............................. 69
4.9.2.7. ExpandEnvStrings .......................... 69
4.9.2.8. FlushINI .................................. 69
4.9.2.9. ReadEnvStr ................................ 69
4.9.2.10. ReadINIStr ............................... 70
4.9.2.11. ReadRegDWORD ............................. 70
4.9.2.12. ReadRegStr ............................... 70
4.9.2.13. WriteINIStr .............................. 70
4.9.2.14. WriteRegBin .............................. 71
4.9.2.15. WriteRegDWORD ............................ 71
4.9.2.16. WriteRegStr .............................. 71
4.9.2.17. WriteRegExpandStr ........................ 71
4.9.3. Инструкции общего назначения ....................... 72
4.9.3.1. CallInstDLL ............................... 72
4.9.3.2. CopyFiles ................................. 72
4.9.3.3. CreateDirectory ........................... 72
4.9.3.4. CreateShortCut ............................ 73
4.9.3.5. GetDLLVersion ............................. 73
4.9.3.6. GetDLLVersionLocal ........................ 73
4.9.3.7. GetFileTime ............................... 74
4.9.3.8. GetFileTimeLocal .......................... 74
4.9.3.9. GetFullPathName ........................... 74
4.9.3.10. GetTempFileName .......................... 74
4.9.3.11. SearchPath ............................... 75
4.9.3.12. SetFileAttributes ........................ 75
4.9.3.13. RegDLL ................................... 75
4.9.3.14. UnRegDLL ................................. 76
4.9.4. Инструкции управления сценарием .................... 76
4.9.4.1. Abort ..................................... 76
4.9.4.2. Call ...................................... 76
4.9.4.3. ClearErrors ............................... 76
4.9.4.4. GetCurrentAddress ......................... 77
4.9.4.5. GetFunctionAddress ........................ 77
4.9.4.6. GetLabelAddress ........................... 77
4.9.4.7. Goto ...................................... 78
4.9.4.8. IfAbort ................................... 78
4.9.4.9. IfErrors .................................. 79
4.9.4.10. IfFileExists ............................. 79
4.9.4.11. IfRebootFlag ............................. 79
4.9.4.12. IfSilent ................................. 79
4.9.4.13. IntCmp ................................... 80
4.9.4.14. IntCmpU .................................. 80
4.9.4.15. MessageBox ............................... 80
4.9.4.16. Return ................................... 81
4.9.4.17. Quit ..................................... 81
4.9.4.18. SetErrors ................................ 82
4.9.4.19. StrCmp ................................... 82
4.9.4.20. StrCmpS .................................. 82
4.9.5. Файловые инструкции ................................ 82
4.9.5.1. FileClose ................................. 82
4.9.5.2. FileOpen .................................. 82
4.9.5.3. FileRead .................................. 83
4.9.5.4. FileReadByte .............................. 83
4.9.5.5. FileSeek .................................. 83
4.9.5.6. FileWrite ................................. 84
4.9.5.7. FileWriteByte ............................. 84
4.9.5.8. FindClose ................................. 84
4.9.5.9. FindFirst ................................. 84
4.9.5.10. FindNext ................................. 85
4.9.6. Инструкции деинсталлятора .......................... 85
4.9.6.1. WriteUninstaller .......................... 85
4.9.7. Разные инструкции .................................. 85
4.9.7.1. GetErrorLevel ............................. 85
4.9.7.2. GetInstDirError ........................... 85
4.9.7.3. InitPluginsDir ............................ 86
4.9.7.4. Nop ....................................... 86
4.9.7.5. SetErrorLevel ............................. 86
4.9.7.6. SetRegView ................................ 86
4.9.7.7. SetShellVarContext ........................ 87
4.9.7.8. Sleep ..................................... 87
4.9.8. Инструкции строковых операций ...................... 88
4.9.8.1. StrCpy .................................... 88
4.9.8.2. StrLen .................................... 88
4.9.9. Поддержка стека .................................... 88
4.9.9.1. Exch ...................................... 88
4.9.9.2. Pop ....................................... 89
4.9.9.3. Push ...................................... 89
4.9.10. Поддержка целых чисел ............................. 89
4.9.10.1. IntFmt ................................... 89
4.9.10.2. IntOp .................................... 89
4.9.11. Инструкции перезагрузки ........................... 90
4.9.11.1. Reboot ................................... 90
4.9.11.2. SetRebootFlag ............................ 90
4.9.12. Инструкции протоколирования ....................... 90
4.9.12.1. LogSet ................................... 90
4.9.12.2. LogText .................................. 90
4.9.13. Управление разделом ............................... 91
4.9.13.1. SectionSetFlags .......................... 91
4.9.13.2. SectionGetFlags .......................... 91
4.9.13.3. SectionSetText ........................... 92
4.9.13.4. SectionGetText ........................... 92
4.9.13.5. SectionSetInstTypes ...................... 92
4.9.13.6. SectionGetInstTypes ...................... 93
4.9.13.7. SectionSetSize ........................... 93
4.9.13.8. SectionGetSize ........................... 93
4.9.13.9. SetCurInstType ........................... 94
4.9.13.10. GetCurInstType .......................... 94
4.9.13.11. InstTypeSetText ......................... 94
4.9.13.12. InstTypeGetText ......................... 94
4.9.14. Инструкции пользовательского интерфейса ........... 95
4.9.14.1. BringToFront ............................. 95
4.9.14.2. CreateFont ............................... 95
4.9.14.3. DetailPrint .............................. 95
4.9.14.4. EnableWindow ............................. 95
4.9.14.5. FindWindow ............................... 96
4.9.14.6. GetDlgItem ............................... 96
4.9.14.7. HideWindow ............................... 96
4.9.14.8. IsWindow ................................. 96
4.9.14.9. LockWindow ............................... 96
4.9.14.10. SendMessage ............................. 97
4.9.14.11. SetAutoClose ............................ 97
4.9.14.12. SetBrandingImage ........................ 97
4.9.14.13. SetDetailsView .......................... 98
4.9.14.14. SetDetailsPrint ......................... 98
4.9.14.15. SetCtlColors ............................ 98
4.9.14.16. SetSilent ............................... 98
4.9.14.17. ShowWindow .............................. 99
4.9.15. Инструкции поддержки языков ....................... 99
4.9.15.1. LoadLanguageFile ......................... 99
4.9.15.2. LangString ............................... 99
4.9.15.3. LicenseLangString ........................ 100
4.10. Поддержка языков ......................................... 100
4.10.1. Выбор языка ....................................... 100
4.10.2. Плагин LangDLL .................................... 101
4.10.3. Языки RTL ......................................... 101
4.11. Плагины DLL .............................................. 101
4.11.1. Использование команд плагинов ..................... 101
4.11.2. Вызов плагинов вручную ............................ 102
4.12. Тихие инсталляторы/деинсталляторы ........................ 102
5. КОМАНДЫ ВРЕМЕНИ КОМПИЛЯЦИИ ..................................... 104
5.1. Команды-утилиты компилятора ............................... 104
5.1.1. !include ........................................... 104
5.1.2. !addincludedir ..................................... 104
5.1.3. !addplugindir ...................................... 104
5.1.4. !appendfile ........................................ 105
5.1.5. !cd ................................................ 105
5.1.6. !delfile ........................................... 105
5.1.7. !echo .............................................. 105
5.1.8. !error ............................................. 105
5.1.9. !execute ........................................... 106
5.1.10. !packhdr .......................................... 106
5.1.11. !system ........................................... 106
5.1.12. !tempfile ......................................... 106
5.1.13. !warning .......................................... 107
5.1.14. !verbose .......................................... 107
5.2. Предопределения ........................................... 107
5.2.1. ${__FILE__} ........................................ 107
5.2.2. ${__LINE__} ........................................ 108
5.2.3. ${__DATE__} ........................................ 108
5.2.4. ${__TIME__} ........................................ 108
5.2.5. ${__TIMESTAMP__} ................................... 108
5.2.6. ${NSIS_VERSION} .................................... 108
5.2.7. Предопределения областей ........................... 108
5.2.7.1. ${__GLOBAL__} ............................. 108
5.2.7.2. ${__SECTION__} ............................ 109
5.2.7.3. ${__FUNCTION__} ........................... 109
5.2.7.4. ${__PAGEEX__} ............................. 110
5.2.7.5. ${__UNINSTALL__} .......................... 110
5.3. Чтение переменных окружения ............................... 110
5.3.1. $%envVarName% ...................................... 110
5.4. Условная компиляция ....................................... 111
5.4.1. !define ............................................ 111
5.4.2. !undef ............................................. 111
5.4.3. !ifdef ............................................. 112
5.4.4. !ifndef ............................................ 112
5.4.5. !if ................................................ 112
5.4.6. !ifmacrodef ........................................ 113
5.4.7. !ifmacrondef ....................................... 113
5.4.8. !else .............................................. 113
5.4.9. !endif ............................................. 113
5.4.10. !insertmacro ...................................... 113
5.4.11. !macro ............................................ 114
5.4.12. !macroend ......................................... 114
5.4.13. !searchparse ...................................... 114
5.4.14. !searchreplace .................................... 115
ПРИЛОЖЕНИЕ А: СОВРЕМЕННЫЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ (MUI) ............ 116
ПРИЛОЖЕНИЕ B: Установка библиотек DLL/TLB ......................... 117
B.1. Введение .................................................. 117
B.2. Инсталляция библиотеки .................................... 117
B.2.1. Введение ........................................... 117
B.2.2. Параметры .......................................... 117
B.2.3. Опции .............................................. 119
B.2.3.1. LIBRARY_X64 ............................... 119
B.2.3.2. LIBRARY_SHELL_EXTENSION ................... 119
B.2.3.3. LIBRARY_COM ............................... 119
B.2.3.4. LIBRARY_IGNORE_VERSION .................... 119
B.2.4. Примечания ......................................... 119
B.2.5. Пример ............................................. 119
B.2.5.1. НЕ общедоступная DLL ...................... 119
B.2.5.2. Общедоступная DLL ......................... 120
B.3. Деинсталляция библиотеки .................................. 120
B.3.1. Введение ........................................... 120
B.3.2. Параметры .......................................... 120
B.3.3. Опции .............................................. 121
B.3.3.1. LIBRARY_X64 ............................... 121
B.3.3.2. LIBRARY_SHELL_EXTENSION ................... 121
B.3.3.3. LIBRARY_COM ............................... 121
B.3.4. Пример ............................................. 122
B.4. Файлы времени выполнения Visual Basic 6 ................... 122
ПРИЛОЖЕНИЕ C: Полезные сценарии ................................... 123
C.1. Получение версии Internet Explorer ........................ 123
C.2. Проверка установки .NET Framework ......................... 124
C.3. Проверка установки Macromedia Flash Player ................ 124
C.4. Подключение к Интернет .................................... 125
C.5. Получение имени файла инсталлятора ........................ 125
C.6. Предотвращение повторного запуска инсталлятора ............ 125
С.7. Другие .................................................... 126
ПРИЛОЖЕНИЕ D: Полезная информация ................................. 127
D.1. Уровни ошибок ............................................. 127
D.2. Добавление информации деинсталляции
для программ добавления/удаления .......................... 127
D.3. Вызов внешних DLL с помощью плагина System.dll ............ 128
D.4. Запись в файл дампа содержимого Log Window ................ 131
D.5. Как прочитать значения REG_MULTI_SZ ....................... 132
ПРИЛОЖЕНИЯ E, F, G, H, I .......................................... 135