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

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

AlexandR

Новичок
[-code]
function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall';
procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(WizardForm.Handle,$0112,$F012,0)
end;
procedure InitializeWizard;
begin
with WizardForm do begin
BorderStyle:=bsNone;
OuterNotebook.Top:=ScaleX(25);
Center;
OnMouseDown:=@MouseDown;
end;
Да это ну чтобы только еще и перетаскивалось...
 

LexBell

Борода
Супер модератор

AlexandR

Новичок
Да я просто имел ввиду чтоб перетаскивалась за любую область как в этом примере...
Код:
[-code]
function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall'; 
 
procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
begin 
  ReleaseCapture; 
  SendMessage(WizardForm.Handle,$0112,$F012,0) 
end; 
 
procedure InitializeWizard; 
begin 
with WizardForm do begin 
    BorderStyle:=bsNone; 
    Bevel.Hide; 
    InnerNotebook.Hide; 
    OuterNotebook.Hide; 
    Center; 
    OnMouseDown:=@MouseDown;
  end; 
end;
 

LexBell

Борода
Супер модератор
Да я просто имел ввиду чтоб перетаскивалась за любую область как в этом примере...
У меня вот так вышло, если не скрывать OuterNotebook
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[*code]
type
  TANewStatic = record
    Static  : TNewStaticText;
  end;

var
  ANewStatic : array of TANewStatic;

function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall';

procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  SendMessage(WizardForm.Handle,$0112,$F012,0)
end;

procedure AddStaticToArray(st:TNewStaticText);
var
  i:integer;
begin
  i:=GetArrayLength(ANewStatic);
  SetArrayLength(ANewStatic,i+1);
  ANewStatic[i].Static:=st;
  ANewStatic[i].Static.OnMouseDown:=@MouseDown;
end;

procedure StaticChange(c:TWinControl);
var
  i:integer;
begin
  for i:=0 to c.ControlCount-1 do
    if c.Controls[i] is TWinControl then begin
      if c.Controls[i] is TNewStaticText then AddStaticToArray(TNewStaticText(c.Controls[i]));
      if TWinControl(c.Controls[i]).ControlCount>0 then StaticChange(TWinControl(c.Controls[i]));
    end;
end;

procedure InitializeWizard;
var i:integer;
begin
with WizardForm do begin
    BorderStyle:=bsNone;

  end;
for i:=0 to 18 do
  begin
    with TLabel.Create(WizardForm) do
    begin
    BringToFront;
      Case i of
      0:Parent := WizardForm;
      1:Parent := WizardForm.OuterNotebook;
      2:Parent := WizardForm.InnerNotebook;
      3:Parent := WizardForm.InnerPage;
      4:Parent := WizardForm.WelcomePage;
      5:Parent := WizardForm.LicensePage;
      6:Parent := WizardForm.PasswordPage;
      7:Parent := WizardForm.InfoBeforePage;
      8:Parent := WizardForm.UserInfoPage;
      9:Parent := WizardForm.SelectDirPage;
      10:Parent := WizardForm.SelectComponentsPage;
      11:Parent := WizardForm.SelectProgramGroupPage;
      12:Parent := WizardForm.SelectTasksPage;
      13:Parent := WizardForm.ReadyPage;
      14:Parent := WizardForm.PreparingPage;
      15:Parent := WizardForm.InstallingPage;
      16:Parent := WizardForm.InfoAfterPage;
      17:Parent := WizardForm.FinishedPage;
      18:Parent := WizardForm.MainPanel;
      end;
      Transparent := True;
      Align := alClient;
      OnMouseDown:=@MouseDown;
    end;
  end;
  StaticChange(WizardForm);
end;
 

Spider

Новичок
Привет всем! Подскажите как можно сделать чтоб страниц вообще не было,а выходило сообщение о запросе установить программу ДА/Нет, а в конце также выходило сообщение типо программа установлена,как здесь...
 
Последнее редактирование:

sergey3695

Ветеран
Модератор
Привет всем! Подскажите как можно сделать чтоб страниц вообще не было,а выходило сообщение о запросе установить программу ДА/Нет, а в конце также выходило сообщение типо программа установлена,как здесь...
А как же выбор директории установки программы? человек же не будет знать куда поставилась прога. :unknown:
 

Atari

Новичок
Если в процедуре CurPageChanged, к стандартным страницам можно обратиться через ...if CurPageID = wpНазваниеСтраницы then..., то как тогда обратиться к созданной странице (например CustomPage)?
 

DaRKdemoN

Участник
Проверенный
Spider, как вариант, запускаешь с /VERYSILENT такой код
procedure InitializeWizard();
begin
if MsgBox('Are you sure?', mbConfirmation, MB_YESNO) = IDNO then Abort;
end;

procedure DeinitializeSetup();
begin
MsgBox('finsh',mbInformation,0);
end;
конечно можно скрыть wizardform и посылать next'у клик, чем запускать с /VERYSILENT, но я не стал заморачиваться

Atari, if CurPageID = CustomPage.ID...

Добавлено через 8 минут
А как же выбор директории установки программы? человек же не будет знать куда поставилась прога.
ну, это уже дело репакера что и как делать(делать ли удобства для юзера иль для себя). мне, например, более по нраву удобство и минимальность - помню скрипт C&C: Renegade от Gnom'а :up:, так вот там и есть то что мне по нраву ;)
 
Последнее редактирование:

DaRKdemoN

Участник
Проверенный
Atari, как это не работает? тогда щас пример кину

Добавлено через 1 минуту
var
custompage: TWizardPage;

procedure InitializeWizard();
begin
custompage:= CreateCustomPage(1,'caption','description');
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = custompage.ID then MsgBox('работает ;)',mbInformation,0);
end;
 

Spider

Новичок
sergey3695 написал(а):
А как же выбор директории установки программы? человек же не будет знать куда поставилась прога. :unknown:
Деректория на стандарте в C:\Program Files\...
__________________________________________________

Может всетаки у кого нибудь примерчик запылился тихой установки программ через сообщения?...
 
Последнее редактирование:

Atari

Новичок
DaRKdemoN, спасибо, все работает. Просто я объявил новую страницу не глобально, а в InitializeWizard)
 

Spider

Новичок
Edison007 написал(а):
если на локальном диске С нет достаточно места?
Просто у тихой установки стандартный путь...

Spider, а чем не подходит этот вариант?
Хотелысь бы только 2 сообщение без страниц...
(Первое сообщение о запросе установить программу ДА/Нет, а в конце также выходило сообщение типо программа установлена)
 

AlexandR

Новичок
Привет всем!...Как можно чтоб перед установкой сначала скопировался один файл в C:\Windows\System32 ?
 
Последнее редактирование:

Winst@n

Участник
Проверенный
Возник вопрос, создал страницу через редактор форм каким образом теперь можно данную страницу закрепить в CurPageChanged что бы на нее вешать свои лейблы и т.д.
Так как скрыты:
WizardForm.InnerNotebook
WizardForm.OuterNotebook
 

vint56

Ветеран
Проверенный
Winst@n, а ты посмотри как Юршат сделал в Need for Speed™ Undercover
там же тоже скрыты WizardForm.InnerNotebook и WizardForm.InnerNotebook и сделаны две станички SystemPage.ID: и SelectTasksPage.ID:
procedure ShowComponents(CurPageID: Integer);
begin
case CurPageID of
SystemPage.ID:
begin
RequirementsLbl.Show;
ProcessorLbl.Show;
end;
 

Winst@n

Участник
Проверенный
vint56,
Я работал с этим скриптом только с первой версией. И старой батвой. Новый я не разу не качал. Вот значит теперь пришло
время.

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