Ru-Board.club
← Вернуться в раздел «Программы»

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

Автор: nik1967
Дата сообщения: 22.09.2011 19:51
Karbid87
[more=После определённой даты]
Код: [Setup]
AppName=Gradient
AppVerName=Gradient
CreateAppDir=false

[_Code]
type
TSystemTime = record
wYear : Word;
wMonth : Word;
wDayOfWeek : Word;
wDay : Word;
wHour : Word;
wMinute : Word;
wSecond : Word;
wMilliseconds : Word;
end;

procedure GetLocalTime(var lpSystemTime: TSystemTime); external 'GetLocalTime@kernel32.dll';

function IsOKDateTime( dt1, dt2: TSystemTime ) : Boolean;
begin
Result := true;
if dt2.wYear < dt1.wYear then
result := false
else if dt2.wYear = dt1.wYear then
if dt2.wMonth < dt1.wMonth then
result := false
else if dt2.wMonth = dt1.wMonth then
if dt2.wDay < dt1.wDay then
result := false ;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
lt, datelimit: TSystemTime;
s, crlf: string;
begin
if CurPageID=wpWelcome then begin
datelimit.wYear := 2011;
datelimit.wMonth := 09;
datelimit.wDay := 21;
GetLocalTime(lt);
Result := IsOKDateTime( lt, datelimit );
s := 'Install time limit, it is not possible to install this program.';
if not Result then MsgBox( s , mbError, MB_OK );
end;
end;

Автор: Karbid87
Дата сообщения: 22.09.2011 20:49
nik1967, спасибо. Теперь надо на количество запусков на данном компьютере ограничение поставить.
Автор: Xom9I4oK
Дата сообщения: 22.09.2011 23:50
log1stable
Мне надо чтобы это в самом инсталлере было прописано ну или в крайнем случае изменением в хекс-редакторе Setup.e32.
YURSHAT
В том то и дело что визуально как раз все ОК. Этот звук выдает после подключения ISFlash.dll. Работает она (визуально по крайней мере) практически как надо, но с ней после выхода из сетапа выдается звук ошибки. Возможно она конфликтует как то с другими длл-ками или в ней какой-то баг и некорректно прописана ф-ция деинициализации в самой длл.

У меня еще несколько вопросов накопилось:
1) Как можно вставить несколько разных анимаций одновременно, используя fairy.dll - у меня все равно показывает только одну или по очереди. gifctrl.dll не предлагать - она криво у меня работает со скином tiger.cjstyles.
2) Если я юзаю ISFlash.dll в InitializeWizard () то все норм, если я гружу ее там где мне надо в CurPageChanged (на CurPageID=wpFinished), то при подгрузки этой длл у меня сначала отображается пару секунд белый фон в том месте где я гружу флэш-ролик. Код использую стандартный из примера что с этой дллкой шел.
3) Снова вопрос по ISFlash.dll - из-за нее у меня выскакивает звук виндовой ошибки после выхода из сетапа. Код тоже стандартный из примера. Если компилить версией от ResTools, то этой ошибки в примере нет, но мне надо чтобы на нормальной работало тем более у меня все равно этот звук всплывает, когда я свой код объединяю с тем что в примере идет даже с китайским инно. Я так понял тут конфликт с ISSkin.dll, тк если отключить скин либо флэш все норм. Если обе длл работают, то болт. Как решить проблему пока не знаю...
4) Как проверить установлены ли флэш-библиотеки в системе нужные для работы с ISFlash.dll?
P.S. Автору ISFlash.dll писал - пока глухо...
5) В Windows 7 со скином tiger.cjstyles есть некоторые косяки. Меня интересует вот этот баг - когда жмешь обзор для выбора папки установки, там значки раскрытия папки (в виде треугольников) почти не видны. В самом скине они вроде есть (на вкладке Tree View/Glyph), но когда меняешь на другие ничего не происходит...
6) Если использовать waterctrl.dll то у меня сетап запускается около 6 сек (хотя комп впоряде ). Отсюда вопрос, как сделать индикатор предзагрузки. То есть типа этого [more]

