Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 6]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 6]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Отправлено: 19:06, 28-03-2013

 

Старожил


Сообщения: 242
Благодарности: 128

Профиль | Отправить PM | Цитировать


habib2302
const
LOAD_LIBRARY_AS_DATAFILE = $2;

function LoadLibraryEx(lpFileName: String; hFile: THandle; dwFlags: DWORD): THandle;
external 'LoadLibraryExA@kernel32.dll stdcall';habib2302,
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:41, 07-01-2014 | #1821



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Ivan_009

Ветеран


Сообщения: 608
Благодарности: 58

Профиль | Цитировать


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

Код: Выделить весь код
var
BmpFile: TBitmapImage;
ISCustomPage1: TWizardPage;
Panel1,Panel2: TPanel;
StatusLabel1,StatusLabel2,StatusLabel3,StatusLabel4,StatusLabel5,StatusLabel6: TLabel;
Bevel2: TBevel;
DirBevel,GroupBevel,DriveBevel: TBevel;
TotalSpaceLabel, FreeSpaceLabel, NeedSpacelabel, InstallSpaceLabel: TLabel;
FreeMB, TotalMB: Cardinal;
Label1: TLabel;
///
const
NORMAL_PRIORITY_CLASS           = $00000020;
IDLE_PRIORITY_CLASS             = $00000040;
HIGH_PRIORITY_CLASS             = $00000080;
REALTIME_PRIORITY_CLASS         = $00000100;

function SetPriorityClass(hProcess: THandle; dwPriorityClass: DWORD): BOOL;
  external 'SetPriorityClass@kernel32';

function GetCurrentProcess: THandle;
  external 'GetCurrentProcess@kernel32';
///
///
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';
///
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:TotalSpaceLabel} ')+MbOrTb(TotalMB);
  FreeSpaceLabel.Caption := ExpandConstant('{cm:FreeSpaceLabel} ')+MbOrTb(FreeMB)+' ('+IntToStr(round(FreeMB*100/TotalMB))+'%)';
  InstallSpacelabel.Caption := ExpandConstant('{cm:InstallSpacelabel} ')+MbOrTb({#NeedInstallSize});
  NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpaceLabel} ')+MbOrTb({#NeedSize});
  WizardForm.NextButton.Enabled:= (FreeMB>{#NeedInstallSize})and(FreeMB>{#NeedSize})  ;
end;

procedure InitializeWizard();
begin
WizardForm.Width:=ScaleX(586);
WizardForm.Height:=ScaleY(438);
WizardForm.Position:=poScreenCenter;
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
//WizardForm.Color:=clMenu;
///
SetPriorityClass(GetCurrentProcess, IDLE_PRIORITY_CLASS);     //óñòàíîâêà ïðèîðèòåòà äëÿ èíñòàëëÿòîðà.
///
ExtractTemporaryFile('Welcome.bmp')
ExtractTemporaryFile('Finished.bmp')

BmpFile:= TBitmapImage.Create(WizardForm)
BmpFile.Stretch:= True;
BmpFile.SetBounds(ScaleX(1),ScaleY(49), ScaleX(578), ScaleY(311))
BmpFile.Parent:= WizardForm;

with WizardForm.NextButton do
begin
Parent:=WizardForm;
Left := ScaleX(460);
Top := ScaleY(372);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.CancelButton do
begin
Parent:=WizardForm;
Left := ScaleX(460);
Top := ScaleY(372);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.BackButton do
begin
Parent:=WizardForm;
Left := ScaleX(343);
Top := ScaleY(372);
Width := ScaleX(110);
Height := ScaleY(30);
end;

// Panel
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Parent := WizardForm;
Left := ScaleX(20);
Top := ScaleY(69);
Width := ScaleX(541);
Height := ScaleY(261);
end;

Panel2 := TPanel.Create(WizardForm);
with Panel2 do
begin
Parent := Panel1;
Left := ScaleX(22);
Top := ScaleY(25);
Width := ScaleX(496);
Height := ScaleY(214);
end;

with WizardForm.ProgressGauge do
begin
Left := ScaleX(55);
Top := ScaleY(375);
Width := ScaleX(390);
Height := ScaleY(25);
Parent:= WizardForm;
end;

with WizardForm.ComponentsList do
begin
Parent:=Panel2;
Width := ScaleX(465);
Left := ScaleX(15);
Top := ScaleY(15);
Height := ScaleY(183);
end;

with WizardForm.ReadyMemo do
begin
Left := ScaleX(13);
Top := ScaleY(5);
Width := ScaleX(470);
Height := ScaleY(193);
Parent:=Panel2;
end;

// Bevel
with WizardForm.Bevel1 do
begin
Parent:=WizardForm;
Left := ScaleX(1);
Top := ScaleY(47);
Width := ScaleX(578);
Height := ScaleY(2);
end;

Bevel2 := TBevel.Create(WizardForm);
with Bevel2 do
begin
Parent := Panel1;
Left := ScaleX(10);
Top := ScaleY(11);
Width := ScaleX(520);
Height := ScaleY(240);
end;

with WizardForm.Bevel do
begin
Parent:=WizardForm;
Left := ScaleX(1);
Top := ScaleY(361);
Width := ScaleX(578);
Height := ScaleY(2);
end;

DirBevel := TBevel.Create(WizardForm);
with DirBevel do
begin
Parent := Panel1;
Left := ScaleX(22);
Top := ScaleY(25);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

GroupBevel := TBevel.Create(WizardForm);
with GroupBevel do
begin
Parent := Panel1;
Left := ScaleX(22);
Top := ScaleY(100);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

DriveBevel := TBevel.Create(WizardForm);
with DriveBevel do
begin
Parent := Panel1;
Left := ScaleX(22);
Top := ScaleY(177);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

with WizardForm.DirBrowseButton do
begin
Parent:=Panel1;
Left := ScaleX(395);
Top := ScaleY(37);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.DirEdit do
begin
Parent:=Panel1;
Left := ScaleX(43);
Top := ScaleY(42);
Width := ScaleX(330);
Height := ScaleY(25);
end;

with WizardForm.GroupBrowseButton do
begin
Parent:=Panel1;
Left := ScaleX(395);
Top := ScaleY(115);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.GroupEdit do
begin
Parent:=Panel1;
Left := ScaleX(43);
Top := ScaleY(120);
Width := ScaleX(330);
Height := ScaleY(25);
end;

// Label
TotalSpaceLabel:= TLabel.Create(WizardForm);
TotalSpaceLabel.AutoSize:= False;
TotalSpaceLabel.SetBounds(40, 195, 200, 20);
TotalSpaceLabel.Parent:= Panel1;

FreeSpaceLabel:= TLabel.Create(WizardForm);
FreeSpaceLabel.AutoSize:= False;
FreeSpaceLabel.SetBounds(40, 215, 200, 20);
FreeSpaceLabel.Parent:= Panel1;

InstallSpacelabel:= TLabel.Create(WizardForm);
InstallSpacelabel.AutoSize:= False;
InstallSpacelabel.SetBounds(285, 195, 200, 20);
InstallSpacelabel.Parent:= Panel1;

NeedSpaceLabel:= TLabel.Create(WizardForm);
NeedSpaceLabel.AutoSize:= False;
NeedSpaceLabel.SetBounds(285, 215, 200, 20);
NeedSpaceLabel.Parent:= Panel1;

WizardForm.DirEdit.OnChange:=@DirEditOnChange;

StatusLabel1:= TLabel.Create(WizardForm);
with StatusLabel1 do
begin
Parent:=WizardForm;
Left := ScaleX(20);
Top := ScaleY(5);
Width := ScaleX(578);
Height := ScaleY(20);
Font.Name:='Tahoma';
Font.Size:= 10;
Font.Style:=[fsBold];
end;

StatusLabel2:= TLabel.Create(WizardForm);
with StatusLabel2 do
begin
Parent:=WizardForm;
Left := ScaleX(32);
Top := ScaleY(25);
Width := ScaleX(578);
Height := ScaleY(20);
Font.Name:='Tahoma';
Font.Size:= 8;
end;

StatusLabel3:= TLabel.Create(WizardForm);
with StatusLabel3 do
begin
Parent := Panel1;
Left := ScaleX(43);
Top := ScaleY(18);
Width := ScaleX(496);
Height := ScaleY(20);
Font.Name:='Tahoma';
Font.Size:= 10;
end;

StatusLabel4:= TLabel.Create(WizardForm);
with StatusLabel4 do
begin
Parent := Panel1;
Left := ScaleX(43);
Top := ScaleY(92);
Width := ScaleX(496);
Height := ScaleY(20);
Font.Name:='Tahoma';
Font.Size:= 10;
end;

StatusLabel5:= TLabel.Create(WizardForm);
with StatusLabel5 do
begin
Parent := Panel1;
Left := ScaleX(43);
Top := ScaleY(170);
Width := ScaleX(496);
Height := ScaleY(20);
Font.Name:='Tahoma';
Font.Size:= 10;
end;

StatusLabel6 := TLabel.Create(WizardForm);
with StatusLabel6 do
begin
Parent := WizardForm;
Left := ScaleX(37);
Top := ScaleY(337);
Width := ScaleX(178);
Height := ScaleY(13);
end;
end;

// Ïðîïóñê ñòðàíèö
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID =wpLicense)or(PageID =wpInfoBefore)or(PageID =wpUserInfo)or(PageID =wpSelectProgramGroup)or(PageID =wpSelectTasks) then
  Result:= True;
end;

procedure ShowComponents(CurPageID: Integer);
begin
Panel1.Show;
Panel2.Show;
BmpFile.Hide;
StatusLabel3.Hide;
StatusLabel4.Hide;
StatusLabel5.Hide;
StatusLabel6.Hide;
WizardForm.DirBrowseButton.Hide;
WizardForm.DirEdit.Hide;
WizardForm.GroupBrowseButton.Hide;
WizardForm.GroupEdit.Hide;
TotalSpaceLabel.Hide;
FreeSpaceLabel.Hide;
InstallSpacelabel.Hide;
NeedSpaceLabel.Hide;
WizardForm.ProgressGauge.Hide;
Case CurPageID of
wpWelcome:
begin
StatusLabel1.Caption:= ExpandConstant('{cm:Welcome1}')
StatusLabel2.Caption:= ExpandConstant('{cm:Welcome2}')
WizardForm.NextButton.Caption := 'Äàëåå »';
Panel1.Hide;
BmpFile.Show;
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Welcome.bmp'))
end;
wpSelectDir:
begin
DirEditOnChange(nil)
Panel2.Hide;
StatusLabel3.Show;
StatusLabel4.Show;
StatusLabel5.Show;
StatusLabel6.Show;
WizardForm.DirBrowseButton.Show;
WizardForm.DirEdit.Show;
WizardForm.GroupBrowseButton.Show;
WizardForm.GroupEdit.Show;
TotalSpaceLabel.Show;
FreeSpaceLabel.Show;
InstallSpacelabel.Show;
NeedSpaceLabel.Show;
WizardForm.ComponentsList.Hide;
WizardForm.ReadyMemo.Hide;
StatusLabel1.Caption:= ExpandConstant('{cm:Select1}')
StatusLabel2.Caption:= ExpandConstant('{cm:Select2}')
StatusLabel3.Caption:= ExpandConstant('{cm:Select3}')
StatusLabel4.Caption:= ExpandConstant('{cm:Select4}')
StatusLabel5.Caption:= ExpandConstant('{cm:Select5}')
StatusLabel6.Caption:= ExpandConstant('{cm:Select6}')
WizardForm.NextButton.Caption := 'Äàëåå »';
WizardForm.BackButton.Caption := '« Íàçàä';
end;
wpSelectComponents:
begin
WizardForm.ComponentsList.Show;
WizardForm.ReadyMemo.Hide;
StatusLabel6.Show;
StatusLabel1.Caption:= ExpandConstant('{cm:Select7}')
StatusLabel2.Caption:= ExpandConstant('{cm:Select8}')
StatusLabel6.Caption:= ExpandConstant('{cm:Select9}')
WizardForm.NextButton.Caption := 'Äàëåå »';
WizardForm.BackButton.Caption := '« Íàçàä';
end;
wpReady:
begin
WizardForm.ComponentsList.Hide;
WizardForm.ReadyMemo.Show;
StatusLabel6.Show;
StatusLabel1.Caption:= ExpandConstant('{cm:Select10}')
StatusLabel2.Caption:= ExpandConstant('{cm:Select11}')
StatusLabel6.Caption:= ExpandConstant('{cm:Select12}')
WizardForm.NextButton.Caption:= 'Óñòàíîâèòü';
WizardForm.BackButton.Caption := '« Íàçàä';
end;
wpInstalling:
begin
WizardForm.TasksList.Hide;
WizardForm.ReadyMemo.Hide;
StatusLabel6.Hide;
StatusLabel1.Caption:= ExpandConstant('{cm:Select13}')
StatusLabel2.Caption:= ExpandConstant('{cm:Select14}')
WizardForm.ProgressGauge.Show;
end;
wpFinished:
begin
Panel1.Hide;
BmpFile.Show;
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Finished.bmp'))
StatusLabel1.Caption:= ExpandConstant('{cm:Select15}')
StatusLabel2.Caption:= ExpandConstant('{cm:Select16}')
end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
ShowComponents(CurPageID);
end;

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('Skin.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Skin.cjstyles'), '');
Result := True;
end;

procedure DeinitializeSetup();
begin
UnloadSkin();
end;

Отправлено: 20:42, 07-01-2014 | #1822


Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


Цитата Ivan_009:
Почему при нехватке места на диске при нажатии кнопки далее инсталл тупо предлагает выйти »
читать дальше »
Код: Выделить весь код
with WizardForm.NextButton do 
begin 
Parent:=WizardForm; 
Left := ScaleX(460); 
Top := ScaleY(372); 
Width := ScaleX(110); 
Height := ScaleY(30); 
end;

with WizardForm.CancelButton do 
begin 
Parent:=WizardForm; 
Left := ScaleX(460); 
Top := ScaleY(372); 
Width := ScaleX(110); 
Height := ScaleY(30); 
end;

У тебя CancelButton накладывается на NextButton. Соответственно при неактивной кнопке NextButton вместо неё нажимается CancelButton.

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Последний раз редактировалось nik1967, 08-01-2014 в 08:30.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:47, 07-01-2014 | #1823


Аватара для Ivan_009

Ветеран


Сообщения: 608
Благодарности: 58

Профиль | Цитировать


Помогите растянуть панель при задвижении и выкате на всю форму вот код

Код: Выделить весь код
var
SettingPanel : TPanel;
Flag : boolean;
Timer : LongWord;
DirBevel,GroupBevel,DriveBevel: TBevel;

function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';

procedure MyTimer;
begin
case Flag of
True :
begin
if SettingPanel.Top = 0 then
KillTimer(WizardForm.Handle, Timer);
if SettingPanel.Top < 0 then SettingPanel.Top := SettingPanel.Top + ScaleY(3);
end;
False :
begin
if SettingPanel.Top = ScaleY(-315) then
KillTimer(WizardForm.Handle, Timer);
if SettingPanel.Top > ScaleY(-315) then SettingPanel.Top := SettingPanel.Top - ScaleY(3);
end;
end;
end;

procedure HideShow(Sender: TObject);
begin
KillTimer(WizardForm.Handle, Timer);
Timer := SetTimer(WizardForm.Handle, 1, 5 , CallbackAddr('MyTimer'));
case Flag of
True : TButton(Sender).Caption:='Íàñòðîéêè';
False : TButton(Sender).Caption:='Íàçàä';
end;
Flag:= not Flag;
end;

procedure InitializeWizard();
begin
Flag:= False;

WizardForm.Width:=ScaleX(700);
WizardForm.Height:=ScaleY(400);
WizardForm.Position:=poScreenCenter;
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
WizardForm.Color:=$000000;

SettingPanel := TPanel.Create(WizardForm);
with SettingPanel do
begin
Parent := WizardForm;
SetBounds(ScaleX(0),ScaleY(-315),ScaleX(497),ScaleY(313));
ParentBackground := False;
SettingPanel.Color:=$000000;
end;

with WizardForm.DirBrowseButton do
begin
Parent:=SettingPanel;
Left := ScaleX(395);
Top := ScaleY(37);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.DirEdit do
begin
Parent:=SettingPanel;
Left := ScaleX(43);
Top := ScaleY(42);
Width := ScaleX(330);
Height := ScaleY(25);
end;

with WizardForm.GroupBrowseButton do
begin
Parent:=SettingPanel;
Left := ScaleX(395);
Top := ScaleY(115);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.GroupEdit do
begin
Parent:=SettingPanel;
Left := ScaleX(43);
Top := ScaleY(120);
Width := ScaleX(330);
Height := ScaleY(25);
end;

DirBevel := TBevel.Create(WizardForm);
with DirBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(25);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

GroupBevel := TBevel.Create(WizardForm);
with GroupBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(100);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

DriveBevel := TBevel.Create(WizardForm);
with DriveBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(177);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

(*with WizardForm.ProgressGauge do
begin
Left := ScaleX(75);
Top := ScaleY(160);
Width := ScaleX(430);
Height := ScaleY(25);
Parent:= WizardForm;
end;*)

with TButton.Create(WizardForm) do
begin
OnClick:= @HideShow;
SetBounds(ScaleX(40),ScaleY(327),ScaleX(75),ScaleY (25))
Caption:='Íàñòðîéêè';
Parent:= WizardForm;
end;
end;

Отправлено: 20:26, 09-01-2014 | #1824


SHVtYW4=


Сообщения: 3451
Благодарности: 1273

Профиль | Отправить PM | Цитировать


Цитата Ivan_009:
Помогите растянуть панель при задвижении и выкате на всю форму вот код »
читать дальше »
Код: Выделить весь код
[Code]
var
SettingPanel : TPanel;
Flag : boolean;
Timer : LongWord;
DirBevel,GroupBevel,DriveBevel: TBevel;

function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';

procedure MyTimer;
begin
case Flag of
True :
begin
if SettingPanel.Top = 0 then
KillTimer(WizardForm.Handle, Timer);
if SettingPanel.Top < 0 then SettingPanel.Top := SettingPanel.Top + ScaleY(3);
end;
False :
begin
if SettingPanel.Top = ScaleY(-315) then
KillTimer(WizardForm.Handle, Timer);
if SettingPanel.Top > ScaleY(-315) then SettingPanel.Top := SettingPanel.Top - ScaleY(3);
end;
end;
end;

procedure HideShow(Sender: TObject);
begin
KillTimer(WizardForm.Handle, Timer);
Timer := SetTimer(WizardForm.Handle, 1, 5 , CallbackAddr('MyTimer'));
case Flag of
True : TButton(Sender).Caption:='Iano?ieee';
False : TButton(Sender).Caption:='Iacaa';
end;
Flag:= not Flag;
end;

procedure InitializeWizard();
begin
Flag:= False;

WizardForm.Width:=ScaleX(700);
WizardForm.Height:=ScaleY(400);
WizardForm.Position:=poScreenCenter;
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
WizardForm.Color:=$000000;

WizardForm.Bevel.Width := ScaleX(695);
//WizardForm.Bevel.Visible := False;  // äëÿ òîãî ÷òîá ñêðûòü Bevel, ðàñêîìåíòèðóé  "WizardForm.Bevel.Visible := False;" è çàêîìåíòèðóé "WizardForm.Bevel.Width := ScaleX(695);"

SettingPanel := TPanel.Create(WizardForm);
with SettingPanel do
begin
Parent := WizardForm;
SetBounds(ScaleX(7),ScaleY(-315),ScaleX(680),ScaleY(313));
ParentBackground := False;
SettingPanel.Color:=$000000;
end;

with WizardForm.DirBrowseButton do
begin
Parent:=SettingPanel;
Left := ScaleX(395);
Top := ScaleY(37);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.DirEdit do
begin
Parent:=SettingPanel;
Left := ScaleX(43);
Top := ScaleY(42);
Width := ScaleX(330);
Height := ScaleY(25);
end;

with WizardForm.GroupBrowseButton do
begin
Parent:=SettingPanel;
Left := ScaleX(395);
Top := ScaleY(115);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.GroupEdit do
begin
Parent:=SettingPanel;
Left := ScaleX(43);
Top := ScaleY(120);
Width := ScaleX(330);
Height := ScaleY(25);
end;

DirBevel := TBevel.Create(WizardForm);
with DirBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(25);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

GroupBevel := TBevel.Create(WizardForm);
with GroupBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(100);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

DriveBevel := TBevel.Create(WizardForm);
with DriveBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(177);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

(*with WizardForm.ProgressGauge do
begin
Left := ScaleX(75);
Top := ScaleY(160);
Width := ScaleX(430);
Height := ScaleY(25);
Parent:= WizardForm;
end;*)

with TButton.Create(WizardForm) do
begin
OnClick:= @HideShow;
SetBounds(ScaleX(40),ScaleY(327),ScaleX(75),ScaleY (25))
Caption:='Iano?ieee';
Parent:= WizardForm;
end;
end;

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:03, 09-01-2014 | #1825


Аватара для Ivan_009

Ветеран


Сообщения: 608
Благодарности: 58

Профиль | Цитировать


Как скрыть TButton на wpInstalling: пробовал TButton.Hide; не работает

Код: Выделить весь код
var
SettingPanel : TPanel;
Flag : boolean;
Timer : LongWord;
BmpFile: TBitmapImage;
DirBevel,GroupBevel,DriveBevel: TBevel;

//Skin
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall delayload setuponly';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall delayload setuponly';

procedure LoadSkinU(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';
procedure UnloadSkinU(); external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';
//Skin

function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';

procedure MyTimer;
begin
case Flag of
True :
begin
if SettingPanel.Top = 0 then
KillTimer(WizardForm.Handle, Timer);
if SettingPanel.Top < 0 then SettingPanel.Top := SettingPanel.Top + ScaleY(3);
end;
False :
begin
if SettingPanel.Top = ScaleY(-315) then
KillTimer(WizardForm.Handle, Timer);
if SettingPanel.Top > ScaleY(-315) then SettingPanel.Top := SettingPanel.Top - ScaleY(3);
end;
end;
end;

procedure HideShow(Sender: TObject);
begin
KillTimer(WizardForm.Handle, Timer);
Timer := SetTimer(WizardForm.Handle, 1, 5 , CallbackAddr('MyTimer'));
case Flag of
True : TButton(Sender).Caption:='Íàñòðîéêè';
False : TButton(Sender).Caption:='Íàçàä';
end;
Flag:= not Flag;
end;

procedure InitializeWizard();
begin
Flag:= False;

WizardForm.Width:=ScaleX(700);
WizardForm.Height:=ScaleY(400);
WizardForm.Position:=poScreenCenter;
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
WizardForm.Bevel.Width := ScaleX(695);
//WizardForm.Color:=$000000;

ExtractTemporaryFile('WizardImage.bmp')
//ExtractTemporaryFile('Finished.bmp')
//ExtractTemporaryFile('CBImg.bmp');

BmpFile:= TBitmapImage.Create(WizardForm)
BmpFile.Stretch:= True;
BmpFile.SetBounds(ScaleX(0),ScaleY(0), ScaleX(700), ScaleY(313))
BmpFile.Parent:= WizardForm;

with WizardForm.NextButton do
begin
Parent:=WizardForm;
Left := ScaleX(460);
Top := ScaleY(330);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.CancelButton do
begin
Parent:=WizardForm;
Left := ScaleX(9); 
Top := ScaleY(330);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.BackButton do
begin
Parent:=WizardForm;
Left := ScaleX(343);
Top := ScaleY(330);
Width := ScaleX(110);
Height := ScaleY(30);
end;

SettingPanel := TPanel.Create(WizardForm);
with SettingPanel do
begin
Parent := WizardForm;
SetBounds(ScaleX(0),ScaleY(-315),ScaleX(694),ScaleY(313));
ParentBackground := False;
//SettingPanel.Color:=$000000;
end;

with WizardForm.DirBrowseButton do
begin
Parent:=SettingPanel;
Left := ScaleX(395);
Top := ScaleY(37);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.DirEdit do
begin
Parent:=SettingPanel;
Left := ScaleX(43);
Top := ScaleY(42);
Width := ScaleX(330);
Height := ScaleY(25);
end;

with WizardForm.GroupBrowseButton do
begin
Parent:=SettingPanel;
Left := ScaleX(395);
Top := ScaleY(115);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.GroupEdit do
begin
Parent:=SettingPanel;
Left := ScaleX(43);
Top := ScaleY(120);
Width := ScaleX(330);
Height := ScaleY(25);
end;

DirBevel := TBevel.Create(WizardForm);
with DirBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(25);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

GroupBevel := TBevel.Create(WizardForm);
with GroupBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(100);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

DriveBevel := TBevel.Create(WizardForm);
with DriveBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(177);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

with WizardForm.ProgressGauge do
begin
Left := ScaleX(75);
Top := ScaleY(160);
Width := ScaleX(430);
Height := ScaleY(25);
Parent:= WizardForm;
end;

with TButton.Create(WizardForm) do
begin
OnClick:= @HideShow;
Left := ScaleX(10);
Top := ScaleY(330);
Width := ScaleX(110);
Height := ScaleY(30);
Caption:='Íàñòðîéêè';
Parent:= WizardForm;
end;
end;

//Óáèðàåì âñå ñòðàíèöû êðîìå WelcomePage
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID =wpLicense)or(PageID =wpInfoBefore)or(PageID =wpUserInfo)or(PageID =wpSelectDir)or(PageID =wpSelectComponents)or(PageID =wpSelectProgramGroup)or(PageID =wpSelectTasks)or(PageID =wpReady)then
  Result:= True;
end;

procedure ShowComponents(CurPageID: Integer);
begin
WizardForm.ProgressGauge.Hide;
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardImage.bmp'))
Case CurPageID of
wpWelcome:
begin
WizardForm.NextButton.Caption := 'Íà÷àòü óñòàíîâêó';
end;
wpInstalling:
begin
SettingPanel.Hide;
WizardForm.ProgressGauge.Show;
end;
wpFinished:
begin

end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
ShowComponents(CurPageID);
end;

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('Skin.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Skin.cjstyles'), '');
Result:= true
end;

