bugron спс но жаль что не видно этой линии http://uaimage.com/gallery/e1cb6d63 в конце установки да ладно хрен с ней
» Inno Setup (создание инсталяционных пакетов)
Цитата:
bugron спс но жаль что не видно этой линии http://uaimage.com/gallery/e1cb6d63 да ладно хрен с ней
Я мне откуда было знать, там же не было бевела.
Добавь следующую строчку в процедуру InitializeWizard3, конкретно вот сюда:
Код:
if CurPageID=wpFinished
then
begin
WizardForm.Bevel.show;
WizardForm.Width:=497;{Размер окна по горизонтали}
WizardForm.Height:=360;{Размер окна по вертикали}
WizardForm.Position:=poScreenCenter;{Возврат в исходное состояние}
end
bugron оо спс
Добавлено:
Вот есть ещё одна проблема,у меня создать ярлык и установка дополнительного ПО стоит там где выбираешь куда установить игру,но есть проблема с доп ПО даже если галочка убрана чтобы его уст оно все-равно уст вот скрипт помогите плиз http://rghost.ru/18249251
Добавлено:
Вот есть ещё одна проблема,у меня создать ярлык и установка дополнительного ПО стоит там где выбираешь куда установить игру,но есть проблема с доп ПО даже если галочка убрана чтобы его уст оно все-равно уст вот скрипт помогите плиз http://rghost.ru/18249251
Ребят, прикрутите к этому скрипту кнопку (не простую кнопку, а ту, похожую на динамик) для пауцы/воспроизведения музыки, Вот скрипт.
Добавлено:
insombia
Пожалуйста, не ставь знаки препинания, а то с трудом понимаетс что ты пишешь.
Добавлено:
Цитата:
Это я так шучу, ставь их!
Добавлено:
Цитата:
Держи исправленный: Скрипт. Проблема юыла в том, что Доп. ПО запускались и в секции [Run] и в коде, тоесть получалось так, что полюбому Доп. ПО запустатся, вот эту ошибку я и исправил.
Добавлено:
И еще парочка вопросов.
Вот стало интересно, возможно ли как то использовать константы, типа {app} и {sd} в других программах, скажем в NSIS? Например, путь установки файлов инсталла Inno по умолчанию является следующим - C:\Program Files\MyProg, тогда {app}= C:\Program Files\MyProg, это мы все знаем, но как из другой проги получить доступ (прочитать) значение {app}? Вообще такое возможно?
И второй вопрос. Как распаковать файлы из инсталляторов, сделанные в версии Enhanced? (конечно без установки).
Добавлено:
insombia
Пожалуйста, не ставь знаки препинания, а то с трудом понимаетс что ты пишешь.
Добавлено:
Цитата:
не ставь знаки препинания
Это я так шучу, ставь их!
Добавлено:
Цитата:
Вот есть ещё одна проблема,у меня создать ярлык и установка дополнительного ПО стоит там где выбираешь куда установить игру,но есть проблема с доп ПО даже если галочка убрана чтобы его уст оно все-равно уст вот скрипт помогите плиз http://rghost.ru/18249251
Держи исправленный: Скрипт. Проблема юыла в том, что Доп. ПО запускались и в секции [Run] и в коде, тоесть получалось так, что полюбому Доп. ПО запустатся, вот эту ошибку я и исправил.
Добавлено:
И еще парочка вопросов.
Вот стало интересно, возможно ли как то использовать константы, типа {app} и {sd} в других программах, скажем в NSIS? Например, путь установки файлов инсталла Inno по умолчанию является следующим - C:\Program Files\MyProg, тогда {app}= C:\Program Files\MyProg, это мы все знаем, но как из другой проги получить доступ (прочитать) значение {app}? Вообще такое возможно?
И второй вопрос. Как распаковать файлы из инсталляторов, сделанные в версии Enhanced? (конечно без установки).
bugron
Цитата:
С выходом ботвы эта библиотека не актуальна и использовать ее нет смысла
Цитата:
Можешь обратится к автору сея библиотеки South (он же автор ботвы)
Цитата:
Там вроде в хелпе все росписано подробно
А вообще мануалы для библиотек отдельно никто не пишет т.е. если ты скачал архив с некой библиотекой и в нем нет мануала - значит его нет вообще.
Цитата:
Анпакера для расширенной версии нет.
Цитата:
ImgGdiPlus
С выходом ботвы эта библиотека не актуальна и использовать ее нет смысла
Цитата:
isgsg
Можешь обратится к автору сея библиотеки South (он же автор ботвы)
Цитата:
ISPrecomp-0.7
Там вроде в хелпе все росписано подробно
А вообще мануалы для библиотек отдельно никто не пишет т.е. если ты скачал архив с некой библиотекой и в нем нет мануала - значит его нет вообще.
Цитата:
Как распаковать файлы из инсталляторов, сделанные в версии Enhanced?
Анпакера для расширенной версии нет.
YURSHAT
Спасибо за ответы. А что мешает сделать анпакер для расширенной версии?
Спасибо за ответы. А что мешает сделать анпакер для расширенной версии?
как повесить прогрессбары и лэйблы из [more=процедуры]
procedure CreateControls;
var PBTop:integer;
begin
PBTop:=ScaleY(50);
ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar1 do begin
Parent := WizardForm;
Height := WizardForm.ProgressGauge.Height;
Left := ScaleX(0);
Top := PBTop;
Width := ScaleX(365);
Max := 1000;
end;
LabelPct1 := TLabel.Create(WizardForm);
with LabelPct1 do begin
Parent := WizardForm;
AutoSize := False;
Left := ISDoneProgressBar1.Width+ScaleX(5);
Top := ISDoneProgressBar1.Top + ScaleY(2);
Width := ScaleX(80);
end;
LabelCurrFileName := TLabel.Create(WizardForm);
with LabelCurrFileName do begin
Parent := WizardForm;
AutoSize := False;
Width := ISDoneProgressBar1.Width+ScaleX(30);
Left := ScaleX(0);
Top := ScaleY(30);
end;
#ifdef SecondProgressBar
PBTop:=PBTop+ScaleY(25);
ISDoneProgressBar2 := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar2 do begin
Parent := WizardForm;
Left := ScaleX(0);
Top := PBTop+ScaleY(8);
Width := ISDoneProgressBar1.Width;
Max := 1000;
Height := WizardForm.ProgressGauge.Height;
end;
LabelPct2 := TLabel.Create(WizardForm);
with LabelPct2 do begin
Parent := WizardForm;
AutoSize := False;
Left := ISDoneProgressBar2.Width+ScaleX(5);
Top := ISDoneProgressBar2.Top + ScaleY(2);
Width := ScaleX(80);
end;
#endif
LabelTime1 := TLabel.Create(WizardForm);
with LabelTime1 do begin
Parent := WizardForm;
AutoSize := False;
Width := ISDoneProgressBar1.Width div 2;
Left := ScaleX(0);
Top := PBTop + ScaleY(35);
end;
LabelTime2 := TLabel.Create(WizardForm);
with LabelTime2 do begin
Parent := WizardForm;
AutoSize := False;
Width := LabelTime1.Width+ScaleX(40);
Left := ISDoneProgressBar1.Width div 2;
Top := LabelTime1.Top;
end;
[/more] на wpInstalling
если прописываю к примеру [more=это]
ISDoneProgressBar1.Hide
If CurPageID=wpInstalling then begin
ISDoneProgressBar1.Show
end;
[/more]
выдает [more=ошибку] [/url] [/more]
procedure CreateControls;
var PBTop:integer;
begin
PBTop:=ScaleY(50);
ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar1 do begin
Parent := WizardForm;
Height := WizardForm.ProgressGauge.Height;
Left := ScaleX(0);
Top := PBTop;
Width := ScaleX(365);
Max := 1000;
end;
LabelPct1 := TLabel.Create(WizardForm);
with LabelPct1 do begin
Parent := WizardForm;
AutoSize := False;
Left := ISDoneProgressBar1.Width+ScaleX(5);
Top := ISDoneProgressBar1.Top + ScaleY(2);
Width := ScaleX(80);
end;
LabelCurrFileName := TLabel.Create(WizardForm);
with LabelCurrFileName do begin
Parent := WizardForm;
AutoSize := False;
Width := ISDoneProgressBar1.Width+ScaleX(30);
Left := ScaleX(0);
Top := ScaleY(30);
end;
#ifdef SecondProgressBar
PBTop:=PBTop+ScaleY(25);
ISDoneProgressBar2 := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar2 do begin
Parent := WizardForm;
Left := ScaleX(0);
Top := PBTop+ScaleY(8);
Width := ISDoneProgressBar1.Width;
Max := 1000;
Height := WizardForm.ProgressGauge.Height;
end;
LabelPct2 := TLabel.Create(WizardForm);
with LabelPct2 do begin
Parent := WizardForm;
AutoSize := False;
Left := ISDoneProgressBar2.Width+ScaleX(5);
Top := ISDoneProgressBar2.Top + ScaleY(2);
Width := ScaleX(80);
end;
#endif
LabelTime1 := TLabel.Create(WizardForm);
with LabelTime1 do begin
Parent := WizardForm;
AutoSize := False;
Width := ISDoneProgressBar1.Width div 2;
Left := ScaleX(0);
Top := PBTop + ScaleY(35);
end;
LabelTime2 := TLabel.Create(WizardForm);
with LabelTime2 do begin
Parent := WizardForm;
AutoSize := False;
Width := LabelTime1.Width+ScaleX(40);
Left := ISDoneProgressBar1.Width div 2;
Top := LabelTime1.Top;
end;
[/more] на wpInstalling
если прописываю к примеру [more=это]
ISDoneProgressBar1.Hide
If CurPageID=wpInstalling then begin
ISDoneProgressBar1.Show
end;
[/more]
выдает [more=ошибку] [/url] [/more]
bugron
Цитата:
ХЗ. Я никогда не интересовался анпакером. Можешь связатся с его авторами и спросить.
Цитата:
А что мешает сделать анпакер для расширенной версии?
ХЗ. Я никогда не интересовался анпакером. Можешь связатся с его авторами и спросить.
YURSHAT
может подскажешь с проблемкой?
может подскажешь с проблемкой?
Despofix
Цитата:
Там вроде проблема с isdone, а я с ним никогда не работал (даже скрипт в глаза не видел). А времени разбиратся нету так как занят большим проектом да и к внешним распаковщикам отношусь не очень...
Цитата:
может подскажешь с проблемкой?
Там вроде проблема с isdone, а я с ним никогда не работал (даже скрипт в глаза не видел). А времени разбиратся нету так как занят большим проектом да и к внешним распаковщикам отношусь не очень...
Despofix
Прогресс бар из CreateControls перенеси в InitializeWizard, потом скрывай и показывай на соответствующей странице в процедуре CurPageChanged.
[more=Примерно так выглядит..]var
ISDoneProgressBar1: TNewProgressBar;
procedure InitializeWizard();
begin
ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar1 do begin
SetBounds(50, 100, 396, 25);
Max:= 1000;
Parent:= WizardForm;
end;
end;
procedure Hide(CurPageID: Integer);
begin
ISDoneProgressBar1.Hide;
end;
procedure Show(CurPageID: Integer);
begin case CurPageID of
wpInstalling:
begin
ISDoneProgressBar1.Show;
end;
end;
Procedure CurPageChanged(CurPageID: Integer);
begin
Hide(CurPageID);
Show(CurPageID);
end;
[/more]
С лейблами процентов и времени точно так же.
Прогресс бар из CreateControls перенеси в InitializeWizard, потом скрывай и показывай на соответствующей странице в процедуре CurPageChanged.
[more=Примерно так выглядит..]var
ISDoneProgressBar1: TNewProgressBar;
procedure InitializeWizard();
begin
ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar1 do begin
SetBounds(50, 100, 396, 25);
Max:= 1000;
Parent:= WizardForm;
end;
end;
procedure Hide(CurPageID: Integer);
begin
ISDoneProgressBar1.Hide;
end;
procedure Show(CurPageID: Integer);
begin case CurPageID of
wpInstalling:
begin
ISDoneProgressBar1.Show;
end;
end;
Procedure CurPageChanged(CurPageID: Integer);
begin
Hide(CurPageID);
Show(CurPageID);
end;
[/more]
С лейблами процентов и времени точно так же.
Цитата:
А что мешает сделать анпакер для расширенной версии?
отсутствие исходников мешает...
дайте плиз кодик текстурирования кнопок через ботву, что бы сразу все кнопки текстурировались, а не чтобы каждую прописывать.
Помогите, пожалуйста, ответить на 2 вопроса:
1) Где можно взять скины для Innno Setup, кроме сайта codejock?
2) Всегда ли архивы FreeArc, копируются в {app}? Может быть как-нибудь можно вообще не копировать архивы на жёсткий диск?
1) Где можно взять скины для Innno Setup, кроме сайта codejock?
2) Всегда ли архивы FreeArc, копируются в {app}? Может быть как-нибудь можно вообще не копировать архивы на жёсткий диск?
Percey123
1. Ищи InnoUltra
2. ?! Как ему скажешь так он и будет копировать.
1. Ищи InnoUltra
2. ?! Как ему скажешь так он и будет копировать.
SotM
Цитата:
Я давно там скины не вставляю - места много занимают. Percey123, Отдельно пак скинов: Скачать
.
Цитата:
Ищи InnoUltra
Я давно там скины не вставляю - места много занимают. Percey123, Отдельно пак скинов: Скачать
.
http://inno.at.ua/TMP/12.7z
сделайте readymemo прозрачним, без рамочки
Добавлено:
http://inno.at.ua/TMP/Fenixx_Dead_Spase_2_ISdone0.6.7z
перемистите isdone c sspostinstall na ssinstall
Добавлено:
http://inno.at.ua/TMP/undercover_bratherhood_lite.7z
вставте workspace.png i statuspanel.png на все станице и 1.png на все странице кроме первой и последней через ботву. Файли в архиве
сделайте readymemo прозрачним, без рамочки
Добавлено:
http://inno.at.ua/TMP/Fenixx_Dead_Spase_2_ISdone0.6.7z
перемистите isdone c sspostinstall na ssinstall
Добавлено:
http://inno.at.ua/TMP/undercover_bratherhood_lite.7z
вставте workspace.png i statuspanel.png на все станице и 1.png на все странице кроме первой и последней через ботву. Файли в архиве
Gnom3
Большое спасибо!
SotM
Мне-то как раз надо, чтобы он вообще не копировал архивы на компьютер. К примеру: игра весит 400 мб, пожалась до 200 мб, и у меня получается, что сначала загружается архив на жёсткий диск, а потом идёт распаковка. Окончательный размер= 600 мб. А это нежелательно. Есть ли способ не копировать архив?
Большое спасибо!
SotM
Мне-то как раз надо, чтобы он вообще не копировал архивы на компьютер. К примеру: игра весит 400 мб, пожалась до 200 мб, и у меня получается, что сначала загружается архив на жёсткий диск, а потом идёт распаковка. Окончательный размер= 600 мб. А это нежелательно. Есть ли способ не копировать архив?
Percey123 через че ты пытаешся распаковать архив
дайте плиз кодик текстурирования кнопок через ботву, что бы сразу все кнопки текстурировались, а не чтобы каждую прописывать.
vint56
Я использую самый краткий скрипт распаковки архивов FreeArc от Shegorat. Через него и распаковываю.
Я использую самый краткий скрипт распаковки архивов FreeArc от Shegorat. Через него и распаковываю.
Percey123 краткий скрипт работает только в Need for Speed™ Undercover версий 2
там есть такая строчка
#define ArcLocation "{src}\Data.arc"
{src} что будет идти распаковка с диска архив должен лежать возле setup.exe
Despofix вот кнопки
[more][Files]
#include "botva2.iss"
[setup]
[files
Source: InstallFiles\Button.png; Flags: dontcopy; DestDir: {tmp}
Source: InstallFiles\botva2.dll; DestDir: {tmp}; Flags: dontcopy
Source: InstallFiles\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: InstallFiles\Click.wav; Flags: dontcopy; DestDir: {tmp}
Source: InstallFiles\Enter.wav; Flags: dontcopy; DestDir: {tmp}
[Code]
var
hCancelBtn, hNextBtn, hBackBtn, hDirBrowseBtn, hGroupBrowseBtn :HWND;
ButtonFont: TFont;
function sndPlaySound(lpszSoundName: String; uFlags: cardinal):integer; external 'sndPlaySoundA@winmm.dll stdcall';
procedure BtnEnter(hBtn:HWND);
begin
sndPlaySound(ExpandConstant('{tmp}\Enter.wav'), $0001);
end;
procedure SetStateNewButtons;
begin
//устанавливаем наши кнопки в тоже состояние, что и их оригиналы
with WizardForm.BackButton do begin
BtnSetText(hBackBtn,PAnsiChar(Caption));
BtnSetVisibility(hBackBtn,Visible);
end;
with WizardForm.NextButton do begin
BtnSetText(hNextBtn,PAnsiChar(Caption));
BtnSetVisibility(hNextBtn,Visible);
end;
with WizardForm.CancelButton do begin
BtnSetText(hCancelBtn,PAnsiChar(Caption));
BtnSetVisibility(hCancelBtn,Visible);
end;
BtnSetText(hDirBrowseBtn,PAnsiChar(WizardForm.DirBrowseButton.Caption));
BtnSetText(hGroupBrowseBtn,PAnsiChar(WizardForm.GroupBrowseButton.Caption));
end;
procedure WizardFormBtnClick(hBtn:HWND);
var
Btn:TButton;
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
//для кнопок выполняется одна процедура при нажатии, поэтому ищем,
//процедуру какой оригинальной кнопки нам все-таки нужно выполнить
case hBtn of
hCancelBtn: Btn:=WizardForm.CancelButton;
hNextBtn: Btn:=WizardForm.NextButton;
hBackBtn: Btn:=WizardForm.BackButton;
hDirBrowseBtn: Btn:=WizardForm.DirBrowseButton;
hGroupBrowseBtn: Btn:=WizardForm.GroupBrowseButton;
end;
Btn.OnClick(Btn); //выполняем нажатие на стандартную кнопку
SetStateNewButtons;
BtnRefresh(hBtn);
end;
function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
if not FileExists(ExpandConstant('{tmp}\innocallback.dll')) then ExtractTemporaryFile('innocallback.dll');
Result:=True;
end;
procedure InitializeWizard;
begin
ExtractTemporaryFile('button.png');
ExtractTemporaryFile('click.wav');
ExtractTemporaryFile('Enter.wav');
WizardForm.BackButton.Left:=230;
//используем для кнопок свой шрифт
ButtonFont:=TFont.Create;
with ButtonFont do begin
Style:=[fsBold];
Name:='Arial'
end;
//заменим стандартные кнопки на свои
with WizardForm.CancelButton do begin
hCancelBtn:=BtnCreate(WizardForm.Handle,Left-8,Top-8,Width+16,Height+16,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hCancelBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetEvent(hCancelBtn,BtnMouseEnterEventID,WrapBtnCallback(@BtnEnter,1));
BtnSetFont(hCancelBtn,ButtonFont.Handle);
BtnSetFontColor(hCancelBtn,$000000,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hCancelBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.NextButton do begin
hNextBtn:=BtnCreate(WizardForm.Handle,Left-8,Top-8,Width+16,Height+16,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hNextBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetEvent(hNextBtn,BtnMouseEnterEventID,WrapBtnCallback(@BtnEnter,1));
BtnSetFont(hNextBtn,ButtonFont.Handle);
BtnSetFontColor(hNextBtn,$000000,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hNextBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.BackButton do begin
hBackBtn:=BtnCreate(WizardForm.Handle,Left-8,Top-8,Width+16,Height+16,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hBackBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetEvent(hBackBtn,BtnMouseEnterEventID,WrapBtnCallback(@BtnEnter,1));
BtnSetFont(hBackBtn,ButtonFont.Handle);
BtnSetFontColor(hBackBtn,$000000,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hBackBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.DirBrowseButton do begin
hDirBrowseBtn:=BtnCreate(WizardForm.SelectDirPage.Handle,Left-8,Top-8,Width+16,Height+16,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hDirBrowseBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetEvent(hDirBrowseBtn,BtnMouseEnterEventID,WrapBtnCallback(@BtnEnter,1));
BtnSetFont(hDirBrowseBtn,ButtonFont.Handle);
BtnSetFontColor(hDirBrowseBtn,$000000,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hDirBrowseBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.GroupBrowseButton do begin
hGroupBrowseBtn:=BtnCreate(WizardForm.SelectProgramGroupPage.Handle,Left-8,Top-8,Width+16,Height+16,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hGroupBrowseBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetEvent(hGroupBrowseBtn,BtnMouseEnterEventID,WrapBtnCallback(@BtnEnter,1));
BtnSetFont(hGroupBrowseBtn,ButtonFont.Handle);
BtnSetFontColor(hGroupBrowseBtn,$000000,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hGroupBrowseBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
ImgApplyChanges(WizardForm.Handle);
end;
Procedure CurPageChanged(CurPageID: Integer);
Begin
SetStateNewButtons;
end;
procedure DeinitializeSetup();
begin
gdipShutdown;
ButtonFont.Free;//прибьем свой шрифт
end;[/more]
там есть такая строчка
#define ArcLocation "{src}\Data.arc"
{src} что будет идти распаковка с диска архив должен лежать возле setup.exe
Despofix вот кнопки
[more][Files]
#include "botva2.iss"
[setup]
[files
Source: InstallFiles\Button.png; Flags: dontcopy; DestDir: {tmp}
Source: InstallFiles\botva2.dll; DestDir: {tmp}; Flags: dontcopy
Source: InstallFiles\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: InstallFiles\Click.wav; Flags: dontcopy; DestDir: {tmp}
Source: InstallFiles\Enter.wav; Flags: dontcopy; DestDir: {tmp}
[Code]
var
hCancelBtn, hNextBtn, hBackBtn, hDirBrowseBtn, hGroupBrowseBtn :HWND;
ButtonFont: TFont;
function sndPlaySound(lpszSoundName: String; uFlags: cardinal):integer; external 'sndPlaySoundA@winmm.dll stdcall';
procedure BtnEnter(hBtn:HWND);
begin
sndPlaySound(ExpandConstant('{tmp}\Enter.wav'), $0001);
end;
procedure SetStateNewButtons;
begin
//устанавливаем наши кнопки в тоже состояние, что и их оригиналы
with WizardForm.BackButton do begin
BtnSetText(hBackBtn,PAnsiChar(Caption));
BtnSetVisibility(hBackBtn,Visible);
end;
with WizardForm.NextButton do begin
BtnSetText(hNextBtn,PAnsiChar(Caption));
BtnSetVisibility(hNextBtn,Visible);
end;
with WizardForm.CancelButton do begin
BtnSetText(hCancelBtn,PAnsiChar(Caption));
BtnSetVisibility(hCancelBtn,Visible);
end;
BtnSetText(hDirBrowseBtn,PAnsiChar(WizardForm.DirBrowseButton.Caption));
BtnSetText(hGroupBrowseBtn,PAnsiChar(WizardForm.GroupBrowseButton.Caption));
end;
procedure WizardFormBtnClick(hBtn:HWND);
var
Btn:TButton;
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
//для кнопок выполняется одна процедура при нажатии, поэтому ищем,
//процедуру какой оригинальной кнопки нам все-таки нужно выполнить
case hBtn of
hCancelBtn: Btn:=WizardForm.CancelButton;
hNextBtn: Btn:=WizardForm.NextButton;
hBackBtn: Btn:=WizardForm.BackButton;
hDirBrowseBtn: Btn:=WizardForm.DirBrowseButton;
hGroupBrowseBtn: Btn:=WizardForm.GroupBrowseButton;
end;
Btn.OnClick(Btn); //выполняем нажатие на стандартную кнопку
SetStateNewButtons;
BtnRefresh(hBtn);
end;
function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
if not FileExists(ExpandConstant('{tmp}\innocallback.dll')) then ExtractTemporaryFile('innocallback.dll');
Result:=True;
end;
procedure InitializeWizard;
begin
ExtractTemporaryFile('button.png');
ExtractTemporaryFile('click.wav');
ExtractTemporaryFile('Enter.wav');
WizardForm.BackButton.Left:=230;
//используем для кнопок свой шрифт
ButtonFont:=TFont.Create;
with ButtonFont do begin
Style:=[fsBold];
Name:='Arial'
end;
//заменим стандартные кнопки на свои
with WizardForm.CancelButton do begin
hCancelBtn:=BtnCreate(WizardForm.Handle,Left-8,Top-8,Width+16,Height+16,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hCancelBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetEvent(hCancelBtn,BtnMouseEnterEventID,WrapBtnCallback(@BtnEnter,1));
BtnSetFont(hCancelBtn,ButtonFont.Handle);
BtnSetFontColor(hCancelBtn,$000000,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hCancelBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.NextButton do begin
hNextBtn:=BtnCreate(WizardForm.Handle,Left-8,Top-8,Width+16,Height+16,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hNextBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetEvent(hNextBtn,BtnMouseEnterEventID,WrapBtnCallback(@BtnEnter,1));
BtnSetFont(hNextBtn,ButtonFont.Handle);
BtnSetFontColor(hNextBtn,$000000,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hNextBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.BackButton do begin
hBackBtn:=BtnCreate(WizardForm.Handle,Left-8,Top-8,Width+16,Height+16,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hBackBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetEvent(hBackBtn,BtnMouseEnterEventID,WrapBtnCallback(@BtnEnter,1));
BtnSetFont(hBackBtn,ButtonFont.Handle);
BtnSetFontColor(hBackBtn,$000000,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hBackBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.DirBrowseButton do begin
hDirBrowseBtn:=BtnCreate(WizardForm.SelectDirPage.Handle,Left-8,Top-8,Width+16,Height+16,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hDirBrowseBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetEvent(hDirBrowseBtn,BtnMouseEnterEventID,WrapBtnCallback(@BtnEnter,1));
BtnSetFont(hDirBrowseBtn,ButtonFont.Handle);
BtnSetFontColor(hDirBrowseBtn,$000000,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hDirBrowseBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.GroupBrowseButton do begin
hGroupBrowseBtn:=BtnCreate(WizardForm.SelectProgramGroupPage.Handle,Left-8,Top-8,Width+16,Height+16,ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(hGroupBrowseBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetEvent(hGroupBrowseBtn,BtnMouseEnterEventID,WrapBtnCallback(@BtnEnter,1));
BtnSetFont(hGroupBrowseBtn,ButtonFont.Handle);
BtnSetFontColor(hGroupBrowseBtn,$000000,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(hGroupBrowseBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
ImgApplyChanges(WizardForm.Handle);
end;
Procedure CurPageChanged(CurPageID: Integer);
Begin
SetStateNewButtons;
end;
procedure DeinitializeSetup();
begin
gdipShutdown;
ButtonFont.Free;//прибьем свой шрифт
end;[/more]
vint56
Спасибо за помощь. Но вот никак не могу понять, в репаках релиз груп и одиночек, всегда только setup.exe и bin файлы. Есть ли способ как-нибудь перекодировать .arc файлы в .bin файлы?
Спасибо за помощь. Но вот никак не могу понять, в репаках релиз груп и одиночек, всегда только setup.exe и bin файлы. Есть ли способ как-нибудь перекодировать .arc файлы в .bin файлы?
Percey123 это просто переменований arc на bin просто когда будеш сжимать фриарком где расширения arc поменяй на bin и все
#define ArcLocation "{src}\Data.arc" будет так #define ArcLocation "{src}\Data.bin"
#define ArcLocation "{src}\Data.arc" будет так #define ArcLocation "{src}\Data.bin"
Percey123
поменять расширение архивов
поменять расширение архивов
Ктонить может написать код для скрытия BeveledLabel на странице установки?
VASYAKRN
Цитата:
Легко. ПРозрачный и без рамочки - как просил. Если хочеш - по остальным вопросам помогу. Но в таком-же стиле - чего просиш, то и дам.
Цитата:
http://inno.at.ua/TMP/12.7z
сделайте readymemo прозрачним, без рамочки
Легко. ПРозрачный и без рамочки - как просил. Если хочеш - по остальным вопросам помогу. Но в таком-же стиле - чего просиш, то и дам.
Вынужден повторить просьбу. Ребят, прикрутите к этому скрипту кнопку (не простую кнопку, а ту, похожую на динамик) для паузы/воспроизведения музыки, Вот скрипт.
И еще не ответили на этот вопрос.
Цитата:
И еще не ответили на этот вопрос.
Цитата:
И еще парочка вопросов.
Вот стало интересно, возможно ли как то использовать константы, типа {app} и {sd} в других программах, скажем в NSIS? Например, путь установки файлов инсталла Inno по умолчанию является следующим - C:\Program Files\MyProg, тогда {app}= C:\Program Files\MyProg, это мы все знаем, но как из другой проги получить доступ (прочитать) значение {app}? Вообще такое возможно?
взял из справки следующий [more=скрипт][Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp
[Files]
Source: botva2.dll; DestDir: {tmp}; Flags: dontcopy
Source: compiler:innocallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: Button.png; DestDir: {tmp}; Flags: dontcopy
[code]
type
TButtonInfo = record ButtonName: array of TButton; Handle: array of HWND; Count: Integer; end;
TBtnEventProc = procedure(h:HWND);
const
BtnClickEventID = 1;
BtnMouseEnterEventID = 2;
BtnMouseLeaveEventID = 3;
BtnMouseMoveEventID = 4;
balLeft = 0;
balCenter = 1;
var
ButtonsBuff: TButtonInfo;
HCancelButton, HNextButton, HBackButton, HDirBrowseButton, HGroupBrowseButton: HWND;
function WrapBtnCallback(Callback: TBtnEventProc; ParamCount: Integer): Longword; external 'wrapcallback@files:innocallback.dll stdcall';
function BtnCreate(hParent:HWND; Left,Top,Width,Height:integer; FileName:PChar; ShadowWidth:integer; IsCheckBtn:boolean):HWND; external 'BtnCreate@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetPosition(h:HWND; NewLeft, NewTop, NewWidth, NewHeight: integer); external 'BtnSetPosition@files:botva2.dll stdcall';
procedure BtnRefresh(h:HWND); external 'BtnRefresh@files:botva2.dll stdcall';
function BtnGetChecked(h:HWND):boolean; external 'BtnGetChecked@files:botva2.dll stdcall';
procedure BtnSetChecked(h:HWND; Value:boolean); external 'BtnSetChecked@files:botva2.dll stdcall';
procedure BtnSetText(h:HWND; Text:PAnsiChar); external 'BtnSetText@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetTextAlignment(h:HWND; HorIndent, VertIndent:integer; Alignment:DWORD); external 'BtnSetTextAlignment@files:botva2.dll stdcall';
procedure BtnSetVisibility(h:HWND; Value:boolean); external 'BtnSetVisibility@files:botva2.dll stdcall';
function BtnGetEnabled(h:HWND):boolean; external 'BtnGetEnabled@files:botva2.dll stdcall';
procedure BtnSetEnabled(h:HWND; Value:boolean); external 'BtnSetEnabled@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetFont(h:HWND; Font:Cardinal); external 'BtnSetFont@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetFontColor(h:HWND; NormalFontColor, FocusedFontColor, PressedFontColor, DisabledFontColor: Cardinal); external 'BtnSetFontColor@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetEvent(h:HWND; EventID:integer; Event:Longword); external 'BtnSetEvent@files:botva2.dll stdcall';
procedure BtnSetCursor(h:HWND; hCur:Cardinal); external 'BtnSetCursor@files:botva2.dll stdcall';
function GetSysCursorHandle(id:integer):Cardinal; external 'GetSysCursorHandle@files:botva2.dll stdcall';
procedure gdipShutdown; external 'gdipShutdown@files:botva2.dll stdcall';
procedure UpdateButtons();
var I: integer;
begin
for I:=0 to (ButtonsBuff.Count-1) do begin
BtnSetEnabled(ButtonsBuff.Handle[I], ButtonsBuff.ButtonName[I].Enabled)
BtnSetVisibility(ButtonsBuff.Handle[I], ButtonsBuff.ButtonName[I].Visible)
BtnSetText(ButtonsBuff.Handle[I], ButtonsBuff.ButtonName[I].Caption)
BtnRefresh(ButtonsBuff.Handle[I])
end;
end;
procedure ButtonOnClick(hBtn: HWND);
var Btn: TButton; I: Integer;
begin
for I:=0 to (ButtonsBuff.Count-1) do begin
if hBtn = ButtonsBuff.Handle[I] then Btn:= ButtonsBuff.ButtonName[I];
end;
Btn.OnClick(Btn)
UpdateButtons;
end;
function EffectTextureButton(Handle: HWND; Button: TButton; ImageName: PAnsiChar; ShadowWidth: Integer; EnterEvent, MoveEvent, LeaveEvent: TbtnEventProc): HWND;
begin
Result:=BtnCreate(Handle, Button.Left-8, Button.Top-8, Button.Width+16, Button.Height+16, ImageName, ShadowWidth, False) //Размеры подобраны для текущей текстуры
BtnSetEvent(Result, BtnClickEventID, WrapBtnCallback(@ButtonOnClick, 1))
if EnterEvent <> nil then BtnSetEvent(Result, BtnMouseEnterEventID, WrapBtnCallback(EnterEvent, 1));
if MoveEvent <> nil then BtnSetEvent(Result, BtnMouseMoveEventID, WrapBtnCallback(MoveEvent, 1));
if LeaveEvent <> nil then BtnSetEvent(Result, BtnMouseLeaveEventID, WrapBtnCallback(LeaveEvent, 1));
BtnSetFont(Result, Button.Font.Handle)
BtnSetText(Result, Button.Caption);
BtnSetVisibility(Result, Button.Visible);
BtnSetFontColor(Result,clBlack,clBlack,clBlack,clGray);
BtnSetCursor(Result,GetSysCursorHandle(32649));
Button.Width:=0; Button.Height:= 0;
SetArrayLength(ButtonsBuff.Handle, ButtonsBuff.Count+1);SetArrayLength(ButtonsBuff.ButtonName, ButtonsBuff.Count+1);
ButtonsBuff.ButtonName[ButtonsBuff.Count]:= Button; ButtonsBuff.Handle[ButtonsBuff.Count]:= Result;
ButtonsBuff.Count:= ButtonsBuff.Count+1;
end;
procedure ButtonChangeFont(ButtonHandle: HWND; Font: TFont; NormalColor, FocusedColor, PressedColor, DisabledColor: Cardinal);
begin
if Font <> nil then BtnSetFont(ButtonHandle, Font.Handle);
BtnSetFontColor(ButtonHandle, NormalColor, FocusedColor, PressedColor, DisabledColor)
end;
procedure InitializeWizard();
begin
ExtractTemporaryFile('Button.png')
HNextButton:= EffectTextureButton(WizardForm.Handle, WizardForm.NextButton, ExpandConstant('{tmp}\Button.png'), 18, nil, nil, nil)
HCancelButton:= EffectTextureButton(WizardForm.Handle, WizardForm.CancelButton, ExpandConstant('{tmp}\Button.png'), 18, nil, nil, nil)
HBackButton:= EffectTextureButton(WizardForm.Handle, WizardForm.BackButton, ExpandConstant('{tmp}\Button.png'), 18, nil, nil, nil)
HDirBrowseButton:= EffectTextureButton(WizardForm.Handle, WizardForm.DirBrowseButton, ExpandConstant('{tmp}\Button.png'), 18, nil, nil, nil)
HGroupBrowseButton:= EffectTextureButton(WizardForm.Handle, WizardForm.GroupBrowseButton, ExpandConstant('{tmp}\Button.png'), 18, nil, nil, nil)
end;
procedure CurPageChanged(CurPageId: Integer);
begin
UpdateButtons
end;
procedure DeinitializeSetup();
begin
gdipShutdown
end;
[/more] вопрос как менять расположение кнопок WizardForm.NextButton.Left и т.д не помогают. а то кнопки на старые места встали.
Добавлено:
Gnom3
возможно ли сделать taskslist и componentslist прозрачными?
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp
[Files]
Source: botva2.dll; DestDir: {tmp}; Flags: dontcopy
Source: compiler:innocallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: Button.png; DestDir: {tmp}; Flags: dontcopy
[code]
type
TButtonInfo = record ButtonName: array of TButton; Handle: array of HWND; Count: Integer; end;
TBtnEventProc = procedure(h:HWND);
const
BtnClickEventID = 1;
BtnMouseEnterEventID = 2;
BtnMouseLeaveEventID = 3;
BtnMouseMoveEventID = 4;
balLeft = 0;
balCenter = 1;
var
ButtonsBuff: TButtonInfo;
HCancelButton, HNextButton, HBackButton, HDirBrowseButton, HGroupBrowseButton: HWND;
function WrapBtnCallback(Callback: TBtnEventProc; ParamCount: Integer): Longword; external 'wrapcallback@files:innocallback.dll stdcall';
function BtnCreate(hParent:HWND; Left,Top,Width,Height:integer; FileName:PChar; ShadowWidth:integer; IsCheckBtn:boolean):HWND; external 'BtnCreate@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetPosition(h:HWND; NewLeft, NewTop, NewWidth, NewHeight: integer); external 'BtnSetPosition@files:botva2.dll stdcall';
procedure BtnRefresh(h:HWND); external 'BtnRefresh@files:botva2.dll stdcall';
function BtnGetChecked(h:HWND):boolean; external 'BtnGetChecked@files:botva2.dll stdcall';
procedure BtnSetChecked(h:HWND; Value:boolean); external 'BtnSetChecked@files:botva2.dll stdcall';
procedure BtnSetText(h:HWND; Text:PAnsiChar); external 'BtnSetText@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetTextAlignment(h:HWND; HorIndent, VertIndent:integer; Alignment:DWORD); external 'BtnSetTextAlignment@files:botva2.dll stdcall';
procedure BtnSetVisibility(h:HWND; Value:boolean); external 'BtnSetVisibility@files:botva2.dll stdcall';
function BtnGetEnabled(h:HWND):boolean; external 'BtnGetEnabled@files:botva2.dll stdcall';
procedure BtnSetEnabled(h:HWND; Value:boolean); external 'BtnSetEnabled@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetFont(h:HWND; Font:Cardinal); external 'BtnSetFont@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetFontColor(h:HWND; NormalFontColor, FocusedFontColor, PressedFontColor, DisabledFontColor: Cardinal); external 'BtnSetFontColor@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetEvent(h:HWND; EventID:integer; Event:Longword); external 'BtnSetEvent@files:botva2.dll stdcall';
procedure BtnSetCursor(h:HWND; hCur:Cardinal); external 'BtnSetCursor@files:botva2.dll stdcall';
function GetSysCursorHandle(id:integer):Cardinal; external 'GetSysCursorHandle@files:botva2.dll stdcall';
procedure gdipShutdown; external 'gdipShutdown@files:botva2.dll stdcall';
procedure UpdateButtons();
var I: integer;
begin
for I:=0 to (ButtonsBuff.Count-1) do begin
BtnSetEnabled(ButtonsBuff.Handle[I], ButtonsBuff.ButtonName[I].Enabled)
BtnSetVisibility(ButtonsBuff.Handle[I], ButtonsBuff.ButtonName[I].Visible)
BtnSetText(ButtonsBuff.Handle[I], ButtonsBuff.ButtonName[I].Caption)
BtnRefresh(ButtonsBuff.Handle[I])
end;
end;
procedure ButtonOnClick(hBtn: HWND);
var Btn: TButton; I: Integer;
begin
for I:=0 to (ButtonsBuff.Count-1) do begin
if hBtn = ButtonsBuff.Handle[I] then Btn:= ButtonsBuff.ButtonName[I];
end;
Btn.OnClick(Btn)
UpdateButtons;
end;
function EffectTextureButton(Handle: HWND; Button: TButton; ImageName: PAnsiChar; ShadowWidth: Integer; EnterEvent, MoveEvent, LeaveEvent: TbtnEventProc): HWND;
begin
Result:=BtnCreate(Handle, Button.Left-8, Button.Top-8, Button.Width+16, Button.Height+16, ImageName, ShadowWidth, False) //Размеры подобраны для текущей текстуры
BtnSetEvent(Result, BtnClickEventID, WrapBtnCallback(@ButtonOnClick, 1))
if EnterEvent <> nil then BtnSetEvent(Result, BtnMouseEnterEventID, WrapBtnCallback(EnterEvent, 1));
if MoveEvent <> nil then BtnSetEvent(Result, BtnMouseMoveEventID, WrapBtnCallback(MoveEvent, 1));
if LeaveEvent <> nil then BtnSetEvent(Result, BtnMouseLeaveEventID, WrapBtnCallback(LeaveEvent, 1));
BtnSetFont(Result, Button.Font.Handle)
BtnSetText(Result, Button.Caption);
BtnSetVisibility(Result, Button.Visible);
BtnSetFontColor(Result,clBlack,clBlack,clBlack,clGray);
BtnSetCursor(Result,GetSysCursorHandle(32649));
Button.Width:=0; Button.Height:= 0;
SetArrayLength(ButtonsBuff.Handle, ButtonsBuff.Count+1);SetArrayLength(ButtonsBuff.ButtonName, ButtonsBuff.Count+1);
ButtonsBuff.ButtonName[ButtonsBuff.Count]:= Button; ButtonsBuff.Handle[ButtonsBuff.Count]:= Result;
ButtonsBuff.Count:= ButtonsBuff.Count+1;
end;
procedure ButtonChangeFont(ButtonHandle: HWND; Font: TFont; NormalColor, FocusedColor, PressedColor, DisabledColor: Cardinal);
begin
if Font <> nil then BtnSetFont(ButtonHandle, Font.Handle);
BtnSetFontColor(ButtonHandle, NormalColor, FocusedColor, PressedColor, DisabledColor)
end;
procedure InitializeWizard();
begin
ExtractTemporaryFile('Button.png')
HNextButton:= EffectTextureButton(WizardForm.Handle, WizardForm.NextButton, ExpandConstant('{tmp}\Button.png'), 18, nil, nil, nil)
HCancelButton:= EffectTextureButton(WizardForm.Handle, WizardForm.CancelButton, ExpandConstant('{tmp}\Button.png'), 18, nil, nil, nil)
HBackButton:= EffectTextureButton(WizardForm.Handle, WizardForm.BackButton, ExpandConstant('{tmp}\Button.png'), 18, nil, nil, nil)
HDirBrowseButton:= EffectTextureButton(WizardForm.Handle, WizardForm.DirBrowseButton, ExpandConstant('{tmp}\Button.png'), 18, nil, nil, nil)
HGroupBrowseButton:= EffectTextureButton(WizardForm.Handle, WizardForm.GroupBrowseButton, ExpandConstant('{tmp}\Button.png'), 18, nil, nil, nil)
end;
procedure CurPageChanged(CurPageId: Integer);
begin
UpdateButtons
end;
procedure DeinitializeSetup();
begin
gdipShutdown
end;
[/more] вопрос как менять расположение кнопок WizardForm.NextButton.Left и т.д не помогают. а то кнопки на старые места встали.
Добавлено:
Gnom3
возможно ли сделать taskslist и componentslist прозрачными?
Despofix
да, таким образом можно любой элемент прозрачноым сделать, хоть все окно.
да, таким образом можно любой элемент прозрачноым сделать, хоть все окно.
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
Предыдущая тема: поиск
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.