Вопрос Как реализовать распаковку архива с параметрами через секцию [Code].

Toni12

Новичок
Доброе утро. Возник вопрос... NRTWTEMZeFU.jpg

На предпоследней страничке установщика сделал кнопки.

C++:
  { NewCheckBox1 }
  NewCheckBox1 := TNewCheckBox.Create(WizardForm);
  with NewCheckBox1 do
  begin
    Parent := WizardForm.InfoAfterPage;
    Left := ScaleX(16);
    Top := ScaleY(120);
    Width := ScaleX(393);
    Height := ScaleY(37);
    Caption := 'Удалить папку "DAVAProject" и "packs".';
    //OnClick:= @SelectCheckBox2;
  end;
Но не совсем понимаю, как сделать так, чтобы выбранные функции выполнились при переходе на следующую страничку или после закрытия установщика. Кто-то знает как это сделать?
 

JEKE24

Новичок
Доброе утро. Возник вопрос... Посмотреть вложение 7336

На предпоследней страничке установщика сделал кнопки.

C++:
  { NewCheckBox1 }
  NewCheckBox1 := TNewCheckBox.Create(WizardForm);
  with NewCheckBox1 do
  begin
    Parent := WizardForm.InfoAfterPage;
    Left := ScaleX(16);
    Top := ScaleY(120);
    Width := ScaleX(393);
    Height := ScaleY(37);
    Caption := 'Удалить папку "DAVAProject" и "packs".';
    //OnClick:= @SelectCheckBox2;
  end;
Но не совсем понимаю, как сделать так, чтобы выбранные функции выполнились при переходе на следующую страничку или после закрытия установщика. Кто-то знает как это сделать?
code_language.pascal:
procedure CurStepChanged(CurStep: TSetupStep);
begin
Checked(CurStep);
end;


procedure Checked(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
  begin
    #TODO проверить чекбоксы и если они отмечены сделать что то
end;
end;

Pascal Scripting: Event Functions
 

Toni12

Новичок
Проблема даже в том, что я не понимаю как сделать объявление компонента, чтобы в дальнейшем его задетектить. Процедуру в процедуре объявить нельзя насколько я знаю.
 

hitman797

Новичок
@Toni12,
Код:
  TCheckBoxState = (cbUnchecked, cbChecked, cbGrayed);
  TCheckBox = class(TCustomCheckBox)
    property Alignment: TAlignment; read write;
    property AllowGrayed: Boolean; read write;
    property Caption: String; read write;
    property Checked: Boolean; read write;
    property Color: TColor; read write;
    property Font: TFont; read write;
    property ParentColor: Boolean; read write;
    property ParentFont: Boolean; read write;
    property State: TCheckBoxState; read write;
    property OnClick: TNotifyEvent; read write;
    property OnEnter: TNotifyEvent; read write;
    property OnExit: TNotifyEvent; read write;
    property Ctl3D: Boolean; read write;
    property DragCursor: Longint; read write;
    property DragMode: TDragMode; read write;
    property ParentCtl3D: Boolean; read write;
    property PopupMenu: TPopupMenu; read write;
    property OnDragDrop: TDragDropEvent; read write;
    property OnDragOver: TDragOverEvent; read write;
    property OnEndDrag: TEndDragEvent; read write;
    property OnKeyDown: TKeyEvent; read write;
    property OnKeyPress: TKeyPressEvent; read write;
    property OnKeyUp: TKeyEvent; read write;
    property OnMouseDown: TMouseEvent; read write;
    property OnMouseMove: TMouseMoveEvent; read write;
    property OnMouseUp: TMouseEvent; read write;
    property OnStartDrag: TStartDragEvent; read write;
    property OnMouseEnter: TNotifyEvent; read write;
    property OnMouseLeave: TNotifyEvent; read write;
  end;

  TNewCheckBox = class(TCheckBox)
    property ParentBackground: Boolean; read write;
  end;

if NewCheckBox1.Checked = True then
begin
// your code .............
end else begin
// your code .............
end;
if NewCheckBox1.State = cbChecked then
begin
// your code .............
end else begin
// your code .............
end;
 

Andreo Fadio

Старожил
Но не совсем понимаю, как сделать так, чтобы выбранные функции выполнились при переходе на следующую страничку или после закрытия установщика. Кто-то знает как это сделать?
Для вашего примера, как-то так:
Код:
[Setup]
AppName=MyApp
AppVerName=1.0
DefaultDirName={pf}\MyApp
DefaultGroupName=MyApp
OutputBaseFilename=Setup
OutputDir=Output

[Code]
var
  NewCheckBox1: TNewCheckBox;

  NewCheckBox1 := TNewCheckBox.Create(WizardForm.InfoAfterPage);
  with NewCheckBox1 do
  begin
    Parent := WizardForm.InfoAfterPage;
    Left := ScaleX(16);
    Top := ScaleY(120);
    Width := ScaleX(393);
    Height := ScaleY(37);
    Checked := False;
    Caption := 'Удалить папку "DAVAProject" и "packs".';
  end;

//При переходе на другую страницу
//-------------------------------------------------------------------------
function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result:= True;
  if CurPageID = wpInfoAfter then begin
   if NewCheckBox1.Checked then begin
    if DirExists(ExpandConstant('{app}')+'\DAVAProject') then
     DelTree(ExpandConstant('{app}')+'\DAVAProject', True, True, True);
    if DirExists(ExpandConstant('{app}')+'\packs') then
     DelTree(ExpandConstant('{app}')+'\packs', True, True, True);
   end; 
  end;
end;
//-------------------------------------------------------------------------

//При закрытие установщика
//-------------------------------------------------------------------------
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then
  begin
   if NewCheckBox1.Checked then begin
    if DirExists(ExpandConstant('{app}')+'\DAVAProject') then
     DelTree(ExpandConstant('{app}')+'\DAVAProject', True, True, True);
    if DirExists(ExpandConstant('{app}')+'\packs') then
     DelTree(ExpandConstant('{app}')+'\packs', True, True, True);
   end; 
  end;
end;
//-------------------------------------------------------------------------
 

Toni12

Новичок
В основном эта ошибка, завтра буду изобретать велосипед
 

Toni12

Новичок
1676440095148.png


Даже если переименовать, вылетает ошибка. Я определённо что-то делаю не так
 

Toni12

Новичок
В общем попробовал в отдельном скрипте собрать, тоже не помогло. Те же ошибки. Это точно для inno ultra 5.5.2 подходит?
 

Toni12

Новичок
В самом скрипте чёрт ногу сломит) Как с повседневными проблемами разберусь, попробую ещё раз что-то сделать, если не проканает ещё раз напишу. Ещё раз хочу поблагодарить за помощь)
 
Сверху