Single Post |
Topic: Собственная инсталяция |
Author |
Message |
hackrus
|
Posted: Tue Oct 18, 2005 06:33 Post subject: |
|
|
Ну, самое простое в NSIS создать самораспаковывающийся архив (не путать с инсталляцией). Делается это так: берешь папку с Тоталом архивируешь Zip`ом так, чтобы файл приложения был в корне архива, а потом берешь zip2.exe из NSIS`а и создаешь самораспаковывающийся архив (типа инсталляшки ). От себя замечу, что в 2.08-2.09, можно использовать солид Lzma сжатие. Это иногда хорошо дожимает вес . Делается это так:
- в программных файлах NSIS`а заходишь в папку Contrib\zip2exe, ищешь файл Base.nsh, открываешь блокнотом. Находишь строку: «SetCompressor lzma» и заменяешь на «SetCompressor /solid lzma»
- чтобы самораспаковывающийся архив был русским в файле Modern.nsh заменяешь «!insertmacro MUI_LANGUAGE "English"» на «!insertmacro MUI_LANGUAGE "Russian"»
После этих операций ты без проблем сможешь конвертировать zip-архивы в exe с высокой степенью сжатия
Теперь о самой инсталляции:
Сложность инсталляции и набор функций зависит ТОЛЬКО от тебя , я лишь здесь приведу небольшой пример как это можно сделать.
И так преступим:
Берешь блокнот и создаешь файл (типа install_total.nsi) и прописываешь следующее :
Name "Total Commander XP" ; - название инсталляции
OutFile "setup_total.exe" ; - имя выходного файла инсталляции
InstallDir "$PROGRAMFILES\Total Commander XP" ; - папка инсталляции программы по умалчиванию
InstallDirRegKey HKCU "Software\Total Commander XP" "" ; - ключ в реестре для установки
InstType "Полная" ; - тип установки
InstType "Минимальная" ; - тип установки
SetCompressor /solid lzma ; - использовать непрерывное сжатие Lzma
SetDatablockOptimize on ; - включить оптимизацию данных блока
CRCCheck off ; - не проверять контрольную сумму инсталлятора
WindowIcon off ; - выключаем иконку у окна инсталлятора
XPStyle on ; - включаем использование стиля XP
SetOverwrite on ; - возможность перезаписи файлов включена
AllowRootDirInstall false ; - отменяем возможность установки программы в корень
AutoCloseWindow false ; - отмена автозакрытия инсталлятора после выполнения всех действий
!include "MUI.nsh" ; - это модуль "модной" оболочки
; Настройка интерфейса
BrandingText "Total Commander" ; - текст внизу инсталляции
BGGradient 0x0000FF 0x000080 0x0080FF ; - устанавливаем фон установки (верхний/нижний/цвет текста)
!define MUI_HEADERIMAGE ; - возможность запихнуть в заголовок рисунок
!define MUI_HEADERIMAGE_BITMAP "modern-header.bmp" ; - сам рисунок в заголовке
!define MUI_HEADERIMAGE_RIGHT ; - рисунок в заголовке будет находиться справа
!define MUI_ICON "Install.ico" ; - иконка инсталлятора
!define MUI_UNICON "UnInstall.ico" ; - иконка деинсталлятора
!define MUI_COMPONENTSPAGE_SMALLDESC ; - увеличивает место под компоненты
!define MUI_ABORTWARNING ; - предупреждать об отмене установки
!define MUI_LICENSEPAGE_RADIOBUTTONS ; - Использовать радиокнопки на странице лицензии
; Страницы установки
!insertmacro MUI_PAGE_WELCOME ; - Страница приветствия
!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" ; - Страница с лицензией
!insertmacro MUI_PAGE_COMPONENTS ; - страница компонентов
!insertmacro MUI_PAGE_DIRECTORY ; - страница выбора папки установки
Var MUI_TEMP ; - две переменные для хранения пути для ярлыков в меню Пуск
Var STARTMENU_FOLDER
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Total Commander XP"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Label"
!insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER ; - страница с выбором группы ярлыков
!insertmacro MUI_PAGE_INSTFILES ; - страница хода выполнения установки
!insertmacro MUI_UNPAGE_CONFIRM ; - страница проверки пути деинсталлятором
!insertmacro MUI_UNPAGE_INSTFILES; - страница хода выполнения удаления
;Языки
!insertmacro MUI_LANGUAGE "Russian" ; - выбераем русский
; Секции компонентов для установки
Section "Total Commander" Total ; - Секция установки основной программы со ссылкой на описание
SectionIn RO ; - Секция только для чтения, т.е. ее нельзя отключить
SetOutPath "$INSTDIR" ;папка для выполнения операций
File "TOTALCMD.EXE" ; Распаковываем этот файл в папку $INSTDIR
;Создание ярлыков
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Total Commander XP" "$INSTDIR\TOTALCMD.EXE"
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Удаление Total Commander XP.lnk" "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_END
;Сохраняем путь к программе в реестре
WriteRegStr HKCU "Software\Total Commander XP" "" "$INSTDIR"
;Создаем uninstall'ятор и записываем его в папку, куда устанавливаем программу
WriteUninstaller "$INSTDIR\Uninstall.exe"
SectionEnd ; - так заканчивается любая из секций
Section !Плагины Plugins ; - Знак "!" означает, что пункт жирным текстом
SectionIn 1 ; - Принадлежность секции к полной установки
SetOutPath "$INSTDIR\Plugins\" ;папка для выполнения операций
File "Plugin.exe" ; - Распаковываем этот файл в папку $INSTDIR\Plugins
SectionEnd
; Описания программых модулей
; В этой секции написаны макросы, которые позволяют при наведении на компонент для установки показывать его
; описание
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${Total} "Здесь сам Total "
!insertmacro MUI_DESCRIPTION_TEXT ${Plugins} "А здесь плугу к нему"
!insertmacro MUI_FUNCTION_DESCRIPTION_END
Section "Uninstall" ; данная секция необходима для описания деинсталлятора
Delete "$INSTDIR\Uninstall.exe" ; удаление файлов
Delete "$INSTDIR\Plugins\Plugin.exe"
Delete "$INSTDIR\TOTALCMD.exe"
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP ; выдираем из реестра путь к ярлыкам и удаляем их
Delete "$SMPROGRAMS\$MUI_TEMP\Total Commander XP"
Delete "$SMPROGRAMS\$MUI_TEMP\Удаление Total Commander XP.lnk"
;Удаляем ненужные пункты меню Пуск
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
startMenuDeleteLoop:
RMDir $MUI_TEMP
GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
IfErrors startMenuDeleteLoopDone
StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
startMenuDeleteLoopDone:
RMDir "$INSTDIR\Plugins\" ; - Удаляем папки (пустые)
RMDir "$INSTDIR"
DeleteRegKey /ifempty HKCU "Software\Total Commander XP" ; удаляем ключ из реестра...
SectionEnd
Ну вот наверное и все самое основное.... Здесь я правда не описал действия с ini-файлами... Это может потребоватьсь для подглючения плагинов к Тоталу... Это как-нибудь в другой раз... Если возникнут вопросы - пиши на мыло hackrus@narod.ru или в аську 334-590-563
P.S. Самое удобное создавать скрипты в HM NIS Edit http://hmne.sourceforge.net/, хотя тоже не плохая программа и Venis IX http://www.spaceblue.com/venis/ - Это кому как нравиться  |
|
|
|
 |
|
Powered by phpBB © 2001, 2005 phpBB Group
|