Пользователь
Сообщения: 66
Благодарности: 29
|
Профиль
|
Отправить PM
| Цитировать
msatmb, думаю, так:
читать дальше »
Код:
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
[Languages]
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"
[CustomMessages]
Russian.NeedTmpSpaceMsg=Для работы инсталлятора недостаточно свободного места на системном диске. %nТребуется не менее %1. %nДоступно %2.
[_code]
const
oneMB=1024*1024;
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 ByteOrTB(Bytes: Extended; noMB: Boolean): String;
Begin
if not noMB then Result:= NumToStr(Int(Bytes)) +' Mb' else
if Bytes*oneMB < 1024 then if Bytes = 0 then Result:= '0' else Result:= NumToStr(round(Bytes*oneMB/1024)) +' Bt' else
if Bytes*oneMB/1024 < 1024 then Result:= NumToStr(round((Bytes*oneMB/1024)*10)/10) +' Kb' else
If Bytes*oneMB/oneMB < 1024 then Result:= NumToStr(round(Bytes*oneMB/oneMB*100)/100) +' Mb' else
If Bytes*oneMB/oneMB/1000 < 1024 then Result:= NumToStr(round(Bytes*oneMB/oneMB/1024*1000)/1000) +' Gb' else
Result:= NumToStr(round(Bytes*oneMB/oneMB/oneMB*1000)/1000) +' Tb';
End;
function InitializeSetup(): Boolean;
var
TmpDirFreeMB, TmpDirTotalMB, TmpDirNeedMB: Cardinal;
begin
TmpDirNeedMB:= 5000000; // сколько Mb требуется
Result := True;
GetSpaceOnDisk(ExpandConstant('{tmp}'), True, TmpDirFreeMB, TmpDirTotalMB);
if TmpDirFreeMB < TmpDirNeedMB then begin MsgBox(FmtMessage(ExpandConstant('{cm:NeedTmpSpaceMsg}'), [ByteOrTB(TmpDirNeedMB,true),ByteOrTB(TmpDirFreeMB,true)]), mbError, MB_Ok); Result := False; exit;; end;
end;
|
Отправлено: 21:24, 27-09-2009
| #173
|