| ;Знак ; означает,что эта строка информационная и не будет задействована в компиляции. [Setup] ;Основные директивы секции можно задать с помощью мастера,встроенного в программу. AppName=MyMod ;Название мода. AppVerName=MyMod версия 1.4 ;Версия мода.Обязательно должна иметь значение AppName и номер версии. DefaultDirName={pf} ;Выбор пути установки через "Обзор".В данном случае по умолчанию будет предложено установить программу в Program Files.Константа {pf}. ;Может иметь вид DefaultDirName={pf}\MyMod. DefaultGroupName=MyMod ;Директива,которая определяет имя группы меню Пуск по умолчанию. OutputDir=C:\Documents and Settings\user\Рабочий стол ;Куда будет помещен скомпилированный инсталлятор. OutputBaseFilename=MyMod версия 1.4 ;Задаётся имя получаемого инсталлятора. Compression=lzma ;Метод сжатия. SolidCompression=yes ;Уплотненное сжатие. AppendDefaultDirName=no ;При значении yes,при выборе пути установки через "Обзор" автоматически добавляется папка с именем взятым из DefaultDirName. ;Например (при значении yes) DefaultDirName={pf}\MyMod,при выборе в "Обзоре" D:\Games получаем D:\Games\MyMod. DirExistsWarning=no ;При значении yes инсталлятор всегда будет выдавать сообщение "Папка: … уже существует."Вы хотите продолжить установку в эту папку?" при попытке установки в существующую папку. ShowComponentSizes=yes ;При значении yes будет показываться размер компонентов в списке выбора компонентов. InfoBeforeFile="C:\Documents and Settings\User\Рабочий стол\Папка с файлами для инсталляции\MyInfoBefore.txt" ;В этом текстовике можете поместить нужную для устоновки информацию... . ;Будет отображаться перед страницей выбора папки установки в окне инсталлятора. ;Файл MyInfoBefore.txt связан с секцией [Files]. [Languages] Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl" ;Выбор языка.Без этой секции,язык интерфейса мастера установки будет английский. [Files] Source: "C:\Documents and Settings\User\Рабочий стол\Папка с файлами для инсталляции\MyInfoBefore.txt"; DestDir: "{app}" ;Source: Полный путь,откуда берётся файл для компиляции. ;DestDir: Куда должен установиться файл в системе пользователя. ;Константа "{app}" означает,что папка,куда должен установиться файл выбирается пользователем в окне выбора папки назначения. ;В данном примере константе "{app}" будет присвоено значение "D:\Games\SEGA\Medieval II Total War"(D:-диск пользователя,где установлена игра). Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs overwritereadonly ;Знак * означает,что из папки \data\ берутся все файлы. ;Flags: ignoreversion Установить файл,который уже установлен в системе пользователя.Перемещает существующие файлы,не обращая внимание на номера версий. ;Flags: recursesubdirs Указывает искать файлы с тем же именем в подпапках папки,указанной в параметре Source. ;Flags: overwritereadonly Всегда перезаписывает файл с отметкой "только для чтения". ;Все флаги подробно описаны в хелпе,который идёт с программой. Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\MyMod\*"; DestDir: "{app}\MyMod"; Flags: ignoreversion recursesubdirs overwritereadonly Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\MyMod.cfg"; DestDir: "{app}"; Flags: ignoreversion Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\export_descr_buildings.txt"; Components: A; DestDir: "{app}\MyMod\data\"; Flags: ignoreversion recursesubdirs overwritereadonly Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\descr_strat.txt"; Components: A; DestDir: "{app}\MyMod\data\world\maps\campaign\imperial_campaign\"; Flags: ignoreversion recursesubdirs overwritereadonly Source: "C:\Documents and Settings\user\Рабочий стол\Папка с файлами для инсталляции\export_descr_unit.txt"; Components: A; DestDir: "{app}\MyMod\data\"; Flags: ignoreversion recursesubdirs overwritereadonly ;Компоненты,которые пользователь может установить на выбор.В данном случае все три файла принадлежат одному компоненту А,который описан в секции [Components]. [Icons] Name: {userdesktop}\MyMod.exe; Filename: "{app}\medieval2.exe"; Parameters: " @MyMod.cfg"; WorkingDir: "{app}"; Tasks: DesktopIcon ;Name: Имя и расположение создаваемого ярлыка.В данном примере ярлык MyMod.exe будет помещен на рабочем столе,константа{userdesktop}.В свойствах ярлыка получаем "D:\Games\SEGA\Medieval II Total War\medieval2.exe" @MyMod.cfg ;Filename: Полный путь к файлу, на который указывает ярлык. ;Parameters: Параметры командной строки для ярлыка. ;WorkingDir: Папка,из которой запускается программа. ;Tasks: Вызывает задание,описанное в секции [Tasks]. Name: {userdesktop}\Удалить MyMod.exe; Filename: "{app}\unins000.exe"; WorkingDir: "{app}"; Tasks: DesktopIcon [Tasks] Name: src; Description: "Сохранить оригинальные файлы игры"; Flags: exclusive ;Делаем Backup через секцию [Code]. ;Description: Описание компонента. ;Flags: exclusive Пользователь не сможет отменить выбор этого пункта. Name: "DesktopIcon"; Description: "Создать ярлык MyMod на рабочем столе"; Flags: unchecked Name: "DesktopIcon"; Description: "Создать ярлык удалить MyMod на рабочем столе"; Flags: unchecked ;Flags: unchecked По умолчанию компонент не будет выбран(галочка снята). [Types] ;Секция определяет типы установки. Name: "viborochnaya"; Description: "Выбрать компоненты"; Flags: iscustom ;Flags: iscustom Указывает инсталятору,что тип является выборочным. [Components] Name: "A"; Description: "Обычные цены на строительство и юнитов"; Types: viborochnaya [Code] function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall'; procedure CreateBackup; var srcFile, destFile: string; basePath, shortPath: string; begin if IsTaskSelected('src') then begin basePath := ExpandConstant('{app}'); srcFile := ExpandConstant(CurrentFileName); shortPath := srcFile; StringChangeEx(shortPath, basePath, '', True); destFile := ExpandConstant('{app}\Backup') + shortPath; ForceDirectories(ExtractFilePath(destFile)); MoveFile(PChar(srcFile), PChar(destFile)); end; end;
|