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

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

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

Ветеран


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


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

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


Изменения
Автор: Serega
Дата: 13-08-2011
Вложения
Тип файла: 7z Inno Setup [все вопросы] часть 1.7z
(1.34 Mb, 900 просмотров)
Тип файла: 7z Inno Setup [все вопросы] часть 2.7z
(3.12 Mb, 798 просмотров)
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

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


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

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 00:28, 04-11-2010

 

Аватара для Gnom_aka_Lexander

Ветеран


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

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


Rostlv, Тут фейковый прогресс-бар, я пока ищу решение для нормального отображения, но, похоже, без перепаковки в главный дистр того, для чего прогресс отображать нужно, не получится.
ksunechkin, сейчас попробую

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


Последний раз редактировалось Gnom_aka_Lexander, 26-12-2010 в 21:21.

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

Отправлено: 21:08, 26-12-2010 | #271



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

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


Старожил


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

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


Serega, именно такой прогрессбар и нужен, чтобы брал стиль из системы, но в XP бегунка нет. Только должен быть расположен на странице основного прогрессбара, немного ниже. И привязать его к секции Run, заодно соединить с кодом, который я давал в предыдущем сообщении. Думаю, это пригодится не только мне, но и многим другим, ведь из Run многие устанавливают доп. ПО. К сожалению, сам я не смогу решить эту задачу.
Нашёл как добавить второй прогрессбар ниже основного, но в нём отсутствует бегунок:

читать дальше »
Код: Выделить весь код
var
  ProgressBar: TNewProgressBar;

procedure CurPageChanged(CurPageID: Integer);
var
i:Integer;
begin
If CurPageID=wpInstalling
then
 begin
  ProgressBar := TNewProgressBar.Create(WizardForm);
  ProgressBar.Left := ScaleY(40);
  ProgressBar.Top := ScaleX(180);
  ProgressBar.Width := ScaleY(415);
  ProgressBar.Height := ScaleX(18);
  ProgressBar.Parent := WizardForm;
  ProgressBar.Position := 0; //указывает количество заполняемых секторов
end;
begin
If CurPageID=wpFinished
then
ProgressBar.Hide
end;
end;


Лександер, спасибо, я его уже видел, вот только внешний вид не впечатлил, слишком грубо.

Отправлено: 21:34, 26-12-2010 | #272


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


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

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


Цитата Лександер:
ksunechkin, сейчас попробую »
Угу, и ещё пару иконок туда нацепить можно попробовать, на подобии ->
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:47, 26-12-2010 | #273


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Rostlv, Там библиотечка IsProgressBar.dll, в которой можно попробовать поковырять битмапы, которыми анимация строится, или поискать предыдущую версию, там покрасивше было, глянцевая и объемная
serg aka lain, Если не смеешся, то можно и их попробовать, текст почти сделал

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


Отправлено: 21:49, 26-12-2010 | #274


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


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

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


serg aka lain, было б неплохо и с иконками) но меня вполне устроит просто подпись...

Последний раз редактировалось Duality, 26-12-2010 в 22:19.


Отправлено: 21:53, 26-12-2010 | #275


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


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

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


Цитата Лександер:
Если не смеешся, то можно и их попробовать, текст почти сделал »
Ды нет, можно конечно, вот моя
поделка
Код: Выделить весь код
[Setup]
AppName=My Program 
AppVerName=My Program 
DefaultDirName={pf}\My Program 

