Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Собственная инсталяция 
Author Message
hackrus



PostPosted: Tue Oct 18, 2005 06:33    Post subject: Reply with quote


Ну, самое простое в NSIS создать самораспаковывающийся архив (не путать с инсталляцией). Делается это так: берешь папку с Тоталом архивируешь Zip`ом так, чтобы файл приложения был в корне архива, а потом берешь zip2.exe из NSIS`а и создаешь самораспаковывающийся архив Smile(типа инсталляшки Very Happy ). От себя замечу, что в 2.08-2.09, можно использовать солид Lzma сжатие. Это иногда хорошо дожимает вес Smile. Делается это так:

- в программных файлах NSIS`а заходишь в папку Contrib\zip2exe, ищешь файл Base.nsh, открываешь блокнотом. Находишь строку: «SetCompressor lzma» и заменяешь на «SetCompressor /solid lzma»

- чтобы самораспаковывающийся архив был русским в файле Modern.nsh заменяешь «!insertmacro MUI_LANGUAGE "English"» на «!insertmacro MUI_LANGUAGE "Russian"»
После этих операций ты без проблем сможешь конвертировать zip-архивы в exe с высокой степенью сжатия Very Happy

Теперь о самой инсталляции:
Сложность инсталляции и набор функций зависит ТОЛЬКО от тебя Smile, я лишь здесь приведу небольшой пример как это можно сделать.

И так преступим:

Берешь блокнот и создаешь файл (типа 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" ; - выбераем русский Very Happy

; Секции компонентов для установки

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 Smile"
!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

Ну вот наверное и все самое основное.... Very Happy Здесь я правда не описал действия с ini-файлами... Это может потребоватьсь для подглючения плагинов к Тоталу... Это как-нибудь в другой раз... Smile Если возникнут вопросы - пиши на мыло hackrus@narod.ru или в аську 334-590-563

P.S. Самое удобное создавать скрипты в HM NIS Edit http://hmne.sourceforge.net/, хотя тоже не плохая программа и Venis IX http://www.spaceblue.com/venis/ - Это кому как нравиться Very Happy
View user's profile Send private message Send e-mail ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group