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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]
Скрипты Inno Setup. Помощь и советы [часть 4]

Отправлено: 03:49, 21-05-2012

 

Аватара для R.i.m.s.k.y.

Ветеран


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

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


El Sanchez, способ хороший но есть нюанс: в говносборках частенько вырезают шрифты
В каждой венде есть "Таблица символов", интересующие меня символы я смотрю там

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 18:30, 07-06-2012 | #231



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

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


Аватара для nik1967

Старожил


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

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


Цитата R.i.m.s.k.y.:
В каждой венде есть "Таблица символов", интересующие меня символы я смотрю там »
С этим не прокатывает(по крайней мере у меня).

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Отправлено: 18:43, 07-06-2012 | #232


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Цитата nik1967:
С этим не прокатывает(по крайней мере у меня). »

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!

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

Отправлено: 18:55, 07-06-2012 | #233


Аватара для Dark_Delphin

Старожил


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

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


Всем привет.

Кто знает как изменить окошко "Выбор языка инсталлятора" ?

-------
✘ _420.pp_✘


Отправлено: 00:47, 08-06-2012 | #234


Аватара для Johny777

Ветеран


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

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


Dark_Delphin,
http://176.9.1.113:52080/showthread.php?t=7&page=4
(в сообщении sergey3695)

__________________________________________________

скажите пожалуйста как можно короче записать обновление прогрессбара
извлекаются 92 файла и после каждой строки приписываю Позиция := число
может можно покороче и по проще
я не знаю

читать дальше »
Код: Выделить весь код
  Form := CreateCustomForm();
  with Form do
  begin
    BorderIcons := [];
    ClientWidth := ScaleX(256);
    ClientHeight := ScaleY(338);
    BorderStyle := bsSingle;
    SetClassLong(Form.Handle, (-26), GetWindowLong(Form.Handle, (-26)) or $00020000); /// тень от окна
    Left := GetSystemMetrics(16) - ClientWidth - ScaleX(16);
    Top := GetSystemMetrics(17) - ClientHeight - ScaleY(16);
  end;

  with TBitmapImage.Create(Form) do
  begin
       .....
  end;

  LoadPrgsBar := TNewProgressBar.Create(Form);
  with LoadPrgsBar do
  begin
    Parent := Form;
    SetBounds(ScaleX(0), ScaleY(0), ScaleX(256), ScaleY(25))
    Position := 0;
  end;

  with TLabel.Create(Form) do
  begin
       .......
  end;
  

Form.Show();
Form.Repaint;
    /// конец

/////////////////////////////////////////
/// скроллбокс  /// 92 строки
with LoadPrgsBar do
begin
ExtractTemporaryFile('WizardForm.Intro_BitmapImage1.bmp');
Position := 1;

ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');
Position := 2;

ExtractTemporaryFile('WizardForm.BitmapImage2.bmp');
Position := 3;

ExtractTemporaryFile('WizardForm.BitmapImage3.bmp');
Position := 4;

ExtractTemporaryFile('WizardForm.BitmapImage4.bmp');
Position := 5;

ExtractTemporaryFile('WizardForm.BitmapImage5.bmp');
Position := 6;

ExtractTemporaryFile('WizardForm.BitmapImage6.bmp');
Position := 7;

ExtractTemporaryFile('WizardForm.BitmapImage7.bmp');
Position := 8;

ExtractTemporaryFile('WizardForm.BitmapImage8.bmp');
Position := 9;

ExtractTemporaryFile('WizardForm.BitmapImage10.bmp');
Position := 10;

ExtractTemporaryFile('WizardForm.BitmapImage11.bmp');
Position := 11;

ExtractTemporaryFile('WizardForm.BitmapImage12.bmp');
Position := 12;

ExtractTemporaryFile('WizardForm.BitmapImage13.bmp');
Position := 13;

ExtractTemporaryFile('WizardForm.BitmapImage14.bmp');
Position := 14;

ExtractTemporaryFile('WizardForm.BitmapImage15.bmp');
Position := 15;

ExtractTemporaryFile('WizardForm.BitmapImage16.bmp');
Position := 16;

ExtractTemporaryFile('WizardForm.BitmapImage17.bmp');
Position := 17;

ExtractTemporaryFile('WizardForm.BitmapImage18.bmp');
Position := 18;

ExtractTemporaryFile('WizardForm.BitmapImage19.bmp');
Position := 19;

ExtractTemporaryFile('WizardForm.BitmapImage20.bmp');
Position := 20;

