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

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

Atari

Новичок
DaRKdemoN, спасибо, все правильно понял, оказывается мне просто нужно было удалить
Код:
WizardForm.DirEdit.Text:= MinimizePathName(WizardForm.DirEdit.Text, WizardForm.DirEdit.Font, WizardForm.DirEdit.Width);
P.S. Просто, из-за этой строчки путь установки сжимался до размеров лейбла (Например: C:\Program Files\My Company\My Program\, до C:\...\My Program\, и инсталл видел многоточие не как сокращение, а как папку, и из-за этого нельзя было продолжить установку, а мне нужно было скрыть страницу установки.
 

Atari

Новичок
Возможно ли создать новую страницу перед страницей приветствия?
 

LexBell

Борода
Супер модератор
Возможно ли создать новую страницу перед страницей приветствия?
Насколько я знаю, нет. Но, как говорится, если очень хочется... Можно такое извращение сделать:

Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[*Code]
var
  FirstPage: TWizardPage;

procedure InitializeWizard();
var
  i:integer;
begin
  FirstPage := CreateCustomPage(wpWelcome, '', '');

  for i:=0 to WizardForm.WelcomePage.ControlCount-1 do
     WizardForm.WelcomePage.Controls[i].Parent:=FirstPage.Surface;
  for i:=0 to WizardForm.WelcomePage.ControlCount-1 do
    if WizardForm.WelcomePage.Controls[i] is TWinControl then begin
     WizardForm.WelcomePage.Controls[i].Parent:=FirstPage.Surface;
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  WizardForm.InnerNotebook.Align:=alNone;
  WizardForm.InnerNotebook.SetBounds(ScaleX(40),ScaleY(72),ScaleX(417),ScaleY(237));
  case CurPageID of
    wpWelcome:
      WizardForm.MainPanel.Hide;
    FirstPage.ID:begin
      WizardForm.InnerNotebook.Align:=alClient;
      WizardForm.MainPanel.Hide;
    end;
  else
    WizardForm.MainPanel.Show;
  end;
end;
 

Avangard

Участник
Кому надо, замена Exec. Запускает приложение и ждет его завершения. При этом инсталл остается активным. Вместо числового значения в обычном Exec(ResultCode: integer) нужно вводить логическое значение (boolean, true\false). При ошибке вернёт результат false.
 

Вложения

  • 1.6 KB Просмотры: 11

LexBell

Борода
Супер модератор
При ошибке вернёт результат false.
Обычный - тоже возвращает булевое значение.
Гуглоперевод:
Выполняет указанный исполняемый файл или пакетный файл, используя те же учетные данные Setup / Uninstall.Подождите параметр определяет, должна ли функция возвращает немедленно или подождать, пока запущен процесс termimated или простаивает. Возвращает True если указанный файл был успешно выполнен, и False в противном случае. Если True возвращается и ожидание ewWaitUntilTerminated то ResultCode возвращает код завершения процесса. Если False возвращается затем ResultCode указывает ошибки. Используйте SysErrorMessage (ResultCode), чтобы получить описание ошибки.
ResultCode - очень нужное значение, иногда только по нему можно определить, почему не сработала функция. поэтому зря ты упрямо отказываешся от его применения :)
 

AlexandR

Новичок
Привет Всем! Помогите,не получается...
При передвижении "Распаковка файлов" меняется положение установки "Дополнительного ПО" и открывается "Откат установки",как сделать чтоб при передвижении передвигался только лейбел "Распаковка файлов"?
 

ACtivity

Новичок
AlexandR,
Создай новый лейбл, а на странице установки дефолтный лейбл исдона скрой.
 

v1nt

Мимокрокодил
ребят была справка от shegorat'a и еще кого-то кто писал ее точно не помню
вообщем еще на руборде выдел щас найти не могу там было много примеров типа как картинку растянуть и т.д. подскажите где взять или может у кого осталось
 

Atari

Новичок
Как сделать кнопку, при нажатии на которую отмечаются определенные компоненты?
 

Edison007

Ветеран
Модератор
Atari
вот такой пример был
Код:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Types]
Name: full; Description: Полная установка
Name: custom; Description: Выборочная установка; Flags: iscustom

[Components]
Name: a; Description: Моя программа™; Types: full custom
Name: a\a; Description: Руководство пользователя; Types: full
Name: a\a\a; Description: Русский; Flags: exclusive
Name: a\a\b; Description: English; Flags: exclusive
Name: a\b; Description: Справка; Types: full

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: a
Source: compiler:Examples\Readme-ru.txt; DestDir: {app}; Components: a\a\a
Source: compiler:Examples\Readme-en.txt; DestDir: {app}; Components: a\a\b
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Components: a\b

[_Code]
var
  i, k, count: Integer;

procedure btnClick(Sender: TObject);
begin
  count:= WizardForm.ComponentsList.Items.Count-1;
  for i:= count downto 0 do
    begin
      case TButton(Sender).Tag of
        0: WizardForm.ComponentsList.Checked[i]:= True;
        1: WizardForm.ComponentsList.Checked[i]:= False;
      end;
      WizardForm.ComponentsList.OnClickCheck(WizardForm.ComponentsList.ItemObject[i]);
    end;
end;

procedure InitializeWizard();
begin
  for i:= 0 to 1 do
  with TButton.Create(WizardForm) do
    begin
      SetBounds(295+k,210,60,25);
      OnClick:= @btnClick;
      Parent:= WizardForm.SelectComponentsPage;
      Tag:= i;
      case i of
        0: Caption:= 'Все';
        1: Caption:= 'Ничего';
      end;
      k:= 62;
    end;
end;
 

Atari

Новичок
Edison007, данный пример у меня есть, а вот как сделать так, что бы при нажатии на кнопу выделялись не все компоненты
я не знаю
 

ACtivity

Новичок
AlexandR,
Вот пример:
---------------------------
procedure NewLabel1;
begin
NewLabel1 := TLabel.Create(WizardForm);
with NewLabel1 do begin
Name := 'NewLabel1';
Parent := WizardForm.InstallingPage;
Transparent := True;
Caption :='Установка игры'
Font.Style:= [fsBold];
Font.Size :=15;
Left := ScaleX(192);
Top := ScaleY(180);
Width := ScaleX(500);
Height := ScaleY(500);
end;
end;
............................................
procedure InitializeWizard();
begin
NewLabel1;
end;
 

AlexandR

Новичок
Ругается на строчку...
AlexandR,
Вот пример:
---------------------------
procedure NewLabel1;
begin
NewLabel1 := TLabel.Create(WizardForm);
with NewLabel1 do begin
Name := 'NewLabel1';
Parent := WizardForm.InstallingPage;
Transparent := True;
Caption :='Установка игры'
Font.Style:= [fsBold];
Font.Size :=15;
Left := ScaleX(192);
Top := ScaleY(180);
Width := ScaleX(500);
Height := ScaleY(500);
end;
end;
............................................
procedure InitializeWizard();
begin
NewLabel1;
end;
 

Winst@n

Участник
Проверенный
AlexandR,
[_code]
var
NewLabel1: TLabel;

procedure NewLabel1;
begin
NewLabel1 := TLabel.Create(WizardForm);
with NewLabel1 do begin
Name := 'NewLabel1';
Parent := WizardForm.InstallingPage;
Transparent := True;
Caption :='Установка игры'
Font.Style:= [fsBold];
Font.Size :=15;
Left := ScaleX(192);
Top := ScaleY(180);
Width := ScaleX(500);
Height := ScaleY(500);
end;
end;
............................................
procedure InitializeWizard();
begin
NewLabel1;
end;
 

AlexandR

Новичок
Теперь на эту строчку ругается...
AlexandR,
[_code]
var
NewLabel1: TLabel;

procedure NewLabel1;
begin
NewLabel1 := TLabel.Create(WizardForm);
with NewLabel1 do begin
Name := 'NewLabel1';
Parent := WizardForm.InstallingPage;
Transparent := True;
Caption :='Установка игры'
Font.Style:= [fsBold];
Font.Size :=15;
Left := ScaleX(192);
Top := ScaleY(180);
Width := ScaleX(500);
Height := ScaleY(500);
end;
end;
............................................
procedure InitializeWizard();
begin
NewLabel1;
end;
 

Avangard

Участник
AlexandR
Код:
[_code]
var
NewLabel1: TLabel;

procedure NewLabel_;
begin
NewLabel1 := TLabel.Create(WizardForm);
with NewLabel1 do begin
Name := 'NewLabel1';
Parent := WizardForm.InstallingPage;
Transparent := True;
Caption :='Установка игры'
Font.Style:= [fsBold];
Font.Size :=15;
Left := ScaleX(192);
Top := ScaleY(180);
Width := ScaleX(500);
Height := ScaleY(500);
end;
end;
............................................
procedure InitializeWizard();
begin
NewLabel_;
end;
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху