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

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

vint56

Ветеран
Проверенный
Yalsrof
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

Код:
var
AutoRun: TSetupForm;
ContinueInstall: boolean;
Ok: TLabel;
TextA: TLabel;
TextB: TLabel;
Logo: TLabel;

procedure LogoClick(Sender: TObject);
var
 ErrorCode: Integer;
begin
 ShellExec('', 'http://krinkels.org/showthread.php?p=18597#post18597', '', '', SW_SHOW, ewNoWait, ErrorCode);
end;

procedure OkClick(Sender: TObject);
begin
ContinueInstall:=True;
AutoRun.Close;
end;

function AutoRunExec: boolean;
begin
ContinueInstall:=False;
AutoRun := CreateCustomForm;
with AutoRun do begin
ClientWidth:=ScaleX(365);
ClientHeight:=ScaleY(220);
Position := poScreenCenter;
end;

Logo := TLabel.Create(CreateCustomForm);
with Logo do
begin
SetBounds(ScaleX(30), ScaleY(190), ScaleX(75), ScaleY(25));
Parent := AutoRun;
Caption := 'krinkels.org';
OnClick:=@LogoClick
Font.Color := $d77a02;
Font.Height := -16;
Font.Name := 'Tahoma';
Font.Style := [fsBold];
Cursor := crHand;
end;

Ok := TLabel.Create(CreateCustomForm);
with Ok do
begin
SetBounds(ScaleX(300), ScaleY(190), ScaleX(75), ScaleY(25));
Parent := AutoRun;
Caption := 'ok';
OnClick:=@OkClick
Font.Color := $d77a02;
Font.Height := -16;
Font.Name := 'Tahoma';
Font.Style := [fsBold];
Cursor := crHand;
end;

TextA := TLabel.Create(CreateCustomForm);
with TextA do
begin
Parent := AutoRun;
Caption := 'Свой текст!';
Font.Color := $d77a02;
Font.Height := -16;
Font.Name := 'Tahoma';
Font.Style := [fsBold];
ParentFont := False;
Left := ScaleX(135);
Top := ScaleY(0);
Width := ScaleX(100);
Height := ScaleY(20);
end;

TextB := TLabel.Create(CreateCustomForm);
with TextB do
begin
Parent := AutoRun;
Alignment := taCenter;
Caption := 'Свой текст!';
Font.Color := $d77a02;
Font.Height := -16;
Font.Name := 'Tahoma';
Font.Style := [fsBold];
ParentFont := False;
Left := ScaleX(0);
Top := ScaleY(20);
Width := ScaleX(370);
Height := ScaleY(170);
end;

AutoRun.ShowModal;
AutoRun.Free;
Result:=ContinueInstall;
end;

function InitializeSetup: Boolean;
begin
Result:=AutoRunExec;
end;

procedure DeinitializeSetup;
begin
if ContinueInstall then begin
end;
end;[/SPOILER]
 

Tolyak26

Новичок
Привет всем. Снова хочу попросить вашей помощи. Нужно реализовать показ доступного (свободного) места на диске, например как тут:
 

Tolyak26

Новичок
Shegorat, Спасибо. Забыл о FAQ.

Еще кое-что. Как вставить Custom Message в выделенное место:
procedure DirEditOnChange(Sender: TObject);
var Drive: String;
begin
Drive:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Drive, True, FreeMB, TotalMB);
// TotalSpaceLabel.Caption:= 'Всего места на диске: '+MbOrTb(TotalMB);
FreeSpaceLabel.Caption:= 'Available of disk space: '+MbOrTb(FreeMB)+'.';
// InstallSpacelabel.Caption:= 'Требуется места для установки: '+MbOrTb({#NeedInstallSize});
// NeedSpaceLabel.Caption:= 'Требуется места на диске: '+MbOrTb({#NeedSize});
WizardForm.NextButton.Enabled:= (FreeMB>{#NeedSize})and(FreeMB>{#NeedSize}) ;
end;
Я уже вставлял Custom Message туда, но старый скрипт был утерян, поэтому сам уже не могу сделать.
---
И как убрать выделенную надпись на странице готовности:
 

vint56

Ветеран
Проверенный
Tolyak26
#define NeedSize 4380
#define NeedInstallSize 7890
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
DefaultGroupName=MyApp

[CustomMessages]
TotalSpace=Всего места на диске:
FreeSpace=Доступно места на диске:
InstallSpace=Требуется места для установки:
NeedSpace=Требуется места на диске:

Код:
var
  TotalSpaceLabel, FreeSpaceLabel, NeedSpacelabel, InstallSpaceLabel: TLabel;
  FreeMB, TotalMB: Cardinal;

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

function MbOrTb(Float: Extended): String;
begin
  if Float < 1024 then Result:= NumToStr(Float)+' Мб' else
    if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' Гб' else
      Result:= NumToStr(Float/(1024*1024))+' Тб';
end;

procedure DirEditOnChange(Sender: TObject);
var Drive: String;
begin
  Drive:= ExtractFileDrive(WizardForm.DirEdit.Text);
  GetSpaceOnDisk(Drive, True, FreeMB, TotalMB);
  TotalSpaceLabel.Caption:= ExpandConstant('{cm:TotalSpace} ')+MbOrTb(TotalMB);
  FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace} ')+MbOrTb(FreeMB)+' ('+IntToStr(round(FreeMB*100/TotalMB))+'%)';
  InstallSpacelabel.Caption:= ExpandConstant('{cm:InstallSpace} ')+MbOrTb({#NeedInstallSize});
  NeedSpaceLabel.Caption:= ExpandConstant('{cm:NeedSpace} ')+MbOrTb({#NeedSize});
  WizardForm.NextButton.Enabled:= (FreeMB>{#NeedInstallSize})and(FreeMB>{#NeedSize})  ;
end;

procedure InitializeWizard();
begin
  TotalSpaceLabel:= TLabel.Create(WizardForm);
  TotalSpaceLabel.AutoSize:= False;
  TotalSpaceLabel.SetBounds(0, 120, 300, 20);
  TotalSpaceLabel.Parent:= WizardForm.SelectDirpage;

  FreeSpaceLabel:= TLabel.Create(WizardForm);
  FreeSpaceLabel.AutoSize:= False;
  FreeSpaceLabel.SetBounds(0, 140, 300, 20);
  FreeSpaceLabel.Parent:= WizardForm.SelectDirpage;

  InstallSpacelabel:= TLabel.Create(WizardForm);
  InstallSpacelabel.AutoSize:= False;
  InstallSpacelabel.SetBounds(0, 160, 300, 20);
  InstallSpacelabel.Parent:= WizardForm.SelectDirpage;

  NeedSpaceLabel:= TLabel.Create(WizardForm);
  NeedSpaceLabel.AutoSize:= False;
  NeedSpaceLabel.SetBounds(0, 180, 300, 20);
  NeedSpaceLabel.Parent:= WizardForm.SelectDirpage;

  WizardForm.DirEdit.OnChange:=@DirEditOnChange;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpSelectDir then begin
    DirEditOnChange(nil)
  end;
end;[/SPOILER]

[SPOILER="как убрать выделенную надпись на странице готовности:"]procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpSelectDir then begin
    DirEditOnChange(nil)
  end;
  if CurPageID=wpReady then begin
  WizardForm.ReadyMemo.Lines.Delete(3); вот удалает надпись на 3 строчке
  WizardForm.ReadyMemo.Lines.Delete(3);
  WizardForm.ReadyMemo.Lines.Delete(3);
end;
end;[/SPOILER]
 
Последнее редактирование:

Tolyak26

Новичок
vint56, Большое спасибо. Выручили. Теперь последнее, что меня беспокоит. Вот вы дали код для вставки Custom Message. Там еще нужно мне заменить Мб и Гб. Я попытался сделать по аналогии, но ругается на неправильный синтаксис.
 

vint56

Ветеран
Проверенный
Tolyak26
#define NeedSize 438
#define NeedInstallSize 789

[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
DefaultGroupName=MyApp


[Components]
Name: "Backup"; Description: "Сохранить резервные копии файлов"

[Types]
Name: "Backup"; Description: "Выборочная установка"; Flags: iscustom


[CustomMessages]
TotalSpace=Всего места на диске:
FreeSpace=Доступно места на диске:
InstallSpace=Требуется места для установки:
NeedSpace=Требуется места на диске:
Mb=Мб
Gb=Гб

Код:
var
  TotalSpaceLabel, FreeSpaceLabel, NeedSpacelabel, InstallSpaceLabel: TLabel;
  FreeMB, TotalMB: Cardinal;

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

function MbOrTb(Float: Extended): String;
begin
  if Float < 1024 then Result:= NumToStr(Float)+ ExpandConstant(' {cm:Mb}') else
    if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+ ExpandConstant(' {cm:Gb}') else
      Result:= NumToStr(Float/(1024*1024))+' Тб';
end;

procedure DirEditOnChange(Sender: TObject);
var Drive: String;
begin
  Drive:= ExtractFileDrive(WizardForm.DirEdit.Text);
  GetSpaceOnDisk(Drive, True, FreeMB, TotalMB);
  TotalSpaceLabel.Caption:= ExpandConstant('{cm:TotalSpace} ')+MbOrTb(TotalMB);
  FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace} ')+MbOrTb(FreeMB)+' ('+IntToStr(round(FreeMB*100/TotalMB))+'%)';
  InstallSpacelabel.Caption:= ExpandConstant('{cm:InstallSpace} ')+MbOrTb({#NeedInstallSize});
  NeedSpaceLabel.Caption:= ExpandConstant('{cm:NeedSpace} ')+MbOrTb({#NeedSize});
  WizardForm.NextButton.Enabled:= (FreeMB>{#NeedInstallSize})and(FreeMB>{#NeedSize})  ;
end;

procedure InitializeWizard();
begin
  TotalSpaceLabel:= TLabel.Create(WizardForm);
  TotalSpaceLabel.AutoSize:= False;
  TotalSpaceLabel.SetBounds(0, 120, 300, 20);
  TotalSpaceLabel.Parent:= WizardForm.SelectDirpage;

  FreeSpaceLabel:= TLabel.Create(WizardForm);
  FreeSpaceLabel.AutoSize:= False;
  FreeSpaceLabel.SetBounds(0, 140, 300, 20);
  FreeSpaceLabel.Parent:= WizardForm.SelectDirpage;

  InstallSpacelabel:= TLabel.Create(WizardForm);
  InstallSpacelabel.AutoSize:= False;
  InstallSpacelabel.SetBounds(0, 160, 300, 20);
  InstallSpacelabel.Parent:= WizardForm.SelectDirpage;

  NeedSpaceLabel:= TLabel.Create(WizardForm);
  NeedSpaceLabel.AutoSize:= False;
  NeedSpaceLabel.SetBounds(0, 180, 300, 20);
  NeedSpaceLabel.Parent:= WizardForm.SelectDirpage;

  WizardForm.DirEdit.OnChange:=@DirEditOnChange;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpSelectDir then begin
    DirEditOnChange(nil)
  end;
  if CurPageID=wpReady then begin
  WizardForm.ReadyMemo.Lines.Delete(3);
  WizardForm.ReadyMemo.Lines.Delete(3);
  WizardForm.ReadyMemo.Lines.Delete(3);
end;
end;[/SPOILER]
 

sergey3695

Ветеран
Модератор
DICI BF, с библиотекой есть примеры. А лучше прочитай что на рубоарде ответил. Поверь,ботва лучше. Т.к. фейри предназначена для анимации .gif и там ёще че-то. Но не как под это она не заточена,хоть и поддерживает .png .
 

DICI BF

Новичок
Я знаю что ботва гораздо лучше, Пока на неё не перехожу из за отсутствия опыта
Есть ещё вопрос можно ли заменить сообщение после деинсталляции
 

sergey3695

Ветеран
Модератор
DICI BF, какого опыта? Он не нужен. Примеры и сам модуль хороший фак. Сообщение можно конечно сделать. Только это геморройно.
_____
nik1967, точно. Не подумал.
 
Последнее редактирование:

nik1967

Old Men
Проверенный
Есть ещё вопрос можно ли заменить сообщение после деинсталляции
Сообщение можно конечно сделать. Только это геморройно.
Если сделать самому - то да, гемморно.
[SOURCE="inno"][Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp

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

[Messages]
UninstalledAll=Ну и нахрена удалил?[/SOURCE]
 

LMFAO

Новичок
Выбор языков в инсталляторе

Привет всем. Попрошу Вас написать сюда несколько способов добавления в инсталлятор выбора языков с подробным описанием как их использовать. Заранее спасибо:)
 

vint56

Ветеран
Проверенный
LMFAO лишние языки убереш
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
Name: "basque"; MessagesFile: "compiler:Languages\Basque.isl"
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "serbiancyrillic"; MessagesFile: "compiler:Languages\SerbianCyrillic.isl"
Name: "serbianlatin"; MessagesFile: "compiler:Languages\SerbianLatin.isl"
Name: "slovak"; MessagesFile: "compiler:Languages\Slovak.isl"
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
 

LMFAO

Новичок
LMFAO лишние языки убереш
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
Name: "basque"; MessagesFile: "compiler:Languages\Basque.isl"
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "serbiancyrillic"; MessagesFile: "compiler:Languages\SerbianCyrillic.isl"
Name: "serbianlatin"; MessagesFile: "compiler:Languages\SerbianLatin.isl"
Name: "slovak"; MessagesFile: "compiler:Languages\Slovak.isl"
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
Можешь мне дать свой скрипт, я просто не знаю что и где прописать, чтобы оно распаковывало тот язык, который выбрал
 

vint56

Ветеран
Проверенный
LMFAO если честно я не понял тебя ты просил добавить свой языки я дал тебе пример но это все делает в inno setup там есть мастер установки там можеш дайти до языков и выберещ какие тебе нужны
 

LMFAO

Новичок
LMFAO если честно я не понял тебя ты просил добавить свой языки я дал тебе пример но это все делает в inno setup там есть мастер установки там можеш дайти до языков и выберещ какие тебе нужны
Ты меня не понял. Мне нужно вот что
 

vint56

Ветеран
Проверенный
LMFAO
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

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

[Components]
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive;
Name: text\eng; Description: Английский; Flags: exclusive;
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive;
Name: voice\eng; Description: Английский; Flags: exclusive;
 

LMFAO

Новичок
LMFAO
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

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

[Components]
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive;
Name: text\eng; Description: Английский; Flags: exclusive;
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive;
Name: voice\eng; Description: Английский; Flags: exclusive;
Это знаю, но есть несколько способов распаковки, я хочу знать какие, и подробное описание использования
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху