Проблема Помогите пожалуйста прикрутить скрипт...

EvilAlex

Старожил
Доброго времени суток!
В силу своей криворукости, прикрутил скрипт после чего во время установки стала вылетать ошибка
Посмотреть вложение 2542

Начала вылазить когда переделывал прогрессбар, но из-за чего я незнаю...
В общем люди добрые помогите прикрутить один скрипт к другому
Код:
[Setup]
AppName=Example
AppverName=Example
DefaultDirName={pf}\Example
[Files]
Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs
[Code]
var
//ResizeButton: TButton;
PageResized: Boolean;
CheckBoxResize: TNewCheckBox;
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';
procedure MinimizeInstallPage();
begin
//  if CurPageID=wpInstalling then
   begin
    WizardForm.BorderStyle:=bsDialog;
    WizardForm.MainPanel.Visible:=False;
    WizardForm.Width:=ScaleX(320);
    WizardForm.Height:=ScaleY(127);
    WizardForm.InnerNotebook.Left:=ScaleX(7);
    WizardForm.InnerNotebook.Top:=ScaleY(7);
    WizardForm.InnerNotebook.Width:=ScaleX(300);
    WizardForm.StatusLabel.Left:=ScaleX(0);
    WizardForm.StatusLabel.Top:=ScaleY(0);
    WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
    WizardForm.FileNameLabel.Left:=ScaleX(0);
    WizardForm.FileNameLabel.Top:=ScaleY(17);
    WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
    WizardForm.ProgressGauge.Top:=ScaleY(37);
    WizardForm.ProgressGauge.Left:=ScaleX(0);
    WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
    WizardForm.CancelButton.Left:=ScaleX(122);
    WizardForm.CancelButton.Top:=ScaleY(70);
    WizardForm.Left:=GetSystemMetrics(16)-ScaleX(330);
    WizardForm.Top:=GetSystemMetrics(17)-ScaleX(110);
    CheckBoxResize.SetBounds(ScaleX(10), ScaleY(70),ScaleX(105), ScaleY(23));
    PageResized:= True
   end;
end;
procedure ResumeInstallPage();
begin
  WizardForm.Width:= ScaleX(503);
  WizardForm.Height:= ScaleY(388);
  WizardForm.Position:= poScreenCenter;
  WizardForm.MainPanel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(497), ScaleY(58));
  WizardForm.MainPanel.Show;
  WizardForm.Bevel1.Show;
  WizardForm.InnerNotebook.SetBounds(ScaleX(40), ScaleY(72), ScaleX(417), ScaleY(237));
  WizardForm.StatusLabel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(16));
  WizardForm.FilenameLabel.SetBounds(ScaleX(0), ScaleY(16), ScaleX(417), ScaleY(16));
  WizardForm.ProgressGauge.SetBounds(ScaleX(0), ScaleY(42), ScaleX(417), ScaleY(21));
  WizardForm.CancelButton.SetBounds(ScaleX(412), ScaleY(327), ScaleX(75), ScaleY(23));
  CheckBoxResize.SetBounds(ScaleX(10), ScaleY(327),ScaleX(105), ScaleY(23));
  //CheckBoxResize.Caption:= 'Minimize';
  PageResized:= False;
end;
procedure CheckBoxResizeOnClick(Sender: TObject);
begin
If PageResized then
  ResumeInstallPage
else
  MinimizeInstallPage;
end;
procedure InitializeWizard();
begin
  //Выносим кнопку "Отмена" на передний план
  WizardForm.CancelButton.BringToFront;
  { CheckBoxResize }
  CheckBoxResize := TNewCheckBox.Create(WizardForm);
  with CheckBoxResize do
  begin
    Parent := WizardForm;
    Left := ScaleX(24);
    Top := ScaleY(327);
    Width := ScaleX(113);
    Height := ScaleY(17);
    Caption := 'Компактный вид';
    OnClick:= @CheckBoxResizeOnClick
    CheckBoxResize.Hide;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpInstalling then CheckBoxResize.Show;
if CurPageID = wpFinished
then
  begin
  WizardForm.Width:=502;{Размер окна по горизонтали}
  WizardForm.Height:=392;{Размер окна по вертикали}
  WizardForm.Position:=poScreenCenter; {Возврат в исходное состояние}
  CheckBoxResize.Hide;
end
end;

Заранее огромное спасибо!
 

EvilAlex

Старожил
Спасибо большое! Я тоже так прикрутил сначала, но когда начал дизайн переделывать под стиль всего установщика, то полезла такая ошибка и все лейблы с бевелами слетели....

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

vint56

Ветеран
Проверенный
EvilAlex,
wpFinished:
begin
// PanelM.Hide;

if (CurPageID = wpFinished) and ISDoneError then
begin
// PanelM.Hide;
 

EvilAlex

Старожил
Переделал форму отмены, теперь она везде одинаковая, вот только если нажать на крестик или кнопку "Отмены" во время установки, то установщик начнет откат изменений и удалит все, при этом не обращая внимание на саму форму отмены...
Как это исправить ? Заранее спасибо, скрипт ниже.

З.Ы. А так вроде бы все уже сделал))) Приношу извинения за то что наверное уже всем надоел...=))
 

Вложения

Последнее редактирование:

EvilAlex

Старожил
Помогите пожалуйста, сам так и не смог решить проблему при отмене во время установки... Если нажать отмена во время установки. то появиться форма отмены, только вот установщик начнет откат изменений не зависимо от того что вы дальше будете делать, после нажатия на кнопку отмена, он не ставит установку на паузу и не ждет вашего выбора, а просто откатывает все что сделал. и показывает страницу финиша с ошибкой установки.... На данный момент эта единственная проблема, в остальном скрипт рабочий и мне нравиться... Буду благодарен если поможете, заранее всем кто откликнулся спасибо! Всем добра!
 

sergey3695

Ветеран
Модератор
Ну дык
Код:
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
  SuspendProc;
  Cancel := ShowCancelMessage;
  ISDoneCancel:=1;
  ResumeProc;
end;
все правильно. ISDoneCancel:=1; всегда будет. Наверно if Cancel then ISDoneCancel:=1;.
Где лейблы диска
Код:
  TotalSpaceLabel.SetBounds(61, 260, 300, 20);
ScaleX и ScaleY надо, а то съезжает у меня.
Не проверял. Должно помочь.
 

EvilAlex

Старожил
sergey3695, помогло, теперь ставится на паузу, но если нажать да, то он не скрывает панель с сообщением отмены, и просто откатывает, как ее скрыть после нажатия да на странице где идет откат...
 
Последнее редактирование:

sergey3695

Ветеран
Модератор
да блин...на кнопку.
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
 

EvilAlex

Старожил
да блин...на кнопку.
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
Код:
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
  SuspendProc;
  Cancel := ShowCancelMessage;
  if Cancel then ISDoneCancel:=1;
  ResumeProc;

if CurPageID=wpInstalling then
  begin
    Panel4.Hide;
  end;
end;
Жму на кнопку и она ни чего не делает теперь...
 

sergey3695

Ветеран
Модератор
Жму на кнопку и она ни чего не делает теперь...
:clapping:мне ж не трудно дописать кусок. но ты не понимаешь что творится в скрипте.
ShowCancelMessage; - показывает панель. и затем ты сразу скрываешь. => надо добавить условие. if Cancel then ISDoneCancel:=1; как здесь скорее всего.
В силу своей криворукости
и так сойдет ) ничего я такой же.
 
Сверху