function InitializeUninstall(): Boolean;
begin
FileCopy(ExpandConstant('{app}\isskin.dll'),
ExpandConstant('{tmp}\isskin.dll'), False);
FileCopy(ExpandConstant('{app}\Skin.cjstyles'),
ExpandConstant('{tmp}\Skin.cjstyles'), False); LoadSkinU(ExpandConstant('{tmp}\Skin.cjstyles'), '');
Result:=True;
end;

procedure DeinitializeSetup();
begin
UnloadSkin();
end;

procedure DeinitializeUninstall();
begin
UnloadSkinU();
end;

Отправлено: 22:18, 09-01-2014 | #1826


Ветеран


Сообщения: 517
Благодарности: 314

Профиль | Отправить PM | Цитировать


Цитата Ivan_009:
Как скрыть TButton на wpInstalling »
читать дальше »
Код: Выделить весь код
var
SettingPanel : TPanel;
Flag : boolean;
Timer : LongWord;
BmpFile: TBitmapImage;
DirBevel,GroupBevel,DriveBevel: TBevel;
CustomBtn: TButton;

//Skin
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall delayload setuponly';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall delayload setuponly';

procedure LoadSkinU(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';
procedure UnloadSkinU(); external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';
//Skin

function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';

procedure MyTimer;
begin
case Flag of
True :
begin
if SettingPanel.Top = 0 then
KillTimer(WizardForm.Handle, Timer);
if SettingPanel.Top < 0 then SettingPanel.Top := SettingPanel.Top + ScaleY(3);
end;
False :
begin
if SettingPanel.Top = ScaleY(-315) then
KillTimer(WizardForm.Handle, Timer);
if SettingPanel.Top > ScaleY(-315) then SettingPanel.Top := SettingPanel.Top - ScaleY(3);
end;
end;
end;

procedure HideShow(Sender: TObject);
begin
KillTimer(WizardForm.Handle, Timer);
Timer := SetTimer(WizardForm.Handle, 1, 5 , CallbackAddr('MyTimer'));
case Flag of
True : TButton(Sender).Caption:='I'a`n~o`?i^e'e^e`';
False : TButton(Sender).Caption:='I'a`c,a`a"';
end;
Flag:= not Flag;
end;

procedure InitializeWizard();
begin
Flag:= False;

WizardForm.Width:=ScaleX(700);
WizardForm.Height:=ScaleY(400);
WizardForm.Position:=poScreenCenter;
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
WizardForm.Bevel.Width := ScaleX(695);
//WizardForm.Color:=$000000;

ExtractTemporaryFile('WizardImage.bmp')
//ExtractTemporaryFile('Finished.bmp')
//ExtractTemporaryFile('CBImg.bmp');

BmpFile:= TBitmapImage.Create(WizardForm)
BmpFile.Stretch:= True;
BmpFile.SetBounds(ScaleX(0),ScaleY(0), ScaleX(700), ScaleY(313))
BmpFile.Parent:= WizardForm;

with WizardForm.NextButton do
begin
Parent:=WizardForm;
Left := ScaleX(460);
Top := ScaleY(330);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.CancelButton do
begin
Parent:=WizardForm;
Left := ScaleX(9);
Top := ScaleY(330);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.BackButton do
begin
Parent:=WizardForm;
Left := ScaleX(343);
Top := ScaleY(330);
Width := ScaleX(110);
Height := ScaleY(30);
end;

SettingPanel := TPanel.Create(WizardForm);
with SettingPanel do
begin
Parent := WizardForm;
SetBounds(ScaleX(0),ScaleY(-315),ScaleX(694),ScaleY(313));
ParentBackground := False;
//SettingPanel.Color:=$000000;
end;

with WizardForm.DirBrowseButton do
begin
Parent:=SettingPanel;
Left := ScaleX(395);
Top := ScaleY(37);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.DirEdit do
begin
Parent:=SettingPanel;
Left := ScaleX(43);
Top := ScaleY(42);
Width := ScaleX(330);
Height := ScaleY(25);
end;

with WizardForm.GroupBrowseButton do
begin
Parent:=SettingPanel;
Left := ScaleX(395);
Top := ScaleY(115);
Width := ScaleX(110);
Height := ScaleY(30);
end;

with WizardForm.GroupEdit do
begin
Parent:=SettingPanel;
Left := ScaleX(43);
Top := ScaleY(120);
Width := ScaleX(330);
Height := ScaleY(25);
end;

DirBevel := TBevel.Create(WizardForm);
with DirBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(25);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

GroupBevel := TBevel.Create(WizardForm);
with GroupBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(100);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

DriveBevel := TBevel.Create(WizardForm);
with DriveBevel do
begin
Parent := SettingPanel;
Left := ScaleX(22);
Top := ScaleY(177);
Width := ScaleX(496);
Height := ScaleY(62);
Style := bsRaised;
end;

with WizardForm.ProgressGauge do
begin
Left := ScaleX(75);
Top := ScaleY(160);
Width := ScaleX(430);
Height := ScaleY(25);
Parent:= WizardForm;
end;

CustomBtn := TButton.Create(WizardForm);
with CustomBtn do
begin
OnClick:= @HideShow;
Left := ScaleX(10);
Top := ScaleY(330);
Width := ScaleX(110);
Height := ScaleY(30);
Caption:='I'a`n~o`?i^e'e^e`';
Parent:= WizardForm;
end;
end;

//O'a'e`?a`a*i` a^n~a* n~o`?a`i'e`o"u^ e^?i^i`a* WelcomePage
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID =wpLicense)or(PageID =wpInfoBefore)or(PageID =wpUserInfo)or(PageID =wpSelectDir)or(PageID =wpSelectComponents)or(PageID =wpSelectProgramGroup)or(PageID =wpSelectTasks)or(PageID =wpReady)then
  Result:= True;