Код:
var
Form: TSetupForm;
ProgressBar: TNewProgressBar;
i: Integer;
begin
Form := CreateCustomForm();
try
with Form do
begin
ClientWidth := ScaleX(256);
ClientHeight := ScaleY(16);
BorderStyle:= bsNone;
Left:= GetSystemMetrics(16) - ClientWidth - ScaleX(12);
Top:= GetSystemMetrics(17) - ClientHeight - ScaleY(12);
end;
ProgressBar := TNewProgressBar.Create(Form);
with ProgressBar do
begin
Left := ScaleX(8);
Top := ScaleX(12);
Width := Form.Width - (2 * Left);
Height := Form.ClientHeight - (2 * Top);
Parent := Form;
Min:= 0;
Max:= 30;
Position := 0;
end;
Form.Show();
for i:= 0 to 30 do
begin
ProgressBar.Position:= i;
Sleep(500);
i:= i + 1;
end;
finally
Form.Free();
end;
end;
Автор: log1stable
Дата сообщения: 23.09.2011 10:46
Xom9I4oK, насчёт ISFlash. Скорее всего в DeinitializeWizard нету отгрузки флешки:


Код:
procedure ISFlash_free;
external 'isflash_free@files:ISFlash.dll stdcall';

procedure DeinitializeWizard;
begin
ISFlash_free; //Процедура отгрузки
end;
Автор: Xom9I4oK
Дата сообщения: 23.09.2011 11:25
log1stable

Цитата:
Скорее всего в DeinitializeWizard нету отгрузки флешки:

Выгрузку флэша делаю. Только она походу не работает или криво работает. Ради интереса пробовал вставлять ее сразу после инициализации (ISFlash_init) - все равно флэш остается и работает.


Цитата:
Вопрос 1) Для этого надо копировать все процедуры и переименовать их как в процедурах, так и в их инициализации. Например:

Это самое 1-е что я пытался сделать. Возможно надо создать еще 2 Fairy.dll длл с разными именами. Тк обращения к длл идут все равно через 1 ф-цию AnimateFairy в Fairy.iss...
Автор: Snoopak96
Дата сообщения: 23.09.2011 12:11
Xom9I4oK,
Юзал эту dll`ку, всё нормально работала, наверно вы что то наделали в скрипте, хотя чудить там негде по сути...
И вопрос - обязательно ISFlash? xvidcore.dll использовать религия не позволяет? [Скрипт Старкрафта 2 из шапки]

Цитата:
4) Как проверить установлены ли флэш-библиотеки в системе нужные для работы с ISFlash.dll?
P.S. Автору ISFlash.dll писал - пока глухо...

Ничего не надо ставить в систему, только библиотека для воспроизведения и нужна.

Цитата:
5) В Windows 7 со скином tiger.cjstyles есть некоторые косяки. Меня интересует вот этот баг - когда жмешь обзор для выбора папки установки, там значки раскрытия папки (в виде треугольников) почти не видны. В самом скине они вроде есть (на вкладке Tree View/Glyph), но когда меняешь на другие ничего не происходит...

Программой Skin Builder файлы скина открыть можно и исправить как вам надо и всё сохраняется.

Цитата:
6) Если использовать waterctrl.dll то у меня сетап запускается около 6 сек (хотя комп впоряде ). Отсюда вопрос, как сделать индикатор предзагрузки. То есть типа этого Подробнее... (но он мне не помог - все равно столько же ждать после него, может его еще куда запихнуть можно? Пробовал пихать в InitializeSetup и в InitializeSetup).

Запустите сплешь на время хеширования файлов, по другому хз как...
Автор: YURSHAT
Дата сообщения: 23.09.2011 15:46
Snoopak96

Цитата:
Юзал эту dll`ку, всё нормально работала, наверно вы что то наделали в скрипте, хотя чудить там негде по сути...

Я проверял, действительно при использовании ISFlash.dll вместе с ISSkin.dll получается ошибка при деинициализации.

Автор: ShadowHawk
Дата сообщения: 23.09.2011 15:46

Gnom3


Цитата:

Эээ, это уже выше моих познаний. Навскидку - в скрипте, который ты пишеш - этот скрипт является по сути управляющим кодом откомпилированного инсталлятора, и я не уверен, что препроцессор может управлять компонентами изнутри компонентов. Хотя, может я и ошибаюсь.