[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl;

[CustomMessages]
HeaderLabelPage=Выберите тип установки
MyRadioCaption_1=Обычная установка
MyRadioCaption_2=Выборочная установка
PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен.
MyText_1=Установка будет произведена полностью в автоматическом режиме.%n(Подходит для не подготовленных пользователей)                           
MyText_2=Будет предложен выбор директории установки.%n(Для продвинутых пользователей)

[code]
function GetModuleHandle(lpModuleName: LongInt): LongInt;
 external 'GetModuleHandleA@kernel32.dll stdcall';
function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt;
 external 'ExtractIconA@shell32.dll stdcall';
function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, 
       cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
 external 'DrawIconEx@user32.dll stdcall';
function DestroyIcon(hIcon: LongInt): LongInt;
 external 'DestroyIcon@user32.dll stdcall';

const
   DI_NORMAL = 3;

var
  MyNewPage: TWizardPage;
  Rect: TRect;
  HIcon: LongInt;
  AIconFileName: String;
  MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton;

procedure GetInstTypePage();
begin
  MyNewPage := CreateCustomPage(wpWelcome,
    ExpandConstant('{cm:HeaderLabelPage}'), '');

  try
    // в конкретном примере из этого файла (C:\Windows\System32\shell32.dll) берём иконки, для пробного показа.
    // Можно использовать обычные .ico
    AIconFileName := ExpandConstant('{sys}\shell32.dll');
    //

    Rect.Left := 0;
    Rect.Top := 0;
    Rect.Right := 32;
    Rect.Bottom := 32;

    hIcon := ExtractIcon(GetModuleHandle(0), AIconFileName, 26);
    try
      with TBitmapImage.Create(WizardForm) do
      begin
        Left := ScaleX(15);
        Top := ScaleY(68);
        Width := 32;
        Height := 32;
        with Bitmap do
        begin
          Width := 32;
          Height := 32;
          Canvas.Brush.Color := clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL);
        end;
        Parent := MyNewPage.Surface;
      end;
     finally
     DestroyIcon(hIcon);
    end;

    hIcon := ExtractIcon(GetModuleHandle(0), AIconFileName, 19); 
    try
      with TBitmapImage.Create(WizardForm) do
      begin
        Left := ScaleX(15);                                                
        Top := ScaleY(138);
        Width := 32;
        Height := 32;
        with Bitmap do
        begin
          Width := 32;
          Height := 32;
          Canvas.Brush.Color := clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL);
        end;
        Parent := MyNewPage.Surface;
      end;
     finally
     DestroyIcon(hIcon);
    end;
  except
  end;

  with TNewStaticText.Create(WizardForm) do
  begin
    Width := WizardForm.InnerNotebook.Width;
    Height := ScaleY(26);
    WordWrap := True;
    Caption := ExpandConstant('{cm:PageTextHeader}');
    Parent := MyNewPage.Surface;
  end;

  MyRadioBtn_1 := TNewRadioButton.Create(WizardForm);
  with MyRadioBtn_1 do
  begin
    Top := ScaleY(50);
    Width := ScaleX(150);
    Caption := ExpandConstant('{cm:MyRadioCaption_1}');
    Checked := True;
    Parent := MyNewPage.Surface;
  end;

  with TNewStaticText.Create(WizardForm) do
  begin
    Left := ScaleX(60);
    Top := ScaleY(68);
    Width := WizardForm.InnerNotebook.Width - ScaleX(60);
    Height := ScaleY(26);
    WordWrap := True;
    Caption := ExpandConstant('{cm:MyText_1}');
    Parent := MyNewPage.Surface;
  end;

  MyRadioBtn_2 := TNewRadioButton.Create(WizardForm);
  with MyRadioBtn_2 do
  begin
    Top := ScaleY(120);
    Width := ScaleX(150);   
    Caption := ExpandConstant('{cm:MyRadioCaption_2}');
    Parent := MyNewPage.Surface;
  end;

  with TNewStaticText.Create(WizardForm) do
  begin
    Left := ScaleX(60);
    Top := ScaleY(138);
    Width := WizardForm.InnerNotebook.Width - ScaleX(60);
    Height := ScaleY(26);
    WordWrap := True;
    Caption := ExpandConstant('{cm:MyText_2}');
    Parent := MyNewPage.Surface;
  end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID >= wpSelectDir) and (PageID < wpReady) and (MyRadioBtn_1.Checked) then
     Result := True;
end;

procedure InitializeWizard();
begin
  GetInstTypePage();
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:05, 26-12-2010 | #276


Аватара для Gnom_aka_Lexander

Ветеран


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

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


А вот моя, иконки еще не приделал, но задел под них отвел , если нужно, завтра сделаю.
читать дальше »
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={sd}\My Program
OutputDir=.
OutputBaseFilename=test
[Files]
Source: NewIconImage1.png; DestDir: {tmp}; Flags: dontcopy;
Source: NewIconImage2.png; DestDir: {tmp}; Flags: dontcopy;
Source: botva2.dll; DestDir: {tmp}; Flags: dontcopy;

[CustomMessages]
HeaderLabelPage=Выберите тип установки
MyRadioCaption_1=Обычная установка
MyRadioCaption_2=Портативная установка
MyRadioDeskrip_1=Текст под первой радиокнопкой
MyRadioDeskrip_2=Текст под второй радиокнопкой

[code]
var
ISCustomPage1: TWizardPage;
NewIconImage1: TNewIconImage;
NewIconImage2: TNewIconImage;
NewRadioButton1: TNewRadioButton;
NewRadioButton2: TNewRadioButton;
NewStaticText1: TNewStaticText;
NewStaticText2: TNewStaticText;

procedure RedesignWizardForm;
begin
{ Creates custom wizard page }
ISCustomPage1 := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');

{ NewIconImage1 }
NewIconImage1 := TNewIconImage.Create(WizardForm);
with NewIconImage1 do
begin
Name := 'NewIconImage1';
Parent := ISCustomPage1.Surface;
Left := ScaleX(8);
Top := ScaleY(8);
Width := ScaleX(81);
Height := ScaleY(81);
end;

{ NewIconImage2 }
NewIconImage2 := TNewIconImage.Create(WizardForm);
with NewIconImage2 do
begin
Name := 'NewIconImage2';
Parent := ISCustomPage1.Surface;
Left := ScaleX(8);
Top := ScaleY(120);
Width := ScaleX(81);
Height := ScaleY(81);
end;

{ NewRadioButton1 }
NewRadioButton1 := TNewRadioButton.Create(WizardForm);
with NewRadioButton1 do
begin
Name := 'NewRadioButton1';
Parent := ISCustomPage1.Surface;
Left := ScaleX(112);
Top := ScaleY(8);
Width := ScaleX(185);
Height := ScaleY(17);
Caption := ExpandConstant('{cm:MyRadioCaption_1}');
end;

{ NewRadioButton2 }
NewRadioButton2 := TNewRadioButton.Create(WizardForm);
with NewRadioButton2 do
begin
Name := 'NewRadioButton2';
Parent := ISCustomPage1.Surface;
Left := ScaleX(112);
Top := ScaleY(120);
Width := ScaleX(185);
Height := ScaleY(17);
Caption := ExpandConstant('{cm:MyRadioCaption_2}');
end;

{ NewStaticText1 }
NewStaticText1 := TNewStaticText.Create(WizardForm);
with NewStaticText1 do
begin
Name := 'NewStaticText1';
Parent := ISCustomPage1.Surface;
Caption := ExpandConstant('{cm:MyRadioDeskrip_1}');
Left := ScaleX(112);
Top := ScaleY(32);
Width := ScaleX(185);
Height := ScaleY(57);
end;

{ NewStaticText2 }
NewStaticText2 := TNewStaticText.Create(WizardForm);
with NewStaticText2 do
begin
Name := 'NewStaticText2';
Parent := ISCustomPage1.Surface;
Caption := ExpandConstant('{cm:MyRadioDeskrip_2}');
Left := ScaleX(112);
Top := ScaleY(144);
Width := ScaleX(185);
Height := ScaleY(57);
end;

NewRadioButton1.TabOrder := 0;
NewStaticText1.TabOrder := 1;
NewRadioButton2.TabOrder := 2;
NewStaticText2.TabOrder := 3;
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
end;

serg aka lain, изящненько, только тогда библиотечку-бы со своими иконками, чтоб не ограничиватся системными
Я через ботву попробую, правда тяжеловато выходит для простенького скрипта....

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


Последний раз редактировалось Gnom_aka_Lexander, 26-12-2010 в 23:14.

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

Отправлено: 23:09, 26-12-2010 | #277


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


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

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


serg aka lain, спасибо - очень классно! Лександер, тоже спасибо за труд!

Отправлено: 23:29, 26-12-2010 | #278


Аватара для gur74

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


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

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


Нужна помощь, кто использовал в Inno Setup распаковку архивов FreeArc. Есть архив Glossary.arc нужно чтобы он распаковывался при выборе на SelectComponentsPage в нужную папку. Как это можно осуществить???

Отправлено: 00:02, 27-12-2010 | #279


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


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

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


Вложения
Тип файла: zip My Program.zip
(15.3 Kb, 44 просмотров)

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

Отправлено: 00:11, 27-12-2010 | #280



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход