Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
?эт правда костыль немного
// 1048576 = 1 mb (если число больше 2047 то MbSize не работает. ограничение integer)
// тогда прописывать вручную, пример ExtraDiskSpaceRequired
#define MbSize(x) x*1048576
[setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}
//ShowComponentSizes=no
// Требуемое место для установки
ExtraDiskSpaceRequired=19542310912
[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"
[Components]
Name: Mode; Description: mode; Types: custom; flags: fixed
Name: Mode/SPOnly; Description: SPOnly; ExtraDiskSpaceRequired: {#MbSize(2047)}; Flags: disablenouninstallwarning
Name: Mode/MPOnly; Description: MPOnly; ExtraDiskSpaceRequired: {#MbSize(24)}; Flags: disablenouninstallwarning
Name: Mode2; Description: mode; Types: custom; flags: fixed
Name: Mode2/SPOnly2; Description: SPOnly2; ExtraDiskSpaceRequired: {#MbSize(101)}; Flags: disablenouninstallwarning
Name: Mode2/MPOnly2; Description: MPOnly2; ExtraDiskSpaceRequired: {#MbSize(524)}; Flags: disablenouninstallwarning
[Code]
var
Label1: TLabel;
OldEvent_ComponentsListClickCheck: TNotifyEvent;
function Numbers(s:string): Extended;
var
i,j: integer;
c,ss: string;
begin
ss:= '';
c := '0123456789,';
for i:=1 to Length(s) do
begin
for j:=1 to Length(c) do
begin
if s[i] = c[j] then
ss:= ss+c[j];
end;
end;
StringChange(ss, ',', '.');
result:= StrToFloat(ss);
end;
function NumToStr(Float: Extended): String;
begin
Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
while (Result[Length(Result)] = '0')or((Result[Length(Result)] = '.')and(Pos('.', Result) > 0)) do
SetLength(Result, Length(Result)-1);
end;
function MbOrTb(Float: Extended): String;
begin
if Float < 1024 then Result:= NumToStr(Float)+' Мб' else
if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' Гб' else
Result:= NumToStr(Float/(1024*1024))+' Тб';
end;
procedure DiskSpaceLabel(Sender: TObject);
begin
OldEvent_ComponentsListClickCheck(Sender);
Label1.Caption:= 'Текущий выбор требует не менее '+MbOrTb(Numbers(WizardForm.ComponentsDiskSpaceLabel.Caption))+' на диске.';
end;
procedure InitializeWizard;
begin
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Parent := WizardForm.ComponentsDiskSpaceLabel.Parent;
Caption:= 'Текущий выбор требует не менее '+MbOrTb(Numbers(WizardForm.ComponentsDiskSpaceLabel.Caption))+' на диске.';
SetBounds(WizardForm.ComponentsDiskSpaceLabel.Left, WizardForm.ComponentsDiskSpaceLabel.Top, WizardForm.ComponentsDiskSpaceLabel.Width, WizardForm.ComponentsDiskSpaceLabel.Height);
Font.Color:= clBlue;
Transparent:= True;
end;
OldEvent_ComponentsListClickCheck := WizardForm.ComponentsList.OnClickCheck;
WizardForm.ComponentsList.OnClickCheck:= @DiskSpaceLabel;
WizardForm.ComponentsDiskSpaceLabel.Hide;
// WizardForm.DiskSpaceLabel.Hide;
end;
// 1048576 = 1 mb (если число больше 2047 то MbSize не работает. ограничение integer)
// тогда прописывать вручную
#define MbSize(x) x*1048576
//===== [Место для установки] =====\\:
#define NeedSize "2048"
[setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}
//ShowComponentSizes=no
//DirExistsWarning=no
OutputDir=.
[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"
[Components]
Name: Mode; Description: mode; Types: custom; flags: fixed
Name: Mode/SPOnly; Description: SPOnly; ExtraDiskSpaceRequired: {#MbSize(100)}; Types: full; Flags: disablenouninstallwarning
Name: Mode2; Description: mode2; Types: custom; flags: fixed
Name: Mode2/SPOnly2; Description: SPOnly2; ExtraDiskSpaceRequired: {#MbSize(101)}; Flags: disablenouninstallwarning
Name: Mode2/MPOnly2; Description: MPOnly2; ExtraDiskSpaceRequired: {#MbSize(524)}; Flags: disablenouninstallwarning
[Files]
//Source: Arc.exe; DestDir: {tmp}; Flags: dontcopy
[Code]
var
Label1: TLabel;
OldEvent_ComponentsListClickCheck: TNotifyEvent;
DsE,SSize: Extended;
function GetFloatFormText(const UndefText: String): Extended;
var
i: Integer;
ss: string;
begin
for i := 1 to Length(UndefText) do
case UndefText[i] of
'0','1','2','3','4','5','6','7','8','9': ss := ss + UndefText[i];
',': ss := ss + '.';
end;
Result:= StrToFloat(ss);
end;
function NumToStr(Float: Extended): String;
begin
Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
while (Result[Length(Result)] = '0')or((Result[Length(Result)] = '.')and(Pos('.', Result) > 0)) do
SetLength(Result, Length(Result)-1);
end;
function MbOrTb(Float: Extended): String;
begin
if Float < 1024 then Result:= NumToStr(Float)+' Мб' else
if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' Гб' else
Result:= NumToStr(Float/(1024*1024))+' Тб';
end;
procedure DiskSpaceLabel(Sender: TObject);
begin
OldEvent_ComponentsListClickCheck(Sender);
DsE:= GetFloatFormText(WizardForm.ComponentsDiskSpaceLabel.Caption)+{#NeedSize}+SSize;
Label1.Caption:= 'Текущий выбор требует не менее '+MbOrTb(DsE)+' на диске.';
end;
procedure InitializeWizard;
var
i: Integer;
k: Array [0..99] of Boolean; // массив на 100 эл-ов
begin
OldEvent_ComponentsListClickCheck := WizardForm.ComponentsList.OnClickCheck;
for i:=0 to WizardForm.ComponentsList.ItemCount-1 do
if WizardForm.ComponentsList.Checked[i] then
k[i]:= True;
for i:=0 to WizardForm.ComponentsList.ItemCount-1 do
WizardForm.ComponentsList.Checked[i]:= False;
WizardForm.ComponentsList.OnClickCheck(nil);
SSize:= GetFloatFormText(WizardForm.DiskSpaceLabel.Caption)-GetFloatFormText(WizardForm.ComponentsDiskSpaceLabel.Caption);
for i:=0 to WizardForm.ComponentsList.ItemCount-1 do
WizardForm.ComponentsList.Checked[i]:= k[i];
OldEvent_ComponentsListClickCheck(nil);
DsE:= GetFloatFormText(WizardForm.ComponentsDiskSpaceLabel.Caption)+{#NeedSize}+SSize;
//
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Parent := WizardForm.ComponentsDiskSpaceLabel.Parent;
Caption:= 'Текущий выбор требует не менее '+MbOrTb(DsE)+' на диске.';
SetBounds(WizardForm.ComponentsDiskSpaceLabel.Left, WizardForm.ComponentsDiskSpaceLabel.Top, WizardForm.ComponentsDiskSpaceLabel.Width, WizardForm.ComponentsDiskSpaceLabel.Height);
Font.Color:= clBlue;
Transparent:= True;
end;
WizardForm.ComponentsList.OnClickCheck:= @DiskSpaceLabel;
WizardForm.ComponentsDiskSpaceLabel.Hide;
WizardForm.DiskSpaceLabel.Hide;
end;