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

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

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

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 06-06-2020
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Бесплатная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.3.0 [17.01.2015] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z
Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z
Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 04-04-2018

 

Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
Но вот когда их объединяешь лезут ошибки. Не знаю как эту нестыковку поправить.
Как их вот "подружить" друг с другом. »
DA-Bro,

Видимо, объединяете не правильно...

Пробуйте...

Скрытый текст
Код: Выделить весь код
[Setup]
AppName=Test
AppVersion=1.5
DefaultDirName={pf}\Test
DisableWelcomePage=False
OutputDir=.

[Languages]
Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "EN"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "Image\ReadmeRu.rtf"; DestDir: "{tmp}"; Flags: dontcopy
Source: "Image\ReadmeEn.rtf"; DestDir: "{tmp}"; Flags: dontcopy
//Source: "Language\Russian.lng"; DestDir: "{app}\Language"; Languages: RU; Flags: ignoreversion
//Source: "Language\English.lng"; DestDir: "{app}\Language"; Languages: EN; Flags: ignoreversion

[CustomMessages]
EN.text=More detailed
RU.text=Подробнее
EN.text1=Close
RU.text1=Закрыть
EN.text2=About the program
RU.text2=О программе
EN.text3=Website
RU.text3=Сайт
EN.FreeSpace=Free space on disk:
RU.FreeSpace=Доступно места на диске:
EN.NeedSpace=Need space on disk:
RU.NeedSpace=Требуется места на диске:

[_code]
var
  Flag: Boolean;
  WebButton,AboutButton: TNewButton;
  RichEditViewer: TRichEditViewer;
  Readme: AnsiString;
  r: integer;
  NeedSpaceLabel,FreeSpaceLabel: TLabel;
  FreeMB, TotalMB: Cardinal;
  SizeStr: String;
  SizeInt: Integer;
  SymbolNumber: Integer;

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 GetSize(): Integer;
begin
SizeStr:= WizardForm.DiskSpaceLabel.Caption;
for SymbolNumber:= 97 to 122 do begin
while (Pos(Chr(SymbolNumber), SizeStr) > 0) do Delete(SizeStr, Pos(Chr(SymbolNumber), SizeStr),1); ///Находим все символы нижнего регистра и удаляем
while (Pos(AnsiUppercase(Chr(SymbolNumber)), SizeStr) > 0) do Delete(SizeStr, Pos(AnsiUppercase(Chr(SymbolNumber)), SizeStr),1); end; ///Находим все символы верхнего регистра и удаляем
for SymbolNumber:= 192 to 255 do begin
while (Pos(Chr(SymbolNumber), SizeStr) > 0) do Delete(SizeStr, Pos(Chr(SymbolNumber), SizeStr),1); end; ///Находим все символы нижнего регистра и удаляем
while (Pos('.', SizeStr) > 0) do Delete(SizeStr, Pos('.', SizeStr), 1); ///Удаляем точки
Delete(SizeStr, Pos(',', SizeStr), 5) ///Удаляем дробную часть
Result:= StrToInt(Trim(SizeStr)); ///Переводим в число
end;

function CompareNum(FirstNum, SecondNum: Integer): Boolean;
begin
 if FirstNum < SecondNum then Result:= False else Result:= True;
end;

function MbOrTb(Byte: Extended): String;
begin
 if Byte < 1024 then Result:= NumToStr(Byte) + ' Мб' else
 if Byte/1024 < 1024 then Result:= NumToStr(Byte/1024) + ' Гб' else
 Result:= NumToStr(Byte/(1024*1024)) + ' Тб'
end;

/// { Сколько требуется места на диске.procedure GetFreeSpaceCaption }
procedure GetFreeSpaceCaption(Sender: TObject);
var Path: String;
begin
 Path := ExtractFileDrive(WizardForm.DirEdit.Text);
 GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
 FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace}  ') + MbOrTb(FreeMB)
 NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpace}  ') + MbOrTb(SizeInt)
 if WizardForm.CurPageID = wpSelectDir then
  begin
    WizardForm.NextButton.Enabled:= CompareNum(FreeMB, SizeInt)
  end;
end;

procedure WebButtonOnClick(Sender: TObject);
begin
  ShellExec('open', 'http://forum.oszone.net/post-2996351-870.html', '','', SW_SHOW, ewNoWait, r);
end;

procedure SettingHideShowOnClick(Sender: TObject);
begin
  Wizardform.NextButton.Enabled := True;
    if Flag = False then begin
      RichEditViewer.Hide;
      Flag:= True;
      AboutButton.Caption := CustomMessage('text');
    end else begin
      RichEditViewer.Show;
      Flag:= False;
      AboutButton.Caption:= CustomMessage('text1');
      Wizardform.NextButton.Enabled:= True;
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  case CurPageID of
    wpWelcome:
    begin
//      Wizardform.NextButton.Enabled:= False;
      RichEditViewer.Hide;
      AboutButton.Caption:= CustomMessage('text');
      Flag:= True;
    end;

    wpSelectDir:
    begin
      GetFreeSpaceCaption(nil)
    end;
  end;
end;

procedure InitializeWizard();
begin
  case ActiveLanguage of
    'RU': begin
      ExtractTemporaryFile('ReadMeRu.rtf');
      LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeRu.rtf', Readme);
    end;
    'EN': begin
      ExtractTemporaryFile('ReadMeEn.rtf');
      LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeEn.rtf', Readme);
    end;
  end;

  WebButton:= TNewButton.Create(WizardForm);
  with WebButton do begin
    Parent := WizardForm.WelcomePage;
    SetBounds(ScaleX(42),ScaleY(250),ScaleX(80),ScaleY(23));
    Caption := CustomMessage('text3');
    WebButton.OnClick := @WebButtonOnClick;
  end;

  AboutButton:= TNewButton.Create(WizardForm);
  with AboutButton do begin
    AboutButton.SetBounds(ScaleX(42),ScaleY(280),ScaleX(80),ScaleY(23));
    AboutButton.Caption:= CustomMessage('text');
    AboutButton.ShowHint:= True;
    AboutButton.Hint:= CustomMessage('text2');
    AboutButton.OnClick:= @SettingHideShowOnClick;
    AboutButton.Parent:= WizardForm.WelcomePage;
    AboutButton.Cursor:= crHand;
    Flag:= True;
  end;

  RichEditViewer:= TRichEditViewer.Create(WizardForm);
  with RichEditViewer do begin
    Parent:= WizardForm.WelcomePage;
    SetBounds(ScaleX(164),ScaleY(0),ScaleX(333),ScaleY(314));
    ScrollBars:= ssVertical;
    ReadOnly:= True;
    RTFText:= Readme;
  end;

  begin
  WizardForm.DiskSpaceLabel.Hide;
   #ifdef NeedSize
   SizeInt:= {#NeedSize}
   #else
   SizeInt:= GetSize;
   #endif

  NeedSpaceLabel := TLabel.Create(WizardForm);
  NeedSpaceLabel.SetBounds(ScaleX(0), ScaleY(198), ScaleX(209), ScaleY(13))
  NeedSpaceLabel.Parent := WizardForm.SelectDirPage;
  NeedSpaceLabel.Transparent:=true;

  FreeSpaceLabel := TLabel.Create(WizardForm);
  FreeSpaceLabel.SetBounds(ScaleX(0), ScaleY(216), ScaleX(209), ScaleY(13))
  FreeSpaceLabel.Parent := WizardForm.SelectDirPage;
  FreeSpaceLabel.Transparent:=true;

  WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
  WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0;
  end;
end;

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:39, 18-11-2022 | #921



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


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


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


Vanadiy777, дык просто не знаю где подправлять). Уже всю голову сломал. Спасибо! Сейчас посмотрю.

Отправлено: 23:49, 18-11-2022 | #922


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
дык просто не знаю где подправлять). »
DA-Bro,
ну, дык надо ж не просто копипастом делать, а посмотреть, что и где жить должно...

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:01, 19-11-2022 | #923


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


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


Vanadiy777, Скрипт работает. Спасибо большое! Попробую остальное к нему добавить.

Подскажите пожалуйста, где была нестыковка. Что не так было?
Хоть знать на будущее.

Отправлено: 00:03, 19-11-2022 | #924


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
Подскажите пожалуйста, где была нестыковка. Что не так было?
Хоть знать на будущее. »
DA-Bro,
Да я бы с удовольствием подсказал... Но я ж не знаю, что Вы там прописали в сценарии...
Давайте полный скрипт - вместе ошибки разберем... Может, и остальное вместе прикрутим...

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:15, 19-11-2022 | #925


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


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


Vanadiy777, Спасибо!
Я уже вижу некоторые изменения. До меня бы сейчас конечно не дошло. Мало знаний.
Охота самому попробовать всё на место расставить.
Если что, попрошу уж помочь тогда мне тупоголовому).
Спасибо!

Отправлено: 00:26, 19-11-2022 | #926


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
Охота самому попробовать всё на место расставить. »
DA-Bro,
да, примеры и подсказки - это все замечательно, я сам тоже не профессор в этом, и часто помощи прошу более опытных коллег...
По опыту: пока сам не попробуешь, и шишек не наколотишь - понимание не приходит...

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:37, 19-11-2022 | #927


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


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


Vanadiy777, Когда интересно, можно и шишек понабивать)

А Вы не подскажите, как эти две строчки в свойствах экзешника закомментировать.
Или, если нельзя, совсем их убрать.

Последний раз редактировалось DA-Bro, 19-11-2022 в 03:28.


Отправлено: 00:40, 19-11-2022 | #928


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
А Вы не подскажите, как эти две строчки закомментировать.
Или, если нельзя, совсем их убрать. »
DA-Bro,
нет, не подскажу, к сожалению...
Это надо править в SetupLdr.e32, но, это не всегда заканчивается положительным результатом...
Как вариант - просто не открывать этот файл в Restorator, и не париться на этот счет...

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:15, 19-11-2022 | #929


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


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


Vanadiy777, ну так то их не видно. А в рестораторе смотришь: чего-то не хватает, не заполнено. Не порядок)))

Добавил я полностью весь скрипт. Всё отлично. Тьфу-тьфу-тьфу...

Спасибо большое! Выручили!

Отправлено: 01:18, 19-11-2022 | #930



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58




 
Переход