ExtractTemporaryFile('WizardForm.BitmapImage21.bmp');
Position := 21;

ExtractTemporaryFile('WizardForm.BitmapImage22.bmp');
Position := 22;

ExtractTemporaryFile('WizardForm.BitmapImage23.bmp');
Position := 23;

ExtractTemporaryFile('WizardForm.BitmapImage24.bmp');
Position := 24;

ExtractTemporaryFile('WizardForm.BitmapImage25.bmp');
Position := 25;

ExtractTemporaryFile('WizardForm.BitmapImage26.bmp');
Position := 26;

ExtractTemporaryFile('WizardForm.BitmapImage27.bmp');
Position := 27;

ExtractTemporaryFile('WizardForm.BitmapImage28.bmp');
Position := 28;

ExtractTemporaryFile('WizardForm.BitmapImage29.bmp');
Position := 29;

ExtractTemporaryFile('WizardForm.BitmapImage30.bmp');
Position := 30;

ExtractTemporaryFile('WizardForm.BitmapImage31.bmp');
Position := 31;

ExtractTemporaryFile('WizardForm.BitmapImage32.bmp');
Position := 32;

ExtractTemporaryFile('WizardForm.BitmapImage33.bmp');
Position := 33;

ExtractTemporaryFile('WizardForm.BitmapImage34.bmp');
Position := 34;

ExtractTemporaryFile('WizardForm.BitmapImage35.bmp');
Position := 35;

ExtractTemporaryFile('WizardForm.BitmapImage36.bmp');
Position := 36;

ExtractTemporaryFile('WizardForm.BitmapImage37.bmp');
Position := 37;

ExtractTemporaryFile('WizardForm.BitmapImage38.bmp');
Position := 38;

ExtractTemporaryFile('WizardForm.BitmapImage39.bmp');
Position := 39;

ExtractTemporaryFile('WizardForm.BitmapImage40.bmp');
Position := 40;

ExtractTemporaryFile('WizardForm.BitmapImage41.bmp');
Position := 42;

ExtractTemporaryFile('WizardForm.BitmapImage42.bmp');
Position := 44;

ExtractTemporaryFile('WizardForm.BitmapImage43.bmp');
Position := 45;

ExtractTemporaryFile('WizardForm.BitmapImage44.bmp');
Position := 46;

ExtractTemporaryFile('WizardForm.BitmapImage45.bmp');
Position := 47;

ExtractTemporaryFile('WizardForm.BitmapImage46.bmp');
Position := 48;

ExtractTemporaryFile('WizardForm.BitmapImage47.bmp');
Position := 49;

ExtractTemporaryFile('WizardForm.BitmapImage48.bmp');
Position := 50;

ExtractTemporaryFile('WizardForm.BitmapImage49.bmp');
Position := 51;

ExtractTemporaryFile('WizardForm.BitmapImage50.bmp');
Position := 52;

ExtractTemporaryFile('WizardForm.BitmapImage51.bmp');
Position := 53;

ExtractTemporaryFile('WizardForm.BitmapImage52.bmp');
Position := 54;

ExtractTemporaryFile('WizardForm.BitmapImage53.bmp');
Position := 55;

ExtractTemporaryFile('WizardForm.BitmapImage55.bmp');
Position := 56;

ExtractTemporaryFile('WizardForm.BitmapImage54.bmp');
Position := 57;

ExtractTemporaryFile('WizardForm.BitmapImage56.bmp');
Position := 58;

ExtractTemporaryFile('WizardForm.BitmapImage57.bmp');
Position := 59;

ExtractTemporaryFile('WizardForm.BitmapImage58.bmp');
Position := 60;

ExtractTemporaryFile('WizardForm.BitmapImage59.bmp');
Position := 61;

ExtractTemporaryFile('WizardForm.BitmapImage60.bmp');
Position := 62;

ExtractTemporaryFile('WizardForm.BitmapImage61.bmp');
Position := 63;

ExtractTemporaryFile('WizardForm.BitmapImage62.bmp');
Position := 64;

ExtractTemporaryFile('WizardForm.BitmapImage63.bmp');
Position := 65;

ExtractTemporaryFile('WizardForm.BitmapImage64.bmp');
Position := 66;

ExtractTemporaryFile('WizardForm.BitmapImage65.bmp');
Position := 67;

ExtractTemporaryFile('WizardForm.BitmapImage66.bmp');
Position := 68;

ExtractTemporaryFile('WizardForm.BitmapImage67.bmp');
Position := 69;

