lps-файл удалён и добавлен в gitignore. Почти готов механизм подгрузки списков пакетов на старте
This commit is contained in:
parent
1f20268830
commit
63823b8e6e
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,3 +8,4 @@
|
|||||||
*.ppu
|
*.ppu
|
||||||
*.obj
|
*.obj
|
||||||
*.o
|
*.o
|
||||||
|
*.lps
|
||||||
|
@ -91,7 +91,7 @@
|
|||||||
<Unit2>
|
<Unit2>
|
||||||
<Filename Value="dmain.pas"/>
|
<Filename Value="dmain.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="MainDM"/>
|
<ComponentName Value="dmMain"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="DataModule"/>
|
<ResourceBaseClass Value="DataModule"/>
|
||||||
<UnitName Value="dMain"/>
|
<UnitName Value="dMain"/>
|
||||||
|
34
ABTool.lpr
34
ABTool.lpr
@ -16,42 +16,10 @@ uses {$IFDEF UNIX} {$IFDEF UseCThreads}
|
|||||||
|
|
||||||
{$R *.res}
|
{$R *.res}
|
||||||
|
|
||||||
var
|
|
||||||
// путь к файлу ABTool.exe
|
|
||||||
ABToolExePath: String;
|
|
||||||
|
|
||||||
// путь к директории ABTool
|
|
||||||
ABToolDataPath: String;
|
|
||||||
|
|
||||||
// путь к директории ABTool\Packages
|
|
||||||
ABToolPkgPath: String;
|
|
||||||
|
|
||||||
// путь к директории ABTool\Languages
|
|
||||||
ABToolLangPath: String;
|
|
||||||
|
|
||||||
// путь к директории ABTool\Logs
|
|
||||||
ABToolLogPath: String;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
RequireDerivedFormResource := True;
|
RequireDerivedFormResource := True;
|
||||||
Application.Initialize;
|
Application.Initialize;
|
||||||
|
Application.CreateForm(TdmMain, dmMain);
|
||||||
// настройка путей к директориям
|
|
||||||
ABToolExePath := ExtractFilePath(ParamStr(0));
|
|
||||||
ABToolDataPath := ABToolExePath + 'ABTool\';
|
|
||||||
ABToolPkgPath := ABToolDataPath + 'Packages\';
|
|
||||||
ABToolLangPath := ABToolDataPath + 'Languages\';
|
|
||||||
ABToolLogPath := ABToolDataPath + 'Logs\';
|
|
||||||
|
|
||||||
// подготовка директорий
|
|
||||||
if not DirectoryExists(ABToolPkgPath) then
|
|
||||||
ForceDirectories(ABToolPkgPath);
|
|
||||||
if not DirectoryExists(ABToolLangPath) then
|
|
||||||
ForceDirectories(ABToolLangPath);
|
|
||||||
if not DirectoryExists(ABToolLogPath) then
|
|
||||||
ForceDirectories(ABToolLogPath);
|
|
||||||
|
|
||||||
Application.CreateForm(TMainDM, MainDM);
|
|
||||||
Application.CreateForm(TfmMain, fMain.fmMain);
|
Application.CreateForm(TfmMain, fMain.fmMain);
|
||||||
Application.Run;
|
Application.Run;
|
||||||
end.
|
end.
|
||||||
|
239
ABTool.lps
239
ABTool.lps
@ -1,239 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<CONFIG>
|
|
||||||
<ProjectSession>
|
|
||||||
<PathDelim Value="\"/>
|
|
||||||
<Version Value="10"/>
|
|
||||||
<BuildModes Active="Debug"/>
|
|
||||||
<Units Count="10">
|
|
||||||
<Unit0>
|
|
||||||
<Filename Value="ABTool.lpr"/>
|
|
||||||
<IsPartOfProject Value="True"/>
|
|
||||||
<TopLine Value="34"/>
|
|
||||||
<CursorPos X="66" Y="56"/>
|
|
||||||
<UsageCount Value="66"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit0>
|
|
||||||
<Unit1>
|
|
||||||
<Filename Value="fmain.pas"/>
|
|
||||||
<IsPartOfProject Value="True"/>
|
|
||||||
<ComponentName Value="fmMain"/>
|
|
||||||
<HasResources Value="True"/>
|
|
||||||
<ResourceBaseClass Value="Form"/>
|
|
||||||
<UnitName Value="fMain"/>
|
|
||||||
<IsVisibleTab Value="True"/>
|
|
||||||
<EditorIndex Value="2"/>
|
|
||||||
<TopLine Value="44"/>
|
|
||||||
<CursorPos X="26" Y="56"/>
|
|
||||||
<UsageCount Value="66"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
<LoadedDesigner Value="True"/>
|
|
||||||
</Unit1>
|
|
||||||
<Unit2>
|
|
||||||
<Filename Value="dmain.pas"/>
|
|
||||||
<IsPartOfProject Value="True"/>
|
|
||||||
<ComponentName Value="MainDM"/>
|
|
||||||
<HasResources Value="True"/>
|
|
||||||
<ResourceBaseClass Value="DataModule"/>
|
|
||||||
<UnitName Value="dMain"/>
|
|
||||||
<EditorIndex Value="1"/>
|
|
||||||
<CursorPos X="50" Y="36"/>
|
|
||||||
<ComponentState Value="1"/>
|
|
||||||
<UsageCount Value="66"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
<LoadedDesigner Value="True"/>
|
|
||||||
</Unit2>
|
|
||||||
<Unit3>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<IsPartOfProject Value="True"/>
|
|
||||||
<UnitName Value="uFileUtils"/>
|
|
||||||
<EditorIndex Value="3"/>
|
|
||||||
<TopLine Value="13"/>
|
|
||||||
<CursorPos X="29" Y="5"/>
|
|
||||||
<UsageCount Value="43"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit3>
|
|
||||||
<Unit4>
|
|
||||||
<Filename Value="upackage.pas"/>
|
|
||||||
<IsPartOfProject Value="True"/>
|
|
||||||
<UnitName Value="uPackage"/>
|
|
||||||
<EditorIndex Value="4"/>
|
|
||||||
<TopLine Value="7"/>
|
|
||||||
<CursorPos X="3" Y="12"/>
|
|
||||||
<UsageCount Value="35"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit4>
|
|
||||||
<Unit5>
|
|
||||||
<Filename Value="upackageutils.pas"/>
|
|
||||||
<IsPartOfProject Value="True"/>
|
|
||||||
<UnitName Value="uPackageUtils"/>
|
|
||||||
<EditorIndex Value="6"/>
|
|
||||||
<CursorPos X="38"/>
|
|
||||||
<UsageCount Value="30"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit5>
|
|
||||||
<Unit6>
|
|
||||||
<Filename Value="upackagelist.pas"/>
|
|
||||||
<IsPartOfProject Value="True"/>
|
|
||||||
<UnitName Value="uPackageList"/>
|
|
||||||
<EditorIndex Value="5"/>
|
|
||||||
<CursorPos X="28"/>
|
|
||||||
<UsageCount Value="28"/>
|
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit6>
|
|
||||||
<Unit7>
|
|
||||||
<Filename Value="C:\Lazarus\lcl\include\custompage.inc"/>
|
|
||||||
<EditorIndex Value="-1"/>
|
|
||||||
<TopLine Value="253"/>
|
|
||||||
<CursorPos Y="266"/>
|
|
||||||
<UsageCount Value="5"/>
|
|
||||||
</Unit7>
|
|
||||||
<Unit8>
|
|
||||||
<Filename Value="upackagetypes.pas"/>
|
|
||||||
<UnitName Value="uPackageTypes"/>
|
|
||||||
<EditorIndex Value="-1"/>
|
|
||||||
<CursorPos Y="9"/>
|
|
||||||
<UsageCount Value="20"/>
|
|
||||||
</Unit8>
|
|
||||||
<Unit9>
|
|
||||||
<Filename Value="C:\Lazarus\lcl\interfaces\win32\win32listsl.inc"/>
|
|
||||||
<EditorIndex Value="-1"/>
|
|
||||||
<TopLine Value="114"/>
|
|
||||||
<CursorPos X="28" Y="121"/>
|
|
||||||
<UsageCount Value="9"/>
|
|
||||||
</Unit9>
|
|
||||||
</Units>
|
|
||||||
<JumpHistory Count="30" HistoryIndex="29">
|
|
||||||
<Position1>
|
|
||||||
<Filename Value="fmain.pas"/>
|
|
||||||
<Caret Line="61" TopLine="44"/>
|
|
||||||
</Position1>
|
|
||||||
<Position2>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="57" TopLine="43"/>
|
|
||||||
</Position2>
|
|
||||||
<Position3>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="31" TopLine="19"/>
|
|
||||||
</Position3>
|
|
||||||
<Position4>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="32" Column="33" TopLine="19"/>
|
|
||||||
</Position4>
|
|
||||||
<Position5>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="37" TopLine="19"/>
|
|
||||||
</Position5>
|
|
||||||
<Position6>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="40" TopLine="20"/>
|
|
||||||
</Position6>
|
|
||||||
<Position7>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="42" TopLine="22"/>
|
|
||||||
</Position7>
|
|
||||||
<Position8>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="35" TopLine="22"/>
|
|
||||||
</Position8>
|
|
||||||
<Position9>
|
|
||||||
<Filename Value="fmain.pas"/>
|
|
||||||
<Caret Line="58" Column="72" TopLine="40"/>
|
|
||||||
</Position9>
|
|
||||||
<Position10>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="84" Column="59" TopLine="66"/>
|
|
||||||
</Position10>
|
|
||||||
<Position11>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="80" TopLine="60"/>
|
|
||||||
</Position11>
|
|
||||||
<Position12>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="61" TopLine="57"/>
|
|
||||||
</Position12>
|
|
||||||
<Position13>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="62" TopLine="57"/>
|
|
||||||
</Position13>
|
|
||||||
<Position14>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="31" TopLine="15"/>
|
|
||||||
</Position14>
|
|
||||||
<Position15>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="27" Column="55" TopLine="15"/>
|
|
||||||
</Position15>
|
|
||||||
<Position16>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="33" Column="27" TopLine="25"/>
|
|
||||||
</Position16>
|
|
||||||
<Position17>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="80" TopLine="68"/>
|
|
||||||
</Position17>
|
|
||||||
<Position18>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="61" TopLine="49"/>
|
|
||||||
</Position18>
|
|
||||||
<Position19>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="62" TopLine="49"/>
|
|
||||||
</Position19>
|
|
||||||
<Position20>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="31" TopLine="19"/>
|
|
||||||
</Position20>
|
|
||||||
<Position21>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="32" TopLine="19"/>
|
|
||||||
</Position21>
|
|
||||||
<Position22>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="33" TopLine="19"/>
|
|
||||||
</Position22>
|
|
||||||
<Position23>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="38" Column="53" TopLine="25"/>
|
|
||||||
</Position23>
|
|
||||||
<Position24>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="81" TopLine="69"/>
|
|
||||||
</Position24>
|
|
||||||
<Position25>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="62" TopLine="50"/>
|
|
||||||
</Position25>
|
|
||||||
<Position26>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="63" TopLine="50"/>
|
|
||||||
</Position26>
|
|
||||||
<Position27>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="31" TopLine="19"/>
|
|
||||||
</Position27>
|
|
||||||
<Position28>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="32" TopLine="19"/>
|
|
||||||
</Position28>
|
|
||||||
<Position29>
|
|
||||||
<Filename Value="ufileutils.pas"/>
|
|
||||||
<Caret Line="33" TopLine="19"/>
|
|
||||||
</Position29>
|
|
||||||
<Position30>
|
|
||||||
<Filename Value="fmain.pas"/>
|
|
||||||
<Caret Line="10" Column="15" TopLine="5"/>
|
|
||||||
</Position30>
|
|
||||||
</JumpHistory>
|
|
||||||
</ProjectSession>
|
|
||||||
<Debugging>
|
|
||||||
<BreakPoints Count="1">
|
|
||||||
<Item1>
|
|
||||||
<Kind Value="bpkSource"/>
|
|
||||||
<WatchScope Value="wpsLocal"/>
|
|
||||||
<WatchKind Value="wpkWrite"/>
|
|
||||||
<Source Value="mainform.pas"/>
|
|
||||||
<Line Value="57"/>
|
|
||||||
</Item1>
|
|
||||||
</BreakPoints>
|
|
||||||
</Debugging>
|
|
||||||
</CONFIG>
|
|
@ -1,37 +0,0 @@
|
|||||||
;
|
|
||||||
; ABTool v0.6.4
|
|
||||||
; Конфигурация пакетов программ для установки
|
|
||||||
;
|
|
||||||
; Секция [PackageInfo] содержит общую информацию о данном пакете.
|
|
||||||
;
|
|
||||||
; Name — Название пакета.
|
|
||||||
;
|
|
||||||
; Description — Краткое описание пакета. Здесь вы
|
|
||||||
; можете указать для чего этот пакет собран, в каких
|
|
||||||
; случаях его использовать и т.д. Только для вашего
|
|
||||||
; удобства и по вашему усмотрению.
|
|
||||||
; Не должно быть разрывов строк.
|
|
||||||
;
|
|
||||||
; Добавление программ в пакет
|
|
||||||
;
|
|
||||||
; В квадратных скобках указывается название группы (например, антивирусы,
|
|
||||||
; проигрыватели и т.д.). Далее без кавычек указывается:
|
|
||||||
; "Название программы"=\"путь к файлу".
|
|
||||||
; Путь может начинаться с \ (если путь абсолютный; без буквы диска)
|
|
||||||
; или с \\ (если путь относителен ABTool.exe).
|
|
||||||
; Нельзя под один чекбокс указывать несколько команд.
|
|
||||||
; Можно указывать дополнительные ключи запуска.
|
|
||||||
;
|
|
||||||
;============================================================================
|
|
||||||
[PackageInfo]
|
|
||||||
Name=Пакет по умолчанию
|
|
||||||
Description=Пакет программ, используемый по умолчанию
|
|
||||||
[Группа 1]
|
|
||||||
Имя1=\\setup1.exe /ключ1 /ключ2
|
|
||||||
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
|
|
||||||
Имя3=\папка_в_корне_диска\setup3.exe
|
|
||||||
[Группа 2]
|
|
||||||
Имя4=\\setup4.exe /ключ1
|
|
||||||
[Группа 3]
|
|
||||||
Имя5=\\setup5.exe
|
|
||||||
Имя6=\\setup6.exe /ключ1
|
|
@ -1,37 +0,0 @@
|
|||||||
;
|
|
||||||
; ABTool v0.6.4
|
|
||||||
; Конфигурация пакетов программ для установки
|
|
||||||
;
|
|
||||||
; Секция [PackageInfo] содержит общую информацию о данном пакете.
|
|
||||||
;
|
|
||||||
; Name — Название пакета.
|
|
||||||
;
|
|
||||||
; Description — Краткое описание пакета. Здесь вы
|
|
||||||
; можете указать для чего этот пакет собран, в каких
|
|
||||||
; случаях его использовать и т.д. Только для вашего
|
|
||||||
; удобства и по вашему усмотрению.
|
|
||||||
; Не должно быть разрывов строк.
|
|
||||||
;
|
|
||||||
; Добавление программ в пакет
|
|
||||||
;
|
|
||||||
; В квадратных скобках указывается название группы (например, антивирусы,
|
|
||||||
; проигрыватели и т.д.). Далее без кавычек указывается:
|
|
||||||
; "Название программы"=\"путь к файлу".
|
|
||||||
; Путь может начинаться с \ (если путь абсолютный; без буквы диска)
|
|
||||||
; или с \\ (если путь относителен ABTool.exe).
|
|
||||||
; Нельзя под один чекбокс указывать несколько команд.
|
|
||||||
; Можно указывать дополнительные ключи запуска.
|
|
||||||
;
|
|
||||||
;============================================================================
|
|
||||||
[PackageInfo]
|
|
||||||
Name=Пакет по умолчанию
|
|
||||||
Description=Пакет программ, используемый по умолчанию
|
|
||||||
[Группа 1]
|
|
||||||
Имя1=\\setup1.exe /ключ1 /ключ2
|
|
||||||
Имя2=\\папка_рядом_с_abtool.exe\setup2.exe
|
|
||||||
Имя3=\папка_в_корне_диска\setup3.exe
|
|
||||||
[Группа 2]
|
|
||||||
Имя4=\\setup4.exe /ключ1
|
|
||||||
[Группа 3]
|
|
||||||
Имя5=\\setup5.exe
|
|
||||||
Имя6=\\setup6.exe /ключ1
|
|
@ -1,42 +0,0 @@
|
|||||||
;
|
|
||||||
; ABTool v0.6.4
|
|
||||||
; Конфигурация пакетов утилит для запуска
|
|
||||||
;
|
|
||||||
; Секция [PackageInfo] содержит общую информацию о данном пакете.
|
|
||||||
;
|
|
||||||
; Name — Название пакета.
|
|
||||||
;
|
|
||||||
; Description — Краткое описание пакета. Здесь вы
|
|
||||||
; можете указать для чего этот пакет собран, в каких
|
|
||||||
; случаях его использовать и т.д. Только для вашего
|
|
||||||
; удобства и по вашему усмотрению.
|
|
||||||
; Не должно быть разрывов строк.
|
|
||||||
;
|
|
||||||
; Добавление утилит в пакет
|
|
||||||
;
|
|
||||||
; В квадратных скобках указывается название группы (например, антивирусы,
|
|
||||||
; проигрыватели и т.д.). Далее без кавычек указывается:
|
|
||||||
; "Название утилиты"="путь к файлу".
|
|
||||||
; Путь может начинаться с \ (если путь абсолютный; без буквы диска)
|
|
||||||
; или с \\ (если путь относителен ABTool.exe).
|
|
||||||
; Нельзя под один пункт указывать несколько команд.
|
|
||||||
; Можно указывать дополнительные ключи запуска.
|
|
||||||
;
|
|
||||||
;============================================================================
|
|
||||||
[PackageInfo]
|
|
||||||
Name=Пакет по умолчанию
|
|
||||||
Description=Пакет программ, используемый по умолчанию
|
|
||||||
[Группа 1]
|
|
||||||
Утилита 1=\\утилита1.exe /ключ1 /ключ2
|
|
||||||
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
|
|
||||||
Утилита 3=\папка_в_корне_диска\утилита3.exe
|
|
||||||
Утилита 4=\\утилита4.exe /ключ1
|
|
||||||
[Группа 2]
|
|
||||||
Утилита 5=\\утилита5.exe
|
|
||||||
Утилита 6=\\утилита6.exe
|
|
||||||
[Группа 3]
|
|
||||||
Утилита 7=\\утилита7.exe /ключ1
|
|
||||||
Утилита 8=\\утилита8.exe
|
|
||||||
Утилита 9=\\утилита9.exe
|
|
||||||
Утилита 10=\\утилита10.exe /ключ1 /ключ2
|
|
||||||
Утилита 11=\\утилита11.exe
|
|
@ -1,42 +0,0 @@
|
|||||||
;
|
|
||||||
; ABTool v0.6.4
|
|
||||||
; Конфигурация пакетов утилит для запуска
|
|
||||||
;
|
|
||||||
; Секция [PackageInfo] содержит общую информацию о данном пакете.
|
|
||||||
;
|
|
||||||
; Name — Название пакета.
|
|
||||||
;
|
|
||||||
; Description — Краткое описание пакета. Здесь вы
|
|
||||||
; можете указать для чего этот пакет собран, в каких
|
|
||||||
; случаях его использовать и т.д. Только для вашего
|
|
||||||
; удобства и по вашему усмотрению.
|
|
||||||
; Не должно быть разрывов строк.
|
|
||||||
;
|
|
||||||
; Добавление утилит в пакет
|
|
||||||
;
|
|
||||||
; В квадратных скобках указывается название группы (например, антивирусы,
|
|
||||||
; проигрыватели и т.д.). Далее без кавычек указывается:
|
|
||||||
; "Название утилиты"="путь к файлу".
|
|
||||||
; Путь может начинаться с \ (если путь абсолютный; без буквы диска)
|
|
||||||
; или с \\ (если путь относителен ABTool.exe).
|
|
||||||
; Нельзя под один пункт указывать несколько команд.
|
|
||||||
; Можно указывать дополнительные ключи запуска.
|
|
||||||
;
|
|
||||||
;============================================================================
|
|
||||||
[PackageInfo]
|
|
||||||
Name=Пакет по умолчанию
|
|
||||||
Description=Пакет программ, используемый по умолчанию
|
|
||||||
[Группа 1]
|
|
||||||
Утилита 1=\\утилита1.exe /ключ1 /ключ2
|
|
||||||
Утилита 2=\\папка_рядом_с_abtool.exe\утилита2.exe
|
|
||||||
Утилита 3=\папка_в_корне_диска\утилита3.exe
|
|
||||||
Утилита 4=\\утилита4.exe /ключ1
|
|
||||||
[Группа 2]
|
|
||||||
Утилита 5=\\утилита5.exe
|
|
||||||
Утилита 6=\\утилита6.exe
|
|
||||||
[Группа 3]
|
|
||||||
Утилита 7=\\утилита7.exe /ключ1
|
|
||||||
Утилита 8=\\утилита8.exe
|
|
||||||
Утилита 9=\\утилита9.exe
|
|
||||||
Утилита 10=\\утилита10.exe /ключ1 /ключ2
|
|
||||||
Утилита 11=\\утилита11.exe
|
|
@ -1,4 +1,5 @@
|
|||||||
object MainDM: TMainDM
|
object dmMain: TdmMain
|
||||||
|
OnCreate = DataModuleCreate
|
||||||
OldCreateOrder = False
|
OldCreateOrder = False
|
||||||
Height = 84
|
Height = 84
|
||||||
HorizontalOffset = 313
|
HorizontalOffset = 313
|
||||||
|
72
dmain.pas
72
dmain.pas
@ -5,13 +5,13 @@ unit dMain;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Controls, Menus;
|
Classes, SysUtils, FileUtil, Controls, Menus, uPackage, uPackageList;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TMainDM }
|
{ TdmMain }
|
||||||
|
|
||||||
TMainDM = class(TDataModule)
|
TdmMain = class(TDataModule)
|
||||||
imgIcons: TImageList;
|
imgIcons: TImageList;
|
||||||
mmMain: TMainMenu;
|
mmMain: TMainMenu;
|
||||||
mbInstallCheckAll: TMenuItem;
|
mbInstallCheckAll: TMenuItem;
|
||||||
@ -34,21 +34,81 @@ type
|
|||||||
mbOptionsPkg: TMenuItem;
|
mbOptionsPkg: TMenuItem;
|
||||||
pmInstallTree: TPopupMenu;
|
pmInstallTree: TPopupMenu;
|
||||||
pmInstallCheck: TPopupMenu;
|
pmInstallCheck: TPopupMenu;
|
||||||
|
procedure DataModuleCreate(Sender: TObject);
|
||||||
private
|
private
|
||||||
|
// Подготовка директорий
|
||||||
|
procedure PrepareDirs();
|
||||||
|
// Подготовка списков пакетов
|
||||||
|
procedure PreparePackages();
|
||||||
public
|
public
|
||||||
|
{ Публичные переменные, которые доступны во всех юнитах с подключенным uses ..., dMain }
|
||||||
|
|
||||||
|
// путь к файлу ABTool.exe
|
||||||
|
ABToolExePath: String;
|
||||||
|
// путь к директории ABTool
|
||||||
|
ABToolDataPath: String;
|
||||||
|
// путь к директории ABTool\Packages
|
||||||
|
ABToolPkgPath: String;
|
||||||
|
// путь к директории ABTool\Languages
|
||||||
|
ABToolLangPath: String;
|
||||||
|
// путь к директории ABTool\Logs
|
||||||
|
ABToolLogPath: String;
|
||||||
|
// Список объектов пакетов программ для установки
|
||||||
|
SoftPackages: TPackageList;
|
||||||
|
// Список объектов пакетов утилит для запуска
|
||||||
|
ToolsPackages: TPackageList;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
MainDM: TMainDM;
|
dmMain: TdmMain;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{$R *.lfm}
|
{$R *.lfm}
|
||||||
|
|
||||||
{ TMainDM }
|
{ TdmMain }
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Конструктор: TdmMain.Create()
|
||||||
|
Назначение: Создание датамодуля, подготовка путей и списков пакетов
|
||||||
|
Вх. параметры: Sender: TObject
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
procedure TdmMain.DataModuleCreate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
PrepareDirs();
|
||||||
|
PreparePackages();
|
||||||
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Процедура: TdmMain.PreparePackages()
|
||||||
|
Назначение: Подготовка директорий
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
procedure TdmMain.PrepareDirs();
|
||||||
|
begin
|
||||||
|
ABToolExePath := ExtractFilePath(ParamStr(0));
|
||||||
|
ABToolDataPath := ABToolExePath + 'ABTool\';
|
||||||
|
ABToolPkgPath := ABToolDataPath + 'Packages\';
|
||||||
|
ABToolLangPath := ABToolDataPath + 'Languages\';
|
||||||
|
ABToolLogPath := ABToolDataPath + 'Logs\';
|
||||||
|
if not DirectoryExists(ABToolPkgPath) then
|
||||||
|
ForceDirectories(ABToolPkgPath);
|
||||||
|
if not DirectoryExists(ABToolLangPath) then
|
||||||
|
ForceDirectories(ABToolLangPath);
|
||||||
|
if not DirectoryExists(ABToolLogPath) then
|
||||||
|
ForceDirectories(ABToolLogPath);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Процедура: TdmMain.PreparePackages()
|
||||||
|
Назначение: Подготовка списков пакетов
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
procedure TdmMain.PreparePackages();
|
||||||
|
begin
|
||||||
|
SoftPackages := TPackageList.Create;
|
||||||
|
SoftPackages.Load(ptSoft);
|
||||||
|
ToolsPackages := TPackageList.Create;
|
||||||
|
ToolsPackages.Load(ptTools);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
35
fmain.lfm
35
fmain.lfm
@ -1,14 +1,14 @@
|
|||||||
object fmMain: TfmMain
|
object fmMain: TfmMain
|
||||||
Left = 309
|
Left = 304
|
||||||
Height = 450
|
Height = 450
|
||||||
Top = 88
|
Top = 87
|
||||||
Width = 350
|
Width = 350
|
||||||
BorderStyle = bsSingle
|
BorderIcons = [biSystemMenu, biMinimize]
|
||||||
Caption = 'ABTool'
|
Caption = 'ABTool'
|
||||||
ClientHeight = 430
|
ClientHeight = 430
|
||||||
ClientWidth = 350
|
ClientWidth = 350
|
||||||
Constraints.MaxHeight = 450
|
Constraints.MaxHeight = 500
|
||||||
Constraints.MaxWidth = 350
|
Constraints.MaxWidth = 400
|
||||||
Constraints.MinHeight = 450
|
Constraints.MinHeight = 450
|
||||||
Constraints.MinWidth = 350
|
Constraints.MinWidth = 350
|
||||||
Font.CharSet = RUSSIAN_CHARSET
|
Font.CharSet = RUSSIAN_CHARSET
|
||||||
@ -3210,7 +3210,7 @@ object fmMain: TfmMain
|
|||||||
71FE000F5EFF000773FE000387FE800176FD80002DC38001693C0003D1190007
|
71FE000F5EFF000773FE000387FE800176FD80002DC38001693C0003D1190007
|
||||||
36A3800F57F7800F8AFFC00F76FFC01F8BFFE03FBEFFF47FBDFF
|
36A3800F57F7800F8AFFC00F76FFC01F8BFFE03FBEFFF47FBDFF
|
||||||
}
|
}
|
||||||
Menu = MainDM.mmMain
|
Menu = dmMain.mmMain
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
@ -3220,11 +3220,11 @@ object fmMain: TfmMain
|
|||||||
Height = 430
|
Height = 430
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 350
|
Width = 350
|
||||||
ActivePage = tabSoft
|
ActivePage = tabTools
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Images = MainDM.imgIcons
|
Images = dmMain.imgIcons
|
||||||
TabHeight = 20
|
TabHeight = 20
|
||||||
TabIndex = 0
|
TabIndex = 1
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object tabSoft: TTabSheet
|
object tabSoft: TTabSheet
|
||||||
Caption = 'Установка'
|
Caption = 'Установка'
|
||||||
@ -3410,7 +3410,7 @@ object fmMain: TfmMain
|
|||||||
object edToolsSearch: TEdit
|
object edToolsSearch: TEdit
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 13
|
Height = 13
|
||||||
Top = 28
|
Top = 30
|
||||||
Width = 342
|
Width = 342
|
||||||
Align = alTop
|
Align = alTop
|
||||||
BorderSpacing.Top = 5
|
BorderSpacing.Top = 5
|
||||||
@ -3421,13 +3421,13 @@ object fmMain: TfmMain
|
|||||||
end
|
end
|
||||||
object pnToolsTop: TPanel
|
object pnToolsTop: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 23
|
Height = 25
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 342
|
Width = 342
|
||||||
Align = alTop
|
Align = alTop
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
ClientHeight = 23
|
ClientHeight = 25
|
||||||
ClientWidth = 342
|
ClientWidth = 342
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object cmbToolsPkgSelect: TComboBox
|
object cmbToolsPkgSelect: TComboBox
|
||||||
@ -3445,7 +3445,7 @@ object fmMain: TfmMain
|
|||||||
end
|
end
|
||||||
object btnToolsPkgEdit: TSpeedButton
|
object btnToolsPkgEdit: TSpeedButton
|
||||||
Left = 316
|
Left = 316
|
||||||
Height = 23
|
Height = 25
|
||||||
Hint = 'Редактировать пакет'
|
Hint = 'Редактировать пакет'
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 26
|
Width = 26
|
||||||
@ -3491,7 +3491,7 @@ object fmMain: TfmMain
|
|||||||
end
|
end
|
||||||
object btnToolsPkgReload: TSpeedButton
|
object btnToolsPkgReload: TSpeedButton
|
||||||
Left = 290
|
Left = 290
|
||||||
Height = 23
|
Height = 25
|
||||||
Hint = 'Перезагрузить пакет'
|
Hint = 'Перезагрузить пакет'
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 26
|
Width = 26
|
||||||
@ -3532,6 +3532,7 @@ object fmMain: TfmMain
|
|||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||||
}
|
}
|
||||||
|
OnClick = btnToolsPkgReloadClick
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object btnToolsRun: TButton
|
object btnToolsRun: TButton
|
||||||
@ -3552,7 +3553,7 @@ object fmMain: TfmMain
|
|||||||
object labToolsPkgDescription: TLabel
|
object labToolsPkgDescription: TLabel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 13
|
Height = 13
|
||||||
Top = 46
|
Top = 48
|
||||||
Width = 342
|
Width = 342
|
||||||
Align = alTop
|
Align = alTop
|
||||||
AutoSize = False
|
AutoSize = False
|
||||||
@ -3563,8 +3564,8 @@ object fmMain: TfmMain
|
|||||||
end
|
end
|
||||||
object vstToolsPkgContents: TVirtualStringTree
|
object vstToolsPkgContents: TVirtualStringTree
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 308
|
Height = 306
|
||||||
Top = 62
|
Top = 64
|
||||||
Width = 342
|
Width = 342
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BorderStyle = bsNone
|
BorderStyle = bsNone
|
||||||
|
87
fmain.pas
87
fmain.pas
@ -7,7 +7,7 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
|
||||||
StdCtrls, ExtCtrls, Buttons, ActnList, EditBtn, Menus, VirtualTrees, Types,
|
StdCtrls, ExtCtrls, Buttons, ActnList, EditBtn, Menus, VirtualTrees, Types,
|
||||||
uFileUtils, uPackage, uPackageUtils;
|
dMain, uFileUtils, uPackage, uPackageUtils, uPackageList;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -35,10 +35,15 @@ type
|
|||||||
tabTools: TTabSheet;
|
tabTools: TTabSheet;
|
||||||
vstSoftPkgContents: TVirtualStringTree;
|
vstSoftPkgContents: TVirtualStringTree;
|
||||||
vstToolsPkgContents: TVirtualStringTree;
|
vstToolsPkgContents: TVirtualStringTree;
|
||||||
procedure btnSoftPkgReloadClick(Sender: TObject);
|
// Создание формы и обновление выпадающих меню пакетов программ и утилит
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
|
// Обрабока клика по кнопке обновления выпадающего меню пакетов программ
|
||||||
|
procedure btnSoftPkgReloadClick(Sender: TObject);
|
||||||
|
// Обрабока клика по кнопке обновления выпадающего меню пакетов утилит
|
||||||
|
procedure btnToolsPkgReloadClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
procedure ReloadSoftPackagesList();
|
// Перезагрузка списка пакетов и выпадающих меню пакетов по указанному типу
|
||||||
|
procedure ReloadPackagesList(APackageType: TPackageType);
|
||||||
public
|
public
|
||||||
|
|
||||||
end;
|
end;
|
||||||
@ -52,21 +57,77 @@ implementation
|
|||||||
|
|
||||||
{ TfmMain }
|
{ TfmMain }
|
||||||
|
|
||||||
procedure TfmMain.btnSoftPkgReloadClick(Sender: TObject);
|
{------------------------------------------------------------------------------
|
||||||
begin
|
Процедура: TfmMain.ReloadPackagesList()
|
||||||
ReloadSoftPackagesList;
|
Назначение: Создание формы и обновление выпадающих меню пакетов программ и утилит
|
||||||
end;
|
Вх. параметры: Sender: TObject
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
procedure TfmMain.FormCreate(Sender: TObject);
|
procedure TfmMain.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ReloadSoftPackagesList;
|
ReloadPackagesList(ptSoft);
|
||||||
|
ReloadPackagesList(ptTools);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
procedure TfmMain.ReloadSoftPackagesList();
|
Процедура: TfmMain.btnSoftPkgReloadClick()
|
||||||
|
Назначение: Обрабока клика по кнопке обновления выпадающего меню пакетов программ
|
||||||
|
Вх. параметры: Sender: TObject
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
procedure TfmMain.btnSoftPkgReloadClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
cmbSoftPkgSelect.Items.AddStrings(GetPackagesIniFileList(ptSoft, False), True);
|
ReloadPackagesList(ptSoft);
|
||||||
cmbSoftPkgSelect.ItemIndex := 0;
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Процедура: TfmMain.btnToolsPkgReloadClick()
|
||||||
|
Назначение: Обрабока клика по кнопке обновления выпадающего меню пакетов утилит
|
||||||
|
Вх. параметры: Sender: TObject
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
procedure TfmMain.btnToolsPkgReloadClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ReloadPackagesList(ptTools);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Процедура: TfmMain.ReloadPackagesList()
|
||||||
|
Назначение: Перезагрузка списка пакетов и выпадающих меню пакетов по указанному типу
|
||||||
|
Вх. параметры: APackageType: TPackageType - тип списка пакета
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
procedure TfmMain.ReloadPackagesList(APackageType: TPackageType);
|
||||||
|
var
|
||||||
|
LastIndex: integer;
|
||||||
|
Key: Integer;
|
||||||
|
Pkg: TPackage;
|
||||||
|
Combo: TComboBox;
|
||||||
|
PackageList: TPackageList;
|
||||||
|
begin
|
||||||
|
case (APackageType) of
|
||||||
|
ptSoft: begin
|
||||||
|
Combo := cmbSoftPkgSelect;
|
||||||
|
PackageList := dmMain.SoftPackages;
|
||||||
|
end;
|
||||||
|
ptTools: begin
|
||||||
|
Combo := cmbToolsPkgSelect;
|
||||||
|
PackageList := dmMain.ToolsPackages;
|
||||||
|
end;
|
||||||
|
ptUnknown: raise Exception.Create('TfmMain.ReloadPackagesList(): передан ptUnknown');
|
||||||
|
end;
|
||||||
|
LastIndex := Combo.ItemIndex;
|
||||||
|
if LastIndex < 0 then
|
||||||
|
LastIndex := 0;
|
||||||
|
Combo.Clear;
|
||||||
|
PackageList.Reload();
|
||||||
|
if PackageList.Count > 0 then
|
||||||
|
begin
|
||||||
|
for Key := 0 to PackageList.Count - 1 do
|
||||||
|
begin
|
||||||
|
Pkg := PackageList[Key];
|
||||||
|
Combo.Items.Add(Pkg.Name + ' (' + ExtractFileName(Pkg.FileName) + ')');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if Combo.Items.Count <= LastIndex then
|
||||||
|
LastIndex := Combo.Items.Count - 1;
|
||||||
|
Combo.ItemIndex := LastIndex;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -7,17 +7,20 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Types, uPackage;
|
Classes, SysUtils, FileUtil, Types, uPackage;
|
||||||
|
|
||||||
|
// Получение списка файлов в директории
|
||||||
function GetFileList(Path, FileMask: String; FullPaths: Boolean = True): TStringList;
|
function GetFileList(Path, FileMask: String; FullPaths: Boolean = True): TStringList;
|
||||||
function GetABToolFileList(SubDir, FileMask: String;
|
|
||||||
FullPaths: Boolean = True): TStringList;
|
// Получение списка всех файлов внутри директории ABTool\
|
||||||
function GetPackagesIniFileList(PackageType: TPackageType;
|
function GetABToolFileList(SubDir, FileMask: String; FullPaths: Boolean = True): TStringList;
|
||||||
FullPaths: Boolean = True): TStringList;
|
|
||||||
|
// Получение списка всех файлов пакетов
|
||||||
|
function GetPackagesIniFileList(PackageType: TPackageType; FullPaths: Boolean = True): TStringList;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
Функция: GetFileList
|
Функция: GetFileList
|
||||||
Назначение: Получает список файлов в директории
|
Назначение: Получение списка файлов в директории
|
||||||
Вх. параметры:
|
Вх. параметры:
|
||||||
Path: string - путь к директории, список файлов которой нужно получить
|
Path: string - путь к директории, список файлов которой нужно получить
|
||||||
FileMask: string - маска файлов, по которой нужно отфильтровать список файлов
|
FileMask: string - маска файлов, по которой нужно отфильтровать список файлов
|
||||||
@ -51,7 +54,7 @@ end;
|
|||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
Функция: GetABToolFileList
|
Функция: GetABToolFileList
|
||||||
Назначение: Получает список всех файлов внутри директории ABTool\
|
Назначение: Получение списка всех файлов внутри директории ABTool\
|
||||||
Вх. параметры:
|
Вх. параметры:
|
||||||
SubDir: string - имя директории внутри ABTool\
|
SubDir: string - имя директории внутри ABTool\
|
||||||
FileMask: string - маска файлов, по которой нужно отфильтровать список файлов
|
FileMask: string - маска файлов, по которой нужно отфильтровать список файлов
|
||||||
@ -60,16 +63,14 @@ end;
|
|||||||
Возвращает:
|
Возвращает:
|
||||||
TStringList - список строк с полными путями или только с именами файлов пакетов
|
TStringList - список строк с полными путями или только с именами файлов пакетов
|
||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
function GetABToolFileList(SubDir, FileMask: String;
|
function GetABToolFileList(SubDir, FileMask: String; FullPaths: Boolean = True): TStringList;
|
||||||
FullPaths: Boolean = True): TStringList;
|
|
||||||
begin
|
begin
|
||||||
Result := GetFileList(ExtractFilePath(ParamStr(0)) + 'ABTool\' +
|
Result := GetFileList(ExtractFilePath(ParamStr(0)) + 'ABTool\' + SubDir, FileMask, FullPaths);
|
||||||
SubDir, FileMask, FullPaths);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
Функция: GetPackagesIniFileList
|
Функция: GetPackagesIniFileList
|
||||||
Назначение: Получает список всех пакетов
|
Назначение: Получение спискавсех файлов пакетов
|
||||||
Вх. параметры:
|
Вх. параметры:
|
||||||
PackageType: TPackageType - тип пакета: ptSoft либо ptTools
|
PackageType: TPackageType - тип пакета: ptSoft либо ptTools
|
||||||
FullPaths: boolean - возвращать полные пути (true) или только имена
|
FullPaths: boolean - возвращать полные пути (true) или только имена
|
||||||
@ -79,18 +80,13 @@ end;
|
|||||||
Исключения:
|
Исключения:
|
||||||
TException - при попытке передать ptUnknown
|
TException - при попытке передать ptUnknown
|
||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
function GetPackagesIniFileList(PackageType: TPackageType;
|
function GetPackagesIniFileList(PackageType: TPackageType; FullPaths: Boolean = True): TStringList;
|
||||||
FullPaths: Boolean = True): TStringList;
|
|
||||||
begin
|
begin
|
||||||
case (PackageType) of
|
case (PackageType) of
|
||||||
ptSoft: Result := GetABToolFileList('Packages', 'soft.*.ini', FullPaths);
|
ptSoft: Result := GetABToolFileList('Packages', 'soft.*.ini', FullPaths);
|
||||||
ptTools: Result := GetABToolFileList('Packages', 'tools.*.ini', FullPaths);
|
ptTools: Result := GetABToolFileList('Packages', 'tools.*.ini', FullPaths);
|
||||||
ptUnknown: raise Exception.Create(
|
ptUnknown: raise Exception.Create('GetPackagesIniFileList(): передан ptUnknown');
|
||||||
'GetPackagesIniFileList(): передан ptUnknown');
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
105
upackage.pas
105
upackage.pas
@ -10,47 +10,115 @@ uses
|
|||||||
type
|
type
|
||||||
{ TPackageType }
|
{ TPackageType }
|
||||||
|
|
||||||
TPackageType = (ptSoft, ptTools, ptUnknown);
|
// Перечисление типов пакета
|
||||||
|
TPackageType = (
|
||||||
|
// Пакет программ для установки
|
||||||
|
ptSoft,
|
||||||
|
// Пакет утилит
|
||||||
|
ptTools,
|
||||||
|
// Неизвестный пакет
|
||||||
|
ptUnknown
|
||||||
|
);
|
||||||
|
|
||||||
{ TPackage }
|
{ TPackage }
|
||||||
|
|
||||||
TPackage = class//(TCustomIniFile)
|
// Класс пакета
|
||||||
|
TPackage = class(TIniFile)
|
||||||
strict private
|
strict private
|
||||||
|
// Имя пакета: [PackageInfo] Name
|
||||||
FName: String;
|
FName: String;
|
||||||
|
// Описание пакета: [PackageInfo] Description
|
||||||
FDescription: String;
|
FDescription: String;
|
||||||
|
// Тип пакета
|
||||||
FType: TPackageType;
|
FType: TPackageType;
|
||||||
private
|
private
|
||||||
|
// Установка информации о пакете
|
||||||
|
procedure SetProperties();
|
||||||
|
// Определение типа пакета по имени его файла
|
||||||
|
function SetType(): TPackageType;
|
||||||
public
|
public
|
||||||
IniFile: TIniFile;
|
// Имя пакета: [PackageInfo] Name
|
||||||
Groups: TStringList;
|
|
||||||
//--------
|
|
||||||
property Name: String read FName;
|
property Name: String read FName;
|
||||||
|
// Описание пакета: [PackageInfo] Description
|
||||||
property Description: String read FDescription;
|
property Description: String read FDescription;
|
||||||
|
// Тип пакета
|
||||||
property PackageType: TPackageType read FType;
|
property PackageType: TPackageType read FType;
|
||||||
//--------
|
|
||||||
constructor Create(APkgFilename: String);
|
// Создание объекта пакета и установка информации о нём
|
||||||
|
constructor Create(APkgFilename: Ansistring); overload;
|
||||||
|
// Деструктор
|
||||||
destructor Destroy(); override;
|
destructor Destroy(); override;
|
||||||
function ExecuteItem(const AFileName, AParams: String;
|
|
||||||
AHideMainWindow: Boolean; Out AOutExitcode: Cardinal): Boolean;
|
// Запуск исполняемого файла и получение результатов запуска
|
||||||
|
function ExecuteItem(const AFileName, AParams: String; AHideMainWindow: Boolean;
|
||||||
|
Out AOutExitcode: Cardinal): Boolean;
|
||||||
end; // TPackage
|
end; // TPackage
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{ TPackage }
|
{ TPackage }
|
||||||
|
|
||||||
constructor TPackage.Create(APkgFilename: String);
|
{------------------------------------------------------------------------------
|
||||||
|
Конструктор: TPackage.Create()
|
||||||
|
Назначение: Создание объекта пакета и установка информации о нём
|
||||||
|
Вх. параметры: APkgFilename: Ansistring - путь к ini-файлу
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
constructor TPackage.Create(APkgFilename: Ansistring);
|
||||||
begin
|
begin
|
||||||
|
inherited Create(APkgFilename, [ifoStripComments, ifoStripInvalid]);
|
||||||
|
SetProperties();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Процедура: TPackage.SetType()
|
||||||
|
Назначение: Установка информации о пакете
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
procedure TPackage.SetProperties();
|
||||||
|
begin
|
||||||
|
FName := ReadString('PackageInfo', 'Name', '<без названия>');
|
||||||
|
FDescription := ReadString('PackageInfo', 'Description', '<без описания>');
|
||||||
|
FType := SetType();
|
||||||
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Функция: TPackage.SetType()
|
||||||
|
Назначение: Определение типа пакета по имени его файла
|
||||||
|
Возвращает: TPackageType - тип пакета
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
function TPackage.SetType(): TPackageType;
|
||||||
|
var
|
||||||
|
SubStr: String;
|
||||||
|
begin
|
||||||
|
SubStr := Copy(ExtractFileName(FileName), 1, 4);
|
||||||
|
if (LowerCase(SubStr) = 'soft') then
|
||||||
|
Result := ptSoft
|
||||||
|
else if (LowerCase(SubStr) = 'tool') then
|
||||||
|
Result := ptTools
|
||||||
|
else
|
||||||
|
Result := ptUnknown;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Деструктор: TPackage.Destroy()
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
destructor TPackage.Destroy();
|
destructor TPackage.Destroy();
|
||||||
begin
|
begin
|
||||||
inherited Destroy();
|
inherited Destroy();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
function TPackage.ExecuteItem(const AFileName, AParams: String;
|
Функция: TPackage.ExecuteItem()
|
||||||
AHideMainWindow: Boolean; out AOutExitcode: Cardinal): Boolean;
|
Назначение: Запуск исполняемого файла и получение результатов запуска
|
||||||
|
Вх. параметры:
|
||||||
|
AFileName : String - путь к исполняемому файлу
|
||||||
|
AParams : String - дополнительные параметры запуска
|
||||||
|
AHideMainWindow : Boolean - скрывать главное окно ABTool (true) или нет (false)
|
||||||
|
Вых. параметры:
|
||||||
|
AOutExitcode : Cardinal - код завершения процесса
|
||||||
|
Возвращает: boolean - true при успешном запуске программы, false при неудаче
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
function TPackage.ExecuteItem(const AFileName, AParams: String; AHideMainWindow: Boolean;
|
||||||
|
out AOutExitcode: Cardinal): Boolean;
|
||||||
begin
|
begin
|
||||||
|
|
||||||
end;
|
end;
|
||||||
@ -62,12 +130,3 @@ end.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,16 +5,93 @@ unit uPackageList;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, uPackage;
|
Classes, SysUtils, uFileUtils, uPackage;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TPackageList }
|
{ TPackageList }
|
||||||
TPackageList = class(TList)
|
|
||||||
|
|
||||||
|
// Класс списка пакетов
|
||||||
|
TPackageList = class
|
||||||
|
private
|
||||||
|
// Тип списка пакетов
|
||||||
|
FType: TPackageType;
|
||||||
|
// Список пакетов
|
||||||
|
FPackages: array of TPackage;
|
||||||
|
// Получение пакета из списка по его номеру
|
||||||
|
function GetPackageByIndex(Index: integer): TPackage;
|
||||||
|
public
|
||||||
|
// Тип списка пакетов
|
||||||
|
property PackageType: TPackageType read FType;
|
||||||
|
// Список пакетов
|
||||||
|
property Packages[Index: Integer]: TPackage read GetPackageByIndex; default;
|
||||||
|
|
||||||
|
// Создание списка пакетов по указанному типу
|
||||||
|
procedure Load(APackageType: TPackageType);
|
||||||
|
// Заполнение списка пакетов объектами пакетов
|
||||||
|
procedure Reload();
|
||||||
|
// Получение количества пакетов в списке
|
||||||
|
function Count(): integer;
|
||||||
end; // TPackageList
|
end; // TPackageList
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
{ TPackageList }
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Процедура: TPackageList.Create()
|
||||||
|
Назначение: Создание списка пакетов по указанному типу
|
||||||
|
Вх. параметры: APackageType: TPackageType - тип списка пакета
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
procedure TPackageList.Load(APackageType: TPackageType);
|
||||||
|
begin
|
||||||
|
FType := APackageType;
|
||||||
|
Reload();
|
||||||
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Процедура: TPackageList.Reload()
|
||||||
|
Назначение: Заполнение списка пакетов объектами пакетов
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
procedure TPackageList.Reload();
|
||||||
|
var
|
||||||
|
FileList: TStringList;
|
||||||
|
FileMask: String;
|
||||||
|
Key: Integer;
|
||||||
|
begin
|
||||||
|
FPackages := nil;
|
||||||
|
case (FType) of
|
||||||
|
ptSoft: FileMask := 'soft.*.ini';
|
||||||
|
ptTools: FileMask := 'tools.*.ini';
|
||||||
|
ptUnknown: raise Exception.Create('TPackageList.Reload(): тип не может быть ptUnknown');
|
||||||
|
end;
|
||||||
|
FileList := GetABToolFileList('Packages', FileMask);
|
||||||
|
for Key := 0 to FileList.Count - 1 do
|
||||||
|
begin
|
||||||
|
SetLength(FPackages, Length(FPackages)+1);
|
||||||
|
FPackages[Key] := TPackage.Create(FileList[Key]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Функция: TPackage.GetPackageByIndex()
|
||||||
|
Назначение: Получение пакета из списка по его номеру
|
||||||
|
Возвращает: TPackage - пакет
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
function TPackageList.GetPackageByIndex(Index: integer): TPackage;
|
||||||
|
begin
|
||||||
|
Result := FPackages[Index];
|
||||||
|
end;
|
||||||
|
|
||||||
|
{------------------------------------------------------------------------------
|
||||||
|
Функция: TPackage.GetPackageByIndex()
|
||||||
|
Назначение: Получение количества пакетов в списке
|
||||||
|
Возвращает: integer - число пакетов в списке
|
||||||
|
------------------------------------------------------------------------------}
|
||||||
|
function TPackageList.Count(): integer;
|
||||||
|
begin
|
||||||
|
Result := Length(FPackages);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user