Как говорил Станиславский ...

Должно быть решение.
Для начала хотелось бы попробовать реализовать работу инсталлятора только при изменении названий скажем 3 каталогов.

Т.е.:
Пусть setup.exe из {src}\source\ копирует (при выборе в компонент листе конечно же) 3 каталога: 1 2 и 3
Нужно что бы setup.exe сработал (без перекомпиляции естественно!) если один из каталогов переименовали, т.е. вместо 1 2 и 3 стало 1 2 и 5.

Есть варианты?
Я обращаюсь не только к уважаемому Gnom3, но и ко всему форуму! Давайте попробуем решить эту задачку. Мне кажется она в определенных случаях может очень сильно "облегчить" жизнь!
Автор: log1stable
Дата сообщения: 23.09.2011 16:49
ShadowHawk, каталог переименовывается где и как?
Автор: Xom9I4oK
Дата сообщения: 23.09.2011 16:55
Snoopak96

Цитата:
Программой Skin Builder файлы скина открыть можно и исправить как вам надо и всё сохраняется.

Я ей и открывал. Если бы все было так просто, то почему все (чьи инсталлы я видел) кто используют тот скин не исправили данную "фигню". Я смог в ней изменить почти все что мне надо кроме вышеописанного.

Цитата:
Запустите сплешь на время хеширования файлов, по другому хз как...

А где его вызвать тогда? Я так и планировал сделать (вставлял полосу загрузки как в инсталлшилде), но это никак не решило проблему. Все равно после него столько же ждать... Может можно как то спрятать основное окно (например через WizardForm.Hide) пока там все загрузится, а параллельно отображать сплеш или предзагрузчик, только я не знаю как потом его назад вернуть.

Цитата:
И вопрос - обязательно ISFlash? xvidcore.dll использовать религия не позволяет? [Скрипт Старкрафта 2 из шапки]

Да. Для меня размер установщика имеет значение. Во флэше это видео (вернее анимированный текст) вместе с длл весит меньше 100Кб, а в видео больше 2 метров...

Цитата:
Ничего не надо ставить в систему, только библиотека для воспроизведения и нужна.

А почему тогда у меня инсталлер подгружает файл flash11b.ocx?

YURSHAT

Цитата:
Я проверял, действительно при использовании ISFlash.dll вместе с ISSkin.dll получается ошибка при деинициализации.

Есть идеи как обойти эту проблему? На юникод версии Inno вообще треш - крашится с окошком про ошибку в памяти. На Ansi версии просто звук ошибки... Может как-то в процессах принудительно сначала выгрузить (через Inno естественно) сам флеш и ISFlash.dll?
Автор: Karbid87
Дата сообщения: 23.09.2011 18:51
nik1967
Подскажи еще кое что. Вот сегодня первый раз понадобилось сделать маленький инсталл с ограничением во времени. Но столкнулся с проблемой. Дальше страницы приветствия невозможно нажать кнопку Далее, чтобы продолжить установку. Что необходимо дописать, чтобы установка удачно продолжалась? Помоги пожалуйста. Заранее благодарен.
Автор: abasov
Дата сообщения: 23.09.2011 19:24
А как сделать диалог выбора файла. Т.е. в процессе инсталляции указать в переменную несколько файлов?
Вопрос снят:

Код:
function GetOpenFileName(var lpofn: TOpenFileName): Boolean; external 'GetOpenFileNameA@comdlg32.dll';

procedure InitializeWizard();
var
F: TOpenFileName;
lpstrFile, lpstrFilter, lpstrTitle, lpstrInitialDir: String;

begin
F.hwndOwner := StrToInt(ExpandConstant('{wizardhwnd}'));

lpstrFile := 'config.ini';
F.lpstrFile := lpstrFile;

F.lStructSize := 76;
SetLength(lpstrFile, 512);
F.nMaxFile := Length(lpstrFile);

lpstrFilter := 'INI Files (*.ini)' + #0 + '*.ini' + #0 + 'All Files (*.*)' + #0 + '*.*' + #0;
F.lpstrFilter := lpstrFilter;

lpstrTitle := 'Открыть файл';
F.lpstrTitle := lpstrTitle;