ExtractTemporaryFile('WizardForm.BitmapImage68.bmp');
Position := 70;

ExtractTemporaryFile('WizardForm.BitmapImage69.bmp');
Position := 71;

ExtractTemporaryFile('WizardForm.BitmapImage70.bmp');
Position := 72;

ExtractTemporaryFile('WizardForm.BitmapImage71.bmp');
Position := 73;

ExtractTemporaryFile('WizardForm.BitmapImage72.bmp');
Position := 74;

ExtractTemporaryFile('WizardForm.BitmapImage73.bmp');
Position := 75;

ExtractTemporaryFile('WizardForm.BitmapImage74.bmp');
Position := 76;

ExtractTemporaryFile('WizardForm.BitmapImage75.bmp');
Position := 77;

ExtractTemporaryFile('WizardForm.BitmapImage76.bmp');
Position := 79;

ExtractTemporaryFile('WizardForm.BitmapImage77.bmp');
Position := 80;

ExtractTemporaryFile('WizardForm.BitmapImage78.bmp');
Position := 81;

ExtractTemporaryFile('WizModernImage.bmp'); /// интеграция воды
Position := 82;

ExtractTemporaryFile('Trinagle_Info_bmp.bmp');
Position := 83;

ExtractTemporaryFile('Select_pic.bmp');
Position := 84;

ExtractTemporaryFile('WizardForm.PortalC_Image.bmp');
Position := 85;

ExtractTemporaryFile('WizardForm.SpeedBtn.bmp');
Position := 86;

ExtractTemporaryFile('TFormA.bmp'); /// распаковка картинки формы задач
Position := 87;

ExtractTemporaryFile('A_pic.bmp');
Position := 88;

ExtractTemporaryFile('C_pic.bmp');
Position := 89;

ExtractTemporaryFile('T1.bmp');
Position := 90;

ExtractTemporaryFile('T3.bmp');
Position := 93;

ExtractTemporaryFile('WizardForm.Scanner_pic.bmp');
Position := 95;

ExtractTemporaryFile('Ws_markings1.bmp'); /// распаковка картинки формы отмены
    /// распаковка скрина при отсутствии шрифиов /// начало
    if ActiveLanguage='Russian' then
    begin
      ExtractTemporaryFile('RU.jpg');
      RenameFile(ExpandConstant('{tmp}\RU.jpg'), ExpandConstant('{tmp}\NoFont.jpg'));
      Position := 97;
    end;
    if ActiveLanguage='English' then
    begin
      ExtractTemporaryFile('EN.jpg');
      RenameFile(ExpandConstant('{tmp}\EN.jpg'), ExpandConstant('{tmp}\NoFont.jpg'));
      Position := 97;
    end;
    /// конец
ExtractTemporaryFile('LIcon.ico');  /// извлекаем маленькую иконку
Position := 100;
end;


.........................

Последний раз редактировалось Johny777, 08-06-2012 в 17:09.

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

Отправлено: 02:36, 08-06-2012 | #235


Аватара для Sanshalay

Новый участник


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

Профиль | Сайт | Цитировать


Как путь для установки игры извлечь из реестра (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\nhl2009.exe. Параметр Path)?

Отправлено: 20:16, 08-06-2012 | #236


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Цитата Johny777:
может можно покороче и по проще »
Position := число; можно заменить на Position := Position +1;, чтоб строки не считать.
короче точно не порлучится, да и проще тоже. как вариант - забивать все имена распаковываемых файлов в стринглист и потом в цикле от нуля до количества итемов минус один стринглиста, извлекать файлы, беря из стринглиста названия по номеру текущего цикла.
тогда распаковка любого количества файлов займет буквально меньше десятка строчек кода.
но, добавление файлов в стринглист займет все остальное, в итоге проще не станет точно, да и короче не сильно.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.

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

Отправлено: 18:45, 10-06-2012 | #237


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

Ветеран


Contributor


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

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


Цитата Johny777:
как можно короче записать обновление прогрессбара
извлекаются 92 файла и после каждой строки приписываю Позиция := число
может можно покороче и по проще »
Johny777, как вариант, дать картинкам имена, содержащих позицию прогрессбара, и использовать цикл.
Код: Выделить весь код
with LoadPrgsBar do
begin
  for i := 1 to 100 do
  begin
    ExtractTemporaryFile('Image' + IntToStr(i) + '.bmp');
    Position := i;
  end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:18, 10-06-2012 | #238


