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

Ответить
 • Просмотры: 33
Аватара пользователя
Spell1999

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

Сообщение Spell1999 »

FX-DENIS,

Код:

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

function InitializeSetup(): Boolean; 
begin  
MsgBox(BytesToReadable(GetFileSize('Test Drive Unlimited 2\bigfile_RU_1.big'), 1), mbInformation, MB_OK);
Result:=True;
end;
Вложения

[Расширение jpg было запрещено, вложение больше недоступно.]

Аватара пользователя
Spell1999

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

Сообщение Spell1999 »

пацаны я тут видел страницу готовых скриптов и потерял ссылку на неё и немогу найти. скиньте плиз ссылку
Аватара пользователя
alex_13_15

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

Сообщение alex_13_15 »

Подскажите как обозначить , что исполняемый файл игры находиться не в самой папке где игра установлена, а находиться в подпапках
Аватара пользователя
Johny777

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

Сообщение Johny777 »

alex_13_15,

Description: Half-Life 2; Filename: {app}\common\half-life 2\hl2.exe; WorkingDir: {app}\common\half-life 2; Parameters: -steam -game hl2 -appid 220;

?

Spell1999,

в шапке темы оно?
Аватара пользователя
alex_13_15

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

Сообщение alex_13_15 »

Цитата Лександер:



[Setup]

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




И что? Вы хоть сами проверяли?


Цитата Компилятор:



Warning: The [Setup] section directive "UninstallIconFile" is obsolete and ignored in this version of Inno Setup.



И справку видимо тоже не читали:


Цитата jrsoftware.org/ishelp/index.php.htm?topic=setup_uninstalliconfile:



[Setup]: UninstallIconFile



Description:

Obsolete in 5.0.0. As Setup and Uninstall have been merged into a single executable, setting a custom icon for Uninstall is no longer possible.




Цитата boss911:



файлу Uninstall.exe задать свою иконку нельзя, разве что поменять ее самостоятельно и компилировать проект уже с этим деинсталлятором и не забыть прописать 'Uninstallable=false'. Не совсем красивый метод, но другого я не знаю.
Скрипты Inno Setup. Помощь и советы [часть 4]




Так что по-прежнему продолжаю не знать.
Аватара пользователя
Devils Night

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

Сообщение Devils Night »

Цитата FX-DENIS:



Легче понять что такое 299,792,458 m/s
Скрипты Inno Setup. Помощь и советы [часть 4]




физик епта Изображение ты еще вспони из какого уравнения она выводится как постоянная!



по коду у тебя похоже путь неправильный, вот GetFileSize и вертает 0



или почему бы не воспользоваться стандартной FileSize



Код:

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

...
FileSize(ExpandConstant(CurrentFileName), size); 
MsgBox(BytesToReadable(IntToStr(size) + ' bytes'), mbInformation, MB_OK);
...
Аватара пользователя
Serega

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

Сообщение Serega »

boss911, Я попробовал.

Хотя... я работаю в расширенной версии, может в стандартной это и не работает...
Аватара пользователя
FX-DENIS

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

Сообщение FX-DENIS »

Лександер



Я работаю исключительно в стандартной (официальной) версии. Как и сказано в справке, не работает.
Аватара пользователя
rasim933

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

Сообщение rasim933 »

Цитата boss911:



Я работаю исключительно в стандартной (официальной) версии. Как и сказано в справке, не работает.
Скрипты Inno Setup. Помощь и советы [часть 4]




ну и зря

номрмальные герои ипользуют расширенную!
Аватара пользователя
boss911

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

Сообщение boss911 »

Цитата El Sanchez:



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




Спасибо, честно говоря не знал про эту функцию, хотел уже добавить в скрипт, но на юникоде размер больших архивов не правильно показывает, правда сильно не ковырял...


Цитата FX-DENIS:



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




Вы пишите MsgBox(BytesToReadable(GetFileSize('Test Drive Unlimited 2\bigfile_RU_1.big'), 1), mbInformation, MB_OK);

где тут полный путь до файла? при такой раскладке он должен лежать в одном каталоге с инсталлятором.

В любом случае извиняюсь за свою не внимательность, нашёл ошибку в формуле, исправил и добавил доп. проверку:


Пример






Код:

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

[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
[CustomMessages]
ru.Bt=Бт
ru.Kb=Кб
ru.Mb=Мб
ru.Gb=Гб
ru.Tb=Тб
ru.Pb=Пб
ru.Eb=Эб
[Files]
Source: compiler:Examples\*; DestDir: {app}; AfterInstall: Progress; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension sortfilesbyname
[Code]
var
  ProgressLabel, SizeLabel: TLabel;
function BytesToReadable(const Bytes: Extended; Signs: Integer): string;
{ Перевод числа в значение Бт/Кб/Мб/Гб/Тб/Пб/Эб (Signs - количество знаков после запятой)}
var
  ABytes: Extended;
  n: Integer;
begin
  Result := '';
  if Int(Bytes) > 0 then
    try
      n := 0;
      ABytes := Bytes;
      while Int(ABytes) >= 1024 do
        begin
          ABytes := ABytes/1024;
          n := n + 1;
        end;
      case n of
        0: Result := Format('%d ' + ExpandConstant('{cm:Bt}'), [Round(ABytes)]);                  // Байт
        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;
    finally
      if (Result  '') and (Pos(',', Result) > 0) then
        StringChange(Result, ',', '.');
    end;
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)) + '%'; // часто видел, но никогда не вникал в эту формулу...
    ProgressLabel.Caption := IntToStr((Position*100)/Max) + '%'; // правильное отображение процентов
  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;







Цитата R.i.m.s.k.y.:



или почему бы не воспользоваться стандартной FileSize
Скрипты Inno Setup. Помощь и советы [часть 4]




Есть ограничение, укажет размер файла не более 2ГБ


Цитата boss911:



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




Привет Серёга Изображение Лександер, верно говорит. Да в справке написано, что уже не поддерживает, но пока ещё работает...




Цитата boss911:



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




Попробовал в стандартной, работает
Ответить

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