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