Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 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