lpstrInitialDir := ExpandConstant('{src}');
F.lpstrInitialDir := lpstrInitialDir;

F.Flags := $80204;

if GetOpenFileName(F) then
MsgBox('Файл выбран: '+ #13 + #13 + lpstrFile, mbInformation, mb_Ok);
end;
Автор: Snoopak96
Дата сообщения: 23.09.2011 19:48
Xom9I4oK
Ответил в лс.
Автор: Mataes
Дата сообщения: 23.09.2011 22:29
Подскажите как получить имя запущенного инсталлятора?
Автор: ShadowHawk
Дата сообщения: 24.09.2011 00:24
log1stable

Цитата:
ShadowHawk, каталог переименовывается где и как?


В моем случае, есть человек, который к программе отношения не имеет, он просто отвечает за эти каталоги 1 2 и 3. Их в общем то много и в зависимости от их сочетания получется НОВАЯ версия. Т.е. сегодня это набор 1 2 и 3 завтра может быть 2 4 9 и т.д.
В реальности может быть и так что кол-во каталогов может измениться как в плюс так и в минус. Но для простоты ( хотя по мне и так сложно ) ) будем считать что число каталогов не меняется а меняется только название. Причем сам setup.exe этим не занимается. Он должен просто понять что имя сенилось - т.е. и путь к каталогу сменился, но его в любом случае надо копировать.

К сожалению просто перечислить все возможные каталоги не подходит - название заранее не известно.
Автор: Xom9I4oK
Дата сообщения: 24.09.2011 03:03
Как в поле описания (Description) отобразить значение переменной из секции код?
Автор: Magellan777
Дата сообщения: 24.09.2011 09:43
Всем привет! Как сделать чтобы в левом нижнем углу появилась кнопка "info" при нажатии которой будет появляться окно с моим текстом?

Скиньте пожалуйста скрипт Deus Ex Human Revolution от Recoding! Спасибо!
Автор: log1stable
Дата сообщения: 24.09.2011 12:14
Magellan777, буквально страниц пять назад я писал код.

Ссылка

Добавлено:
Xom9I4oK, если ты это про другие секции, то значение из секции [Сode] взять не получится.
Автор: Xom9I4oK
Дата сообщения: 24.09.2011 12:47
log1stable

Цитата:
если ты это про другие секции, то значение из секции [Сode] взять не получится.

Да это нужно мне в секции [Tasks]. Сделал так Description:{code:имя_ф-ции} и в самой процедуре уже отображение описания прописал... Я думал может как-то проще сделать можно чтобы не прописывать полностью весь текст в коде, а взять оттуда только переменную и вставить в описание. То есть у меня текст выглядит таким образом: Сделать резервную копию оригинальных файлов (требуется около x свободного места), где х это значение которое берется из другой ф-ции GetSize2.
Автор: insombia
Дата сообщения: 24.09.2011 13:06
Как правильно сделать чтобы исдон распаковывался на всех компах а не только на моем путь архивов такой D:\HardResetRepack\HardReset.trance
у других людей например репак если лежит на С:\HardResetRepack\HardReset.trance то архивы не распаковываются
Автор: Magellan777
Дата сообщения: 24.09.2011 13:18
А как сделать чтобы эта кнопка была как остальные?

Автор: vistaw
Дата сообщения: 24.09.2011 13:58
Magellan777
Добавить ее в функцию текстурирования кнопок.
Автор: Magellan777
Дата сообщения: 24.09.2011 14:32
Добавте плиз!

[more][CustomMessages]
rus.Space=Доступно места на диске:
rus.Space1=Требуется места на диске:

[Files]
Source: Files\button2.bmp; DestDir: {tmp}; Flags: dontcopy

[Code]
const
ButtonWidth = 80;
ButtonHeight = 23;
Color = clblack;

bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;
bidbtnCancelUnpacking = 5;

