This repository has been archived on 2025-07-14. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files

133 lines
4.6 KiB
ObjectPascal
Raw Permalink Normal View History

2019-01-13 01:05:16 +08:00
unit uPackage;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, IniFiles;
type
{ TPackageType }
// Перечисление типов пакета
TPackageType = (
// Пакет программ для установки
ptSoft,
// Пакет утилит
ptTools,
// Неизвестный пакет
ptUnknown
);
2019-01-13 01:05:16 +08:00
{ TPackage }
// Класс пакета
TPackage = class(TIniFile)
2019-01-13 01:05:16 +08:00
strict private
// Имя пакета: [PackageInfo] Name
2019-01-26 01:37:22 +08:00
FName: string;
// Описание пакета: [PackageInfo] Description
2019-01-26 01:37:22 +08:00
FDescription: string;
// Тип пакета
2019-01-13 01:05:16 +08:00
FType: TPackageType;
private
// Установка информации о пакете
procedure SetProperties();
// Определение типа пакета по имени его файла
function SetType(): TPackageType;
2019-01-13 01:05:16 +08:00
public
// Имя пакета: [PackageInfo] Name
2019-01-26 01:37:22 +08:00
property Name: string read FName;
// Описание пакета: [PackageInfo] Description
2019-01-26 01:37:22 +08:00
property Description: string read FDescription;
// Тип пакета
2019-01-13 01:05:16 +08:00
property PackageType: TPackageType read FType;
// Создание объекта пакета и установка информации о нём
2019-01-26 01:37:22 +08:00
constructor Create(AIniFilename: string); overload;
// Деструктор объекта пакета
2019-01-13 01:05:16 +08:00
destructor Destroy(); override;
// Запуск исполняемого файла и получение результатов запуска
2019-01-26 01:37:22 +08:00
function ExecuteItem(const AFileName, AParams: string; AHideMainWindow: Boolean;
Out AOutExitcode: Cardinal): Boolean;
2019-01-13 01:05:16 +08:00
end; // TPackage
implementation
{ TPackage }
{------------------------------------------------------------------------------
Конструктор: TPackage.Create()
Назначение: Создание объекта пакета и установка информации о нём
2019-01-26 01:37:22 +08:00
Вх. параметры: AIniFilename: string - путь к ini-файлу
------------------------------------------------------------------------------}
2019-01-26 01:37:22 +08:00
constructor TPackage.Create(AIniFilename: string);
2019-01-13 01:05:16 +08:00
begin
2019-01-26 01:37:22 +08:00
inherited Create(AIniFilename, [ifoStripComments, ifoStripInvalid]);
SetProperties();
end;
2019-01-13 01:05:16 +08:00
{------------------------------------------------------------------------------
2019-01-26 01:37:22 +08:00
Процедура: TPackage.SetType()
Назначение: Установка информации о пакете
------------------------------------------------------------------------------}
procedure TPackage.SetProperties();
begin
2019-01-26 01:37:22 +08:00
FName := Readstring('PackageInfo', 'Name', '<без названия>');
FDescription := Readstring('PackageInfo', 'Description', '<без описания>');
FType := SetType();
2019-01-13 01:05:16 +08:00
end;
{------------------------------------------------------------------------------
2019-01-26 01:37:22 +08:00
Функция: TPackage.SetType()
Назначение: Определение типа пакета по имени его файла
Возвращает: TPackageType - тип пакета
------------------------------------------------------------------------------}
function TPackage.SetType(): TPackageType;
var
2019-01-26 01:37:22 +08:00
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;
{------------------------------------------------------------------------------
2019-01-26 01:37:22 +08:00
Деструктор: TPackage.Destroy()
------------------------------------------------------------------------------}
2019-01-13 01:05:16 +08:00
destructor TPackage.Destroy();
begin
inherited Destroy();
end;
{------------------------------------------------------------------------------
Функция: TPackage.ExecuteItem()
Назначение: Запуск исполняемого файла и получение результатов запуска
Вх. параметры:
2019-01-26 01:37:22 +08:00
AFileName : string - путь к исполняемому файлу
AParams : string - дополнительные параметры запуска
AHideMainWindow : Boolean - скрывать главное окно ABTool (true) или нет (false)
Вых. параметры:
AOutExitcode : Cardinal - код завершения процесса
Возвращает: boolean - true при успешном запуске программы, false при неудаче
------------------------------------------------------------------------------}
2019-01-26 01:37:22 +08:00
function TPackage.ExecuteItem(const AFileName, AParams: string; AHideMainWindow: Boolean;
out AOutExitcode: Cardinal): Boolean;
2019-01-13 01:05:16 +08:00
begin
end;
end.