Скрипты Inno Setup. Помощь и советы [часть 4]

Ответить
 • Просмотры: 35
Аватара пользователя
R.i.m.s.k.y.

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение R.i.m.s.k.y. »

Цитата rasim933:



Мне нужен скрипт. Который недаст удалить нужную мне папку.
Скрипты Inno Setup. Помощь и советы [часть 4]




Вариаций может быть много...


Простой пример






Код:

Код: Выделить всё

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
Compression=lzma2/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
    CreateDir(ExpandConstant('{app}\data'));
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if (CurUninstallStep = usUninstall) and DirExists(ExpandConstant('{app}\data')) then
    if MsgBox('Папка "' + ExpandConstant('{app}\data') + '" содержит ваши сохранения, желаете удалить и её?', mbInformation, MB_YESNO) = IDYES then
      DelTree(ExpandConstant('{app}\data'), True, True, True);
end;







Цитата FX-DENIS:



на скриншоте видно наглядно размер файла 512.00000000БТ
Скрипты Inno Setup. Помощь и советы [часть 4]




Я вам сказал, что не тот скрипт, именно из-за того, что в конце увидел БТ. а не Бт.

Проблема ваша здесь:


Цитата FX-DENIS:



а в папке игры файл bigfile_RU_1.big весит 3.05 Гб
Скрипты Inno Setup. Помощь и советы [часть 4]





Цитата из Справки, функция FileSize:



...

Only supports file sizes smaller than 2 GB

...



Для определения размера файла более 2ГБ, уже нужно писать свою функцию, чуть позже накидаю.
Аватара пользователя
rasim933

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение rasim933 »

Я непоуму что ты мне хочешь сказать. Обьясни да уже.
Аватара пользователя
rasim933

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение rasim933 »

FX-DENIS, скрипт будет выглядеть так:


Пример






Код:

Код: Выделить всё

[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
ru.Bt=Бт
ru.Kb=Кб
ru.Mb=Мб
ru.Gb=Гб
ru.Tb=Тб
ru.Pb=Пб
ru.Eb=Эб
[Code]
var
  ProgressLabel, SizeLabel: TLabel;
function BytesToReadable(Bytes: Extended; Signs: Integer): string;
{ Перевод числа в значение Бт/Кб/Мб/Гб/Тб/Пб/Эб (Signs - количество знаков после запятой)}
var
  ABytes: Extended;
  i: Integer;
begin
  i := 0;
  ABytes := Bytes;
  while Int(ABytes) >= 1024 do
    begin
      ABytes := ABytes/1024;
      i := i + 1;
    end;
  case i of
    0: Result := FloatToStr(Int(ABytes)) + Padl(ExpandConstant('{cm:Bt}'), 1);                // Байт
    1: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Kb}'), [ABytes]); // Килобайт
    2: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Mb}'), [ABytes]); // Мегабайт
    3: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Gb}'), [ABytes]); // Гигабайт
    4: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Tb}'), [ABytes]); // Терабайт
    // больше Терабайта конечно не пригодится, покрайней мере в ближайшее время, но всё же...
    5: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Pb}'), [ABytes]); // Петабайт
    6: Result := Format('%.' + IntToStr(Signs) + 'n ' + ExpandConstant('{cm:Eb}'), [ABytes]); // Эксабайт
  end;
	StringChange(Result, ',', '.');
end;
function Size64(Hi, Lo: Integer): Extended;
begin
  Result := Lo;
  if Lo < 0 then
    Result := Result + $7FFFFFFF + $7FFFFFFF + 2;
  for Hi := Hi - 1 downto 0 do
    Result := Result + $7FFFFFFF + $7FFFFFFF + 2;
end;
function GetFileSize(const FileName: string): Extended;
var
  FindRec: TFindRec;
begin
  Result := 0;
  if FindFirst(FileName, FindRec) then
    try
      if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
        Result := Size64(FindRec.SizeHigh, FindRec.SizeLow);
    finally
      FindClose(FindRec);
    end;
end;
procedure Progress();
begin
  with WizardForm.ProgressGauge do
    ProgressLabel.Caption := IntToStr((Position-Min)/((Max - Min)/100)) + '%';
  SizeLabel.Caption := BytesToReadable(GetFileSize(ExpandConstant(CurrentFileName)), 1);
end;
procedure InitializeWizard();
begin
  ProgressLabel := TLabel.Create(WizardForm);
  with WizardForm.ProgressGauge do
    begin
      ProgressLabel.Top := Top + Height + ScaleY(8);
      ProgressLabel.Left := Left + Width/2 - ScaleX(8);
      ProgressLabel.AutoSize := True;
      ProgressLabel.Parent := WizardForm.InstallingPage;
    end;
  SizeLabel := TLabel.Create(WizardForm);
  with WizardForm.ProgressGauge do
    begin
      SizeLabel.Top := Top + Height + ScaleY(8);
      SizeLabel.Left := Left;
      SizeLabel.AutoSize := True;
      SizeLabel.Parent := WizardForm.InstallingPage;
    end;
end;







Цитата by_gangster:



чем можно заменить procedure InitializeWizard(); а то меня в скрипте уже есть (при компиляции ругается)
Скрипты Inno Setup. Помощь и советы [часть 4]




Так объедините эти две процедуры, т.е. всё что написано в procedure InitializeWizard(); после слова begin, просто скопируйте в свою procedure InitializeWizard();
Аватара пользователя
Johny777

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение Johny777 »

rasim933,

на твоём месте я б положил бы эту инфомаци в пролог

[Setup]

InfoBeforeFile=info_before.rtf

поддерживается .rtf или .txt
Аватара пользователя
rasim933

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение rasim933 »

Как мне кажется, придётся ведь ставить rtf - reader чтоб прочесть этот файл? Щяс попробую. А ты сам как переделываешь docx в rtf? И, перелеоываешь ли?
Аватара пользователя
rasim933

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение rasim933 »

alex_13_15, эээ флаг ignoreversion в секции Files, не?
Аватара пользователя
rasim933

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение rasim933 »

Так, с дейнсталятором вроде рабрасля. ТОлько что такое "генерируешь appid (например AppID={{0872DB47-24CB-4C7F-AC4B-E6EFC27BD244})" Это ключ реестра?
Аватара пользователя
rasim933

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение rasim933 »

О, спасибо. Сделал, щяс пробую проверить.
Аватара пользователя
R.i.m.s.k.y.

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение R.i.m.s.k.y. »

всё нормально я немного в скрипте ошибся
Ответить

Вернуться в «Автоматическая установка приложений»