var
WizardLabel: TLabel;
ButtonPanel: array of TPanel;
ButtonImage: array of TBitmapImage;
ButtonLabel: array of TLabel;
UsedButtons: array of TButton;
ButtonsCount: Integer;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
NeedSize:Integer;
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;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ NumToStr(round(FreeMB/1024*100)/100) + ' Гб' else
FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ IntToStr(FreeMB)+ ' Мб';
if WizardForm.CurPageID = wpSelectDir then begin //Чтоб не было глюков на других страницах
if FreeMB < NeedSize then begin
WizardForm.NextButton.Enabled := False;
ButtonPanel[bidNext].Enabled:= False;
ButtonLabel[bidNext].Enabled:= False;
end else begin
WizardForm.NextButton.Enabled := True;
ButtonPanel[bidNext].Enabled:= True;
ButtonLabel[bidNext].Enabled:= True; end;
end;
end;

procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ NumToStr(round(NeedSize/1024*100)/100) + ' Гб' else
NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ NumToStr(NeedSize)+ ' Мб';
end;

procedure LabelSize();
begin
NeedSize:= {#NeedSize};
with WizardForm do
begin
DiskSpaceLabel.Hide;end;
////////////////////// SelectDirPage //////////////////////
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(202);
Width := ScaleX(209);
Height := ScaleY(13);
end;

FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
end;

procedure ButtonLabelClick(Sender: TObject);
var Button: TButton; n, i: Integer;
begin
i:= TLabel(Sender).Tag; ButtonImage[i].Left:= 0
for n:=0 to (ButtonsCount-1) do begin
if i = n then Button:= UsedButtons[n];
end;
Button.OnClick(Button)
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth*2
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then ButtonImage[TLabel(Sender).Tag].Left:=0
end;

procedure ButtonLabelMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var n, I: Integer;
begin
I:=TLabel(Sender).Tag;
//Сначала восстанавливаем картинку у всех кнопок, так надо иначе могут быть глюки
for n:=0 to (ButtonsCount-1) do begin if (ButtonLabel[n].Enabled)and(ButtonImage[n].Left <> -ButtonWidth*2)and(I<>N) then ButtonImage[n].Left:= 0; end;
//Теперь собственно ставим нужную картинку
if (ButtonLabel[I].Enabled)and(ButtonImage[I].Left <> -ButtonWidth*2) then begin ButtonImage[I].Left:= -ButtonWidth; end;
end;

procedure WizardLabelMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var n: Integer;
begin
//Т.к Sender'ом выступает WizardLabel то не получится испльзовать индекс кнопки
for n:=0 to (ButtonsCount-1) do if (ButtonLabel[n].Enabled)and(ButtonImage[n].Left <> -ButtonWidth*2) then begin ButtonImage[n].Left:= 0; end;
end;

procedure LoadButtonImage(AButton: TButton);
var n: Integer;
begin
n:=ButtonsCount; SetArrayLength(ButtonPanel, n+1);
SetArrayLength(ButtonImage, n+1); SetArrayLength(ButtonLabel, n+1);
SetArrayLength(UsedButtons, n+1); UsedButtons[n]:= AButton;

ButtonPanel[n]:=TPanel.Create(WizardForm)
ButtonPanel[n].SetBounds(AButton.Left, AButton.Top, AButton.Width, AButton.Height)
ButtonPanel[n].Tag:= n
ButtonPanel[n].Enabled:= AButton.Enabled
ButtonPanel[n].Parent:=AButton.Parent

ButtonImage[n]:=TBitmapImage.Create(WizardForm)
ButtonImage[n].SetBounds(ScaleX(0), ScaleY(0), ScaleX(320), ScaleY(23))
ButtonImage[n].Enabled:=False
ButtonImage[n].Bitmap.LoadFromFile(ExpandConstant('{tmp}\Button2.bmp'))
ButtonImage[n].Parent:=ButtonPanel[n]

with TLabel.Create(WizardForm) do begin
Tag:=n
Parent:=ButtonPanel[n]
Width:=AButton.Width
Height:=AButton.Height
Transparent:=True
OnClick:=@ButtonLabelClick
OnDblClick:=@ButtonLabelClick
OnMouseMove:=@ButtonLabelMove
OnMouseDown:=@ButtonLabelMouseDown
OnMouseUp:=@ButtonLabelMouseUp
end;

ButtonLabel[n]:=TLabel.Create(WizardForm)
ButtonLabel[n].Autosize:=True
ButtonLabel[n].Alignment:=taCenter
ButtonLabel[n].Tag:=n
ButtonLabel[n].Enabled:= AButton.Enabled
ButtonLabel[n].Transparent:=True
ButtonLabel[n].Font.Color:=clWhite
ButtonLabel[n].Caption:=AButton.Caption
ButtonLabel[n].OnClick:=@ButtonLabelClick
ButtonLabel[n].OnDblClick:=@ButtonLabelClick
ButtonLabel[n].OnMouseMove:=@ButtonLabelMove
ButtonLabel[n].OnMouseDown:=@ButtonLabelMouseDown
ButtonLabel[n].OnMouseUp:=@ButtonLabelMouseUp
ButtonLabel[n].Parent:=ButtonPanel[n]

ButtonsCount:= ButtonsCount+1
end;

procedure UpdateButtons();
var n: Integer;
begin
for n:=0 to ButtonsCount-1 do begin
ButtonLabel[n].Caption:=UsedButtons[n].Caption
ButtonPanel[n].Visible:=UsedButtons[n].Visible
if (UsedButtons[n].Enabled = False) then ButtonImage[n].Left:= -ButtonWidth*3 else ButtonImage[n].Left:= 0;
ButtonLabel[n].Enabled:= UsedButtons[n].Enabled;
ButtonPanel[n].Enabled:= UsedButtons[n].Enabled;
//Ставим Left и Top лейбла соразмерно размеру лейбла
ButtonLabel[n].Left:= ButtonPanel[n].Width div 2 - ButtonLabel[n].Width div 2;
ButtonLabel[n].Top:= ButtonPanel[n].Height div 2 - ButtonLabel[n].Height div 2;
end;
end;

procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
//Делаем кнопку активной
WizardForm.NextButton.Enabled:= True;
//Обновляем текстурированную кнопку (обновляем активность и текстуру)
UpdateButtons();
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
//Делаем кнопку неактивной
WizardForm.NextButton.Enabled:= False;
//Обновляем текстурированную кнопку (обновляем активность и текстуру)
UpdateButtons()
end;

procedure ButtonTextures();
begin
WizardForm.Font.Color:=clWhite;
WizardForm.Color:=Color;
WizardForm.WelcomePage.Color:=Color;
WizardForm.InnerPage.Color:=Color;
WizardForm.FinishedPage.Color:=Color;
WizardForm.LicensePage.Color:=Color;
WizardForm.PasswordPage.Color:=Color;
WizardForm.InfoBeforePage.Color:=Color;
WizardForm.UserInfoPage.Color:=Color;
WizardForm.SelectDirPage.Color:=Color;
WizardForm.SelectComponentsPage.Color:=Color;
WizardForm.SelectProgramGroupPage.Color:=Color;
WizardForm.SelectTasksPage.Color:=Color;
WizardForm.ReadyPage.Color:=Color;
WizardForm.PreparingPage.Color:=Color;
WizardForm.InstallingPage.Color:=Color;
WizardForm.InfoAfterPage.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.DiskSpaceLabel.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.GroupEdit.Color:=Color;
WizardForm.PasswordLabel.Color:=Color;
WizardForm.PasswordEdit.Color:=Color;
WizardForm.PasswordEditLabel.Color:=Color;
WizardForm.ReadyMemo.Color:=Color;
WizardForm.TypesCombo.Color:=Color;
WizardForm.WelcomeLabel1.Color:=Color;
WizardForm.InfoBeforeClickLabel.Color:=Color;
WizardForm.MainPanel.Color:=Color;
WizardForm.PageDescriptionLabel.Color:=Color;
WizardForm.ReadyLabel.Color:=Color;
WizardForm.YesRadio.Color:=Color;
WizardForm.NoRadio.Color:=Color;
WizardForm.WelcomeLabel2.Color:=Color;
WizardForm.LicenseLabel1.Color:=Color;
WizardForm.InfoAfterClickLabel.Color:=Color;
WizardForm.ComponentsList.Color:=Color;
WizardForm.ComponentsDiskSpaceLabel.Color:=Color;
WizardForm.BeveledLabel.Color:=Color;
WizardForm.StatusLabel.Color:=Color;
WizardForm.FilenameLabel.Color:=Color;
WizardForm.SelectDirLabel.Color:=Color;
WizardForm.SelectStartMenuFolderLabel.Color:=Color;
WizardForm.SelectComponentsLabel.Color:=Color;
WizardForm.SelectTasksLabel.Color:=Color;
WizardForm.LicenseAcceptedRadio.Color:=Color;
WizardForm.LicenseNotAcceptedRadio.Color:=Color;
WizardForm.UserInfoNameLabel.Color:=Color;
WizardForm.UserInfoNameEdit.Color:=Color;
WizardForm.UserInfoOrgLabel.Color:=Color;
WizardForm.UserInfoOrgEdit.Color:=Color;
WizardForm.PreparingLabel.Color:=Color;
WizardForm.UserInfoSerialLabel.Color:=Color;
WizardForm.UserInfoSerialEdit.Color:=Color;
WizardForm.TasksList.Color:=Color;
WizardForm.RunList.Color:=Color;
WizardForm.SelectDirBrowseLabel.Color:=Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color:=Color;

WizardLabel:= TLabel.Create(WizardForm)
WizardLabel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(WizardForm.Width), ScaleY(WizardForm.Height))
WizardLabel.Transparent:= True;
WizardLabel.AutoSize:=false;
WizardLabel.OnMouseMove:=@WizardLabelMove
WizardLabel.Parent:= WizardForm;