Аватара для Johny777

Ветеран


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

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


El Sanchez,
спасибо
так и сделал
только не сами файлы картинок переименовал а сделал/делаю как дизайнер

читать дальше »
Код: Выделить весь код
DestName: "WizardForm.BitmapImage1.bmp"; Source: "prolog\Lambda_hand.bmp"; Flags: dontcopy solidbreak

....

    with LoadPrgsBar do
    begin
      for i := 1 to 85 do
      begin
        ExtractTemporaryFile('WizardForm.BitmapImage' + IntToStr(i) + '.bmp');
        Position := i;
      end;
    end;
    LoadPrgsBar.Position := 100;


,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

доработал немного "проценты установки" (под свои нужды)
а именно добавил при помощи этого примера (смена названия кнопки в панели задач)

читать дальше »
Код: Выделить весь код
[Setup]
AppName=Test
AppVerName=Test
CreateAppDir=false
InternalCompressLevel=none
Compression=none

[  Code]
function SetWindowText(hWnd: Longint; lpString: PChar): Longint; external 'SetWindowTextA@user32.dll';
function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll';

procedure SetAppTitle(Value: String);
var n: HWND;
begin
  n:=GetWindowLong(MainForm.Handle, -8);
  if n <> 0 then SetWindowText(n, PChar(Value));
end;

procedure InitializeWizard;
begin
  SetAppTitle('NewTitle');
end;


отображение процентов (там же на кнопке)
Так же доработке подверглось создание процентного лейбла и функция отмены эксклюзивно для страницы установки

читать дальше »
Код: Выделить весь код
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp

[Files]
Source: compiler:innocallback.dll; Flags: dontcopy
Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs

[  code]
type
  TTimerProc = procedure(HandleW, Msg, idEvent, TimeSys: LongWord);
  

var
  PercentsTimer: LongWord;
  PercentsLabel: TLabel;
  

function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): longword; external 'SetTimer@user32';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32 stdcall delayload';


function NumToStr(Float: Extended): String;
begin
  Result:= Format('%.1n', [Float]); StringChange(Result, ',', '.');
  while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
  SetLength(Result, Length(Result)-1);
end;


procedure PercentsProc(h, msg, idevent, dwTime: Longword);
begin
  with WizardForm.ProgressGauge do
  begin
    PercentsLabel.Caption := NumToStr((Position*100)/Max) + ' %';
    Application.Title := ' ' + NumToStr((Position*100)/Max) + ' %';
  end;
end;


procedure DeinitializeSetup();
begin
  KillTimer(0, PercentsTimer);
end;


procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
  begin
  
    PercentsLabel:= TLabel.Create(nil);
    with PercentsLabel do
    begin
      SetBounds(WizardForm.ProgressGauge.Left + ScaleX(30), WizardForm.ProgressGauge.Top + WizardForm.ProgressGauge.Height + ScaleY(10), WizardForm.StatusLabel.Width, WizardForm.StatusLabel.Height);
      AutoSize:= True;
      Transparent := True;
      Parent:= WizardForm.InstallingPage;
    end;

    PercentsTimer:= SetTimer(0, 0, 100, WrapTimerProc(@PercentsProc, 4));
    
  end;
  
  if CurStep = ssPostInstall then
  begin
    KillTimer(0, PercentsTimer);
    Application.Title := ' Готово';
  end;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  if CurPageID=wpInstalling then
  begin
    Confirm := False;
    case ExitSetupMsgBox of
      True :
      begin
        PercentsLabel.Free;
        Application.Title := ExpandConstant(' ' + SetupMessage(msgButtonCancel) + '...');
        Cancel := True;
      end;
      False : Cancel := False;
    end;
  end;
end;


вроде мелочи, но может кому пригодится
сам считаю отображение процентов (помимо прогрессбара) на кнопке в панели задач очень удобным, если окно свёрнуто

Последний раз редактировалось Johny777, 11-06-2012 в 14:02.

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

Отправлено: 03:03, 11-06-2012 | #239


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


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

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


Цитата Johny777:
доработал немного "проценты установки" (под свои нужды)
а именно добавил при помощи этого примера (смена названия кнопки в панели задач) »
так короче
читать дальше »
Код: Выделить весь код
[Setup]
AppName=Test
AppVerName=Test
CreateAppDir=false
InternalCompressLevel=none
Compression=none

[ Code]
procedure InitializeWizard;
begin
  Application.Title:='NewTitle';
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:10, 11-06-2012 | #240



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход