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

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

LexBell

Борода
Супер модератор
nik1967, да, то что нужно. Пример можно?
на озоне был примен подмены содержимого по тегу.
Код:
[Setup]
AppName=My program
AppVerName=My program 1.5
DefaultDirName={pf}\My program
;DisableDirPage=True

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

[Components]
Name: WB; Description: 'Мой компьютер' - Настройки; ExtraDiskSpaceRequired: 1048576

[_code]
function OnShouldSkipPage(Sender: TWizardPage): Boolean;
begin
    if WizardForm.ComponentsList.Items.Count > 0 then WizardForm.Tag:= 1; // отображаются страницы выбора папки и компонентов
end;

Procedure CurPageChanged(CurPageID: Integer);
Begin
  Case CurPageID of
  wpSelectDir: if WizardForm.Tag = 1 then
    begin
        WizardForm.SelectDirPage.Notebook.ActivePage:= WizardForm.SelectComponentsPage;
        WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectComponents)
        WizardForm.Hint:= WizardForm.PageDescriptionLabel.Caption; // запомнить SetupMessage(msgSelectDirDesc)
        WizardForm.PageDescriptionLabel.Caption:= SetupMessage(msgSelectComponentsDesc)
    end;
  wpSelectComponents: if WizardForm.Tag = 1 then
    begin
        WizardForm.SelectComponentsPage.Notebook.ActivePage:= WizardForm.SelectDirPage;
        WizardForm.DiskSpaceLabel.Caption:= WizardForm.ComponentsDiskSpaceLabel.Caption;
        WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectDir)
        WizardForm.PageDescriptionLabel.Caption:= WizardForm.Hint // иначе вместо названия программы [name]
    end;
  end;
End;

Procedure InitializeWizard;
Begin
    PageFromID(wpSelectDir).OnShouldSkipPage:= @OnShouldSkipPage
End;
 
Последнее редактирование:

nik1967

Old Men
Проверенный
Gnom, хитрый, вперёд меня выложил :)
 
Последнее редактирование:

AlexandR

Новичок
Добрый день всем! Подскажите пожалуйста скрипт
1)Перенести проценты на середину прогресс бара и сделать жирным
2)Отпустить вниз "Прошло время"
3)Отпустить вниз "Осталось времени"
4)Чтобы не показывались извлекаемые файлы
Ну короче как тут http://i23.fastpic.ru/big/2011/0620/0c/c2f0120c3ed219a5ee4e18146d15b00c.png
 
Последнее редактирование:

vint56

Ветеран
Проверенный
dvd4el, Выбор компонентов впереди выбора пути установки
[Setup]
AppName=My Program
AppVersion=1.5
;AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

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


[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
; Компоненты Inno Setup
Name: a; Description: Inno Setup QuickStart Pack 5.4.2; Types: full
Name: a\rus; Description: Русская версия; Flags: exclusive
Name: a\eng; Description: Английская версия; Flags: exclusive

; Компоненты Inno Setup 5 - ResTools
Name: b; Description: Inno Setup (Restools) build 110319 + Inno ISCmplr build 110329; Types: full
Name: b\rus; Description: Русская версия; Flags: exclusive
Name: b\eng; Description: Английская версия; Flags: exclusive
; Компоненты InnoIDE
Name: c; Description: InnoIDE 1.0.0.78; Types: full
Name: c\rus; Description: Русская версия; Flags: exclusive
Name: c\eng; Description: Английская версия; Flags: exclusive
; Компоненты ISTool
Name: d; Description: ISTool 5.3.0.1; Types: full
Name: d\rus; Description: Русская версия; Flags: exclusive
Name: d\eng; Description: Английская версия; Flags: exclusive

; Компоненты Утилиты
Name: e; Description: Утилиты; Types: full
Name: e\a; Description: Inno Setup Unpacker 0.36; Types: full
Name: e\b; Description: Converter 0.1.4; Types: full
Код:
var
Components: TLabel; ComponentPage: TWizardPage;
SelectComponentsLabel: TLabel;

procedure InitializeWizard();
begin
   ComponentPage := CreateCustomPage(wpLicense, 'Выбор компонентов',
   'Какие компоненты должны быть установлены?');
   WizardForm.DiskSpaceLabel.Hide
   WizardForm.TypesCombo.Parent:= ComponentPage.Surface;
   WizardForm.ComponentsList.Parent:= ComponentPage.Surface
   WizardForm.ComponentsDiskSpaceLabel.Parent:= ComponentPage.Surface
   WizardForm.TypesCombo.Parent:= ComponentPage.Surface;
   WizardForm.TypesCombo.Top:= ScaleY(45)
   WizardForm.ComponentsList.Top:= ScaleY(45)
   WizardForm.ComponentsDiskSpaceLabel.Hide;
   WizardForm.ComponentsList.Height := ScaleY(165);
   SelectComponentsLabel:= TLabel.Create(WizardForm)
   with SelectComponentsLabel do
   begin
   Left:= ScaleX(40);
   Width:= WizardForm.SelectComponentsLabel.Width;
   Height:= WizardForm.SelectComponentsLabel.Height;
   Autosize:= false;
   WordWrap:= true;
   Transparent:= true;
   Caption:= WizardForm.SelectComponentsLabel.Caption;
   WizardForm.SelectComponentsLabel.Parent:= ComponentPage.Surface;
  end
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID = wpSelectComponents) then
  Result:= True;