WizardForm.BackButton.Width:= ButtonWidth
WizardForm.BackButton.Height:= ButtonHeight

WizardForm.NextButton.Width:= ButtonWidth
WizardForm.NextButton.Height:= ButtonHeight

WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:= ButtonHeight

WizardForm.DirBrowseButton.Left:=ScaleX(337)
WizardForm.DirBrowseButton.Width:= ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

WizardForm.GroupBrowseButton.Left:=ScaleX(337)
WizardForm.GroupBrowseButton.Width:= ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight

WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick

WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick

ExtractTemporaryFile('button2.bmp')
LoadButtonImage(WizardForm.BackButton)
LoadButtonImage(WizardForm.NextButton)
LoadButtonImage(WizardForm.CancelButton)
LoadButtonImage(WizardForm.DirBrowseButton)
LoadButtonImage(WizardForm.GroupBrowseButton)
//Сначала текстурируются кнопки, затем выполняется процедура которую мы перенесли
WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0;
end;


[/more]
Автор: log1stable
Дата сообщения: 24.09.2011 15:02
В процедуру ButtonTextures добавь строку:


Код:
LoadButtonImage(AboutButton)
Автор: Magellan777
Дата сообщения: 24.09.2011 15:36
Вот полний, только без "sound.mp3" в папке "Files" - http://rghost.ru/22853771
Автор: Sergey_Demchuk
Дата сообщения: 24.09.2011 17:45
Реально ли на WizardForm.ReadyMemo наложить на задний фон рисунок? Прозрачности у него нет и функции загрузить БМП изображение тоже нету....

