Inno Setup (создание инсталяционных пакетов). Часть 3

Статус
В этой теме нельзя размещать новые ответы.

andrey_167

Новичок
Здравствуйте у меня появилась проблема при сжал игру но при извлечении 2 архива инсталл тупо вырубается но о одиночке извлекается все архивы
 

Dark_Delphin

Новичок
Всем привет.

Подскажите, пожалуйста, почему инсталлятор не прозрачный?
Библиотеку прописал.
Вот скрипт:
 

Вложения

  • 3.7 MB Просмотры: 31

urban

Старожил
Dark_Delphin, Position:=poScreenCenter; удали,но потом надо будет кнопки перетаскивать на стекло,если хочешь,или выше,проще скин юзать для такого инсталла
 
Последнее редактирование:

Dark_Delphin

Новичок
urban, кнопки на стекло это не проблема.
Код:
 iswin7_add_button(WizardForm.BackButton.Handle);
  iswin7_add_button(WizardForm.NextButton.Handle);
  iswin7_add_button(WizardForm.CancelButton.Handle);
  iswin7_add_button(WizardForm.DirBrowseButton.Handle);
  iswin7_add_button(NewButton1.Handle);
Вот не пойму почему черное теперь стало...
 
Последнее редактирование:

urban

Старожил
Dark_Delphin, как раз таки проблема,я пробовал тоже как ты написал iswin7_add_button(NewButton1.Handle); но пишет ошибку,а черный инсталл сейчас посмотрю,у меня так же было
 

yuwik

Мимокрокодил
Подскажите, как добавить кнопочку "Включение и выключение музыки" (не чрез ботву) на бордюре рядом с крестиком
 

urban

Старожил
есть пример для перенесения страницы компонентов на selectdir,мне его пару лет назад давал гном,но есть проблема в том что он медленно открывается, можно ли как-то ускорить время открытия? вот пример с чем можно пошаманить i:=i+10;
но если поставить больше или меньше то страница убежит просто

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

Код:
 var
 NewButton1: TNewButton;
 Panel1: TPanel;

 procedure NewButton1Click(Sender: TObject);
 var
 i:integer;
 begin
 i:=Panel1.Left;
 If i= -Panel1.Width then
 begin
 WizardForm.CancelButton.Enabled:=False;
 WizardForm.NextButton.Enabled:=False;
 WizardForm.BackButton.Enabled:=False;
 WizardForm.DirBrowseButton.Enabled:=False;
 while True do
 begin
 Panel1.Left:= ScaleX(i);
 WizardForm.SelectDirPage.Repaint;
 if i=0 then Break;
 i:=i+1;
 end;
 end else
 begin
 while True do
 begin
 Panel1.Left:= ScaleX(i);
 WizardForm.SelectDirPage.Repaint;
 if i=-Panel1.Width then Break;
 i:=i-1;
 end;
 WizardForm.CancelButton.Enabled:=True;
 WizardForm.NextButton.Enabled:=True;
 WizardForm.BackButton.Enabled:=True;
 WizardForm.DirBrowseButton.Enabled:=True;
 end;
 end;

 procedure InitializeWizard();
 begin
 { Panel1 }
 Panel1 := TPanel.Create(WizardForm);
 with Panel1 do
 begin
 Parent := WizardForm.SelectDirPage;
 Top := ScaleY(0);
 Width := WizardForm.SelectDirPage.Width;
 Height := WizardForm.SelectDirPage.Height;
 Left := -Panel1.Width;
 end;

 WizardForm.ComponentsDiskSpaceLabel.Parent := Panel1;
 WizardForm.ComponentsList.Parent := Panel1;
 WizardForm.TypesCombo.Parent := Panel1;
 WizardForm.SelectComponentsLabel.Parent := Panel1;

 NewButton1 := TNewButton.Create(WizardForm);
 with NewButton1 do
 begin
 Parent := WizardForm;
 Left := ScaleX(32);
 Top := ScaleY(327);
 Width := ScaleX(75);
 Height := ScaleY(25);
 Caption := 'Компоненты';
 OnClick := @NewButton1Click;
 end;
 end;

 procedure CurPageChanged(CurPageID: Integer);
 begin
 NewButton1.Hide;
 if CurPageID=wpSelectDir then NewButton1.Show;
 end;[/spoiler]
 

Shegorat

Lord of Madness
Администратор
urban
Ну чтобы панелька не убегала, нужно добавить пару условий
Код:
[noparse][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[code]
var
  NewButton1: TNewButton;
  Panel1: TPanel;

const
  step = 5; //Шаг движения панельки
  
procedure NewButton1Click(Sender: TObject);
var
  i:integer;
begin
  i:= Panel1.Left;
  If i= -Panel1.Width then begin
    WizardForm.CancelButton.Enabled:=False;
    WizardForm.NextButton.Enabled:=False;
    WizardForm.BackButton.Enabled:=False;
    WizardForm.DirBrowseButton.Enabled:=False;
    while True do begin
      Panel1.Left:= ScaleX(i);
      WizardForm.SelectDirPage.Repaint;
      if i=0 then Break;
      i:=i + Step;
      if i > 0 then i:= 0;
    end;
  end else begin
    while True do begin
      Panel1.Left:= ScaleX(i);
      WizardForm.SelectDirPage.Repaint;
      if i=-Panel1.Width then Break;
      i:=i - Step;
      if i < (-Panel1.Width) then i:= -Panel1.Width;
    end;
    WizardForm.CancelButton.Enabled:=True;
    WizardForm.NextButton.Enabled:=True;
    WizardForm.BackButton.Enabled:=True;
    WizardForm.DirBrowseButton.Enabled:=True;
  end;
end;

procedure InitializeWizard();
begin
 { Panel1 }
  Panel1 := TPanel.Create(WizardForm);
  with Panel1 do begin
    Parent := WizardForm.SelectDirPage;
    Top := ScaleY(0);
    Width := WizardForm.SelectDirPage.Width;
    Height := WizardForm.SelectDirPage.Height;
    Left := -Panel1.Width;
  end;

  WizardForm.ComponentsDiskSpaceLabel.Parent := Panel1;
  WizardForm.ComponentsList.Parent := Panel1;
  WizardForm.TypesCombo.Parent := Panel1;
  WizardForm.SelectComponentsLabel.Parent := Panel1;

  NewButton1 := TNewButton.Create(WizardForm);
  with NewButton1 do begin
    Parent := WizardForm;
    Left := ScaleX(32);
    Top := ScaleY(327);
    Width := ScaleX(75);
    Height := ScaleY(25);
    Caption := 'Компоненты';
    OnClick := @NewButton1Click;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  NewButton1.Hide;
  if CurPageID=wpSelectDir then NewButton1.Show;
end;[/noparse]
 

Shegorat

Lord of Madness
Администратор
Как поле сделать пустым?
DefaultDirName={pf}
Непонятно зачем, но можно так, если я правильно понял
Код:
[noparse][Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={code:GetEmptyDir}

[code]

function GetEmptyDir(S: String): String;
begin
  Result:= '';
end;[/noparse]
 

Dark_Delphin

Новичок
Shegorat, это тоже не помогает.
У меня проблема в том, что почему-то автоматически создается "Новая папка", а такого не должно быть.
Нужно, чтобы указать папку с игрой и в папку с игрой распаковывались файлы, но чтобы не создавалась папка.
Вот так...

Заранее благодарен.
 

Вложения

Shegorat

Lord of Madness
Администратор
У меня проблема в том, что почему-то автоматически создается "Новая папка", а такого не должно быть.
Нужно, чтобы указать папку с игрой и в папку с игрой распаковывались файлы, но чтобы не создавалась папка.
Смотрим в сторону справки. Setup => AppendDefaultDirName
Код:
AppendDefaultDirName=false
 

Dark_Delphin

Новичок
А кто знает как можно исправить проблему:
В ХР плохо отображается инсталлятор (Хотябы кнопки отображались бы).
А в 7 нормально все.
Скриншот из 7.
Скриншот из ХР
Исходник.
 

Вложения

Статус
В этой теме нельзя размещать новые ответы.
Сверху