end;

procedure ShowComponents(CurPageID: Integer);
begin
WizardForm.ProgressGauge.Hide;
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardImage.bmp'))
Case CurPageID of
wpWelcome:
begin
WizardForm.NextButton.Caption := 'I'a`?a`o`u" o'n~o`a`i'i^a^e^o'';
end;
wpInstalling:
begin
CustomBtn.Hide;
SettingPanel.Hide;
WizardForm.ProgressGauge.Show;
end;
wpFinished:
begin

end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
ShowComponents(CurPageID);
end;

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('Skin.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Skin.cjstyles'), '');
Result:= true
end;

function InitializeUninstall(): Boolean;
begin
FileCopy(ExpandConstant('{app}\isskin.dll'),
ExpandConstant('{tmp}\isskin.dll'), False);
FileCopy(ExpandConstant('{app}\Skin.cjstyles'),
ExpandConstant('{tmp}\Skin.cjstyles'), False); LoadSkinU(ExpandConstant('{tmp}\Skin.cjstyles'), '');
Result:=True;
end;

procedure DeinitializeSetup();
begin
UnloadSkin();
end;

procedure DeinitializeUninstall();
begin
UnloadSkinU();
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:13, 09-01-2014 | #1827


Аватара для Ivan_009

Ветеран


Сообщения: 608
Благодарности: 58

Профиль | Цитировать


Как наложить изображение bmp на форму выхода. Подскажите кто знает. Зарание спасибо.

Отправлено: 14:13, 10-01-2014 | #1828


Аватара для diman_21Ru

Старожил


Сообщения: 217
Благодарности: 4

Профиль | Отправить PM | Цитировать


Всем привет не кто не знает почему эта ошибка при запуске уже готового скрипта по системным требованиям

Последний раз редактировалось diman_21Ru, 30-01-2014 в 20:30.


Отправлено: 16:47, 10-01-2014 | #1829


Аватара для Gnom_aka_Lexander

Ветеран


Сообщения: 978
Благодарности: 564

Профиль | Сайт | Отправить PM | Цитировать


diman_21Ru, точку с запятой на предыдущей строке забыл. и таких ошибок скорей всего будет еще тьма. плюс скорей всего в паре мест вылезет несоответствие типов string и ansistring (проверено, гарантирую) поэтому есть смысл тебе пользоваться ansi-версией, к юникодной ты точно не готов (иначе этого вопроса не было-бы)

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 18:41, 10-01-2014 | #1830



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 6]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59




 
Переход