И еще по ходу, насчет Деинсталляции, можно ли убрать стандартные Message о деинсталляции и заменить своими?
Автор: notifier
Дата сообщения: 24.09.2011 18:07
Hello where can I download this script?

http://radikal.ru/F/s39.radikal.ru/i085/1109/e3/929335f6b98e.png.html
Автор: R3Pa4eK
Дата сообщения: 24.09.2011 18:20
notifier
Hello. You nowhere download this script, because I'm not lecturing him.
Автор: log1stable
Дата сообщения: 24.09.2011 18:24
Каким образом наложить кнопку на расширенный border формы инсталлера?

Добавлено:
Sergey_Demchuk в файле сообщений .isl есть эти месседжи. В секцию [Messages] кидаешь нужный месседж и его текст.


Код:
Welcomelabel1=Привет //Для приветствия, например.
Автор: R3Pa4eK
Дата сообщения: 24.09.2011 19:32
ISCP.dll 0.2a
Библиотека для запуска приложений и ожидания их завершения.
Функции:
CreateProc - создает процесс.
UnloadDll - и так понятно.

Изменение:
Если файл для распаковки не найден - выдается сообщение об ошибке.
Добавлена функция ZipPack.
При ошибке лебелы на фин. странице меняються.
Добавлена потдержка запароленых .arc архивов.
Чуть изменена функция CreateProc.
Мелкие правки в скрипте...

Скачать

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.