end;[/spoiler]
 
Последнее редактирование:

ACtivity

Новичок
AlexandR,
Чтобы так было нужно играться с расположением элементов ISDone.
LabelPct1 отвечает за проценты 1_ого прогрессбара.
Parent := WizardForm.ProgressGauge; // чтоб видно было на прогрессбаре №1
Left := ISDoneProgressBar1.Width+10; // загоняешь под себя.
Top := ISDoneProgressBar1.Top + 4; // загоняешь под себя.
Font.Style := [fsBold]; // стиль текста Жирный.
Width := ScaleX(80); // загоняешь под себя.
LabelTime1 отвечает за 'Прошло времени:'
Left := ScaleX(0); // загоняешь под себя.
Top := PBTop + ScaleY(55); // загоняешь под себя.
LabelTime2 отвечает за 'Осталось времени:'
Left := ScaleX(0); // загоняешь под себя.
Top := PBTop + ScaleY(55); // загоняешь под себя.
LabelCurrFileName отвечает за строку распаковки файлов.
Тут на усмотрение, можно закоментить или удалить вообще.
 
Последнее редактирование:

AlexandR

Новичок
Спасибо FATAL!
Помогите пожалуйста,
не пойму как доп.задачи и компоненты перенести на страницу меню пуск...
и удалить страницу 'Все готово к установке' чтобы была кнопка не Далее,а установить,как тут ►...
 

vint56

Ветеран
Проверенный
AlexandR,
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
DisableReadyPage=true
OutputDir=.


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

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

[Icons]
Name: {group}\My Program; Filename: {app}\My Program.exe; Check: MakeStartMenuIcon
Name: {commondesktop}\My Program; Filename: {app}\My Program.exe; Check: MakeDesktopIcon

[Run]
Filename: {src}\DirectX\DXSETUP.exe; WorkingDir: {src}\DirectX; Parameters: /silent; StatusMsg: Идет обновление DirectX...; Check: MakeDirectX; Flags: waituntilterminated
Filename: {src}\Redist\vcredist_x86.exe; WorkingDir: {src}\Redist; Parameters: /q; StatusMsg: Идет установка VisualC++ Redist... Пожалуйста, подождите.; Check: MakeVisual and not IsWin64; Flags: waituntilterminated
Filename: {src}\Redist\vcredist_x64.exe; WorkingDir: {src}\Redist; Parameters: /q; StatusMsg: Идет установка VisualC++ Redist... Пожалуйста, подождите.; Check: MakeVisual and IsWin64; Flags: waituntilterminated

Код:
var DirectX,Visual,StartMenuIcon,DesktopIcon: TCheckBox;

function MakeDirectX: Boolean; begin Result:=DirectX.Checked; end;
function MakeVisual: Boolean; begin Result:=Visual.Checked; end;
function MakeDesktopIcon: Boolean; begin Result:=DesktopIcon.Checked; end;
function MakeStartMenuIcon: Boolean; begin Result:=StartMenuIcon.Checked;end;

procedure NoStartMenuIcon(Sender: TObject);
begin
if StartMenuIcon.Checked = false then
begin
wizardform.GroupEdit.enabled:= false;
wizardform.GroupBrowseButton.enabled:= false;
end
else
begin
wizardform.GroupEdit.enabled:= true;
wizardform.GroupBrowseButton.enabled:= true;
end;
end;

procedure InitializeWizard ();
begin
DesktopIcon:= TCheckBox.Create(WizardForm);
DesktopIcon.Parent := WizardForm.SelectProgramGroupPage;
DesktopIcon.Caption := 'Добавить ярлык на Рабочий стол';
DesktopIcon.SetBounds(ScaleX(200),WizardForm.DirEdit.Top+ScaleY(25),ScaleX(200),ScaleY(25));
DesktopIcon.TabOrder := 0;
DesktopIcon.Checked:= true;

StartMenuIcon := TCheckBox.Create(WizardForm);
StartMenuIcon.Parent := WizardForm.SelectProgramGroupPage;
StartMenuIcon.Caption := 'Создать папку в меню Пуск';
StartMenuIcon.SetBounds(ScaleX(200),WizardForm.DirEdit.Top+ScaleY(50),ScaleX(200),ScaleY(25));
StartMenuIcon.TabOrder := 0;
StartMenuIcon.Checked:= true;
StartMenuIcon.OnClick:= @NoStartMenuIcon;

DirectX:= TCheckBox.Create(WizardForm);
DirectX.Parent := WizardForm.SelectProgramGroupPage;
DirectX.Caption := 'Обновить DirectX';
DirectX.SetBounds(ScaleX(0),WizardForm.DirEdit.Top+ScaleY(25),ScaleX(200),ScaleY(25));
DirectX.TabOrder := 0;
DirectX.Checked:= true;

Visual:= TCheckBox.Create(WizardForm);
Visual.Parent := WizardForm.SelectProgramGroupPage;
Visual.Caption := 'Установить Microsoft Visual C++';
Visual.SetBounds(ScaleX(0),WizardForm.DirEdit.Top+ScaleY(50),ScaleX(200),ScaleY(25));
Visual.TabOrder := 0;
Visual.Checked:= true;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectProgramGroup then
  begin
  If WizardForm.FindComponent('NextButton') is TButton
  then
  TButton(WizardForm.FindComponent('NextButton')).Caption:='Установить';
  end;
end;[/SPOILER]
 

LexBell

Борода
Супер модератор
Нууу, можно еще так сделать:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Components]
Name: crus; Description: Русская версия; Flags: exclusive
Name: ceng; Description: Английская версия; Flags: exclusive

[Tasks]
Name: drus; Description: Русская версия; Flags: exclusive
Name: deng; Description: Английская версия; Flags: exclusive

Код:
procedure InitializeWizard();
begin
    WizardForm.SelectTasksLabel.Hide;
    WizardForm.SelectDirBitmapImage.Parent := WizardForm.SelectTasksPage;
    WizardForm.DirBrowseButton.Parent := WizardForm.SelectTasksPage;
    WizardForm.DirEdit.Parent := WizardForm.SelectTasksPage;
    WizardForm.SelectDirBrowseLabel.Parent := WizardForm.SelectTasksPage;
    WizardForm.SelectDirLabel.Parent := WizardForm.SelectTasksPage;

  with WizardForm.ComponentsList do
  begin
    TreeViewStyle := False;
    ItemHeightFixed:=True;
    Setbounds(0,ScaleY(120),ScaleX(208),ScaleY(75));
    Parent := WizardForm.SelectTasksPage;
    BorderStyle := bsNone;
    Color := clBtnFace;
  end;

  with WizardForm.TasksList do
  begin
    TreeViewStyle := True;
    ItemHeightFixed:=True;
    Setbounds(ScaleX(209),ScaleY(120),ScaleX(208),ScaleY(75));
  end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if(PageID=6)or(PageID=7)then Result:=True;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
 Case CurPageID of
  9: begin
         WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectDir);
         WizardForm.PageDescriptionLabel.Caption:= 'В какую папку вы хотите установить [AppName]?';
     end;
  end;
end;[/SPOILER] Стеб, конечно, зато кода меньше и все на голом дефолте - не нужно создаваемые чекбоксы привязывать из кода к нужным действиям, все на компонентах и задачах :)
 

shidow

Новичок
Можно ли как-нибудь вызвать такое окно

Нужно чтоб отображались файлы формата .zip
 

shidow

Новичок
FATAL, нужно чтобы в этом окне отображались файлы определенного формата. Например только формата zip
 

DeKaN

Новичок
shidow,
InnoSetup Help написал(а):
Prototype:
function GetOpenFileName(const Prompt: String; var FileName: String; const InitialDirectory, Filter, DefaultExtension: String): Boolean;

Description:
Displays a dialog box that enables the user to select an existing file. Returns True if the user selected a file, False otherwise. The name of the selected file is returned in the FileName string.

Remarks:
An example Filter: 'Text files (*.txt)|*.txt|All files (*.*)|*.*'

Example:
Код:
var
  Filename: String;
begin
  // Set the initial filename
  Filename := '';
  if GetOpenFileName('', Filename, '',
     'Text Documents (*.txt)|*.txt|All Files|*.*', 'txt') then
  begin
    // Successful; user clicked OK
    // Filename contains the selected filename
  end;
end;
 

AlexandR

Новичок
Привет всем! help
1)Как можно передвинуть "распоковка игровых ресурсов" на странице установки
2)Можно ли округлить процентный прогресс (чтобы был не 59,3% a 59% )
3)Где в скрипте можно переменовать кнопку отмены на странице установки,так чтобы кнопка растягивалась под написаный текст
4)Как добавить такую рамочку с Надписью в середине
 
Последнее редактирование:

ACtivity

Новичок
--------------------------------------------------
1) StatusLabel
Left := ScaleX(88); // подгоняй под себя, это расстояние от левого края.
Top := ScaleY(16); // высота.
--------------------------------------------------
2) -
--------------------------------------------------
3)
--------
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpReady then
begin
If WizardForm.FindComponent('CancelButton') is TButton
then
TButton(WizardForm.FindComponent('CancelButton')).Caption:='??????????'; // вместо ??? твое название.
end;
end;
--------------------------------------------------
 

AlexandR

Новичок
--------------------------------------------------
1) StatusLabel
Left := ScaleX(88); // подгоняй под себя, это расстояние от левого края.
Top := ScaleY(16); // высота.
У меня Это строка меняет расположение "Откат установки",а не "распоковка игровых ресурсов"...
 

Snoopak96

Старожил
Можно ли как-нибудь вызвать такое окно

Нужно чтоб отображались файлы формата .zip
В примерах Виктора Доброва поищи GetOpenFileName.

Добавлено через 4 минуты
AlexandR,
Вопросы простые и не интересные, были сто раз на ru-board :search:
 

ACtivity

Новичок
У меня Это строка меняет расположение "Откат установки",а не "распоковка игровых ресурсов"...
Тогда так:
--------------------------------------
procedure RedesignWizardForm;
begin
with WizardForm.StatusLabel do
begin
Left := ScaleX(80);
end;
end;
--------------------------------------
procedure InitializeWizard();
begin
RedesignWizardForm;
end;
--------------------------------------
Вот это отвечает за 'Откат установки'
StatusLabel := TLabel.Create(WizardForm);
with StatusLabel do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := 300;
Left := 0 // от левого
Top := 0 // высота
Caption := ExpandConstant('{cm:ISDoneTitleBack}');
end;
end;
-------------------------------------
В ISDone Лейбл 'Распаковка игровых архивов' накрывает 'Откат установки' если ты двигаешь лейбл 'распаковка' тем самым ты открываешь лейбл 'откат установки'.
 
Последнее редактирование:

AlexandR

Новичок
Можете ли помочь
Как добавить такую рамочку с Надписью в середине
Вроде так:
Код:
 var
   Bevel2: TBevel;

 procedure InitializeWizard();
 begin
   { Bevel2 }
   Bevel2 := TBevel.Create(WizardForm);
   with Bevel2 do
   begin
     Name := 'Bevel2';
     Parent := WizardForm.SelectProgramGroupPage;
     Left := ScaleX(20);
     Top := ScaleY(190);
     Width := ScaleX(218);
     Height := ScaleY(22);
     Shape := bsFrame;
   end;

   with WizardForm.NoIconsCheck do
   begin
     Left := ScaleX(24);
     Top := ScaleY(192);
     Width := ScaleX(209);
   end;
 end;
Но как добавить надпись у рамочки по середине как тут
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху