логично-же, что справка - это тебе не боевик какой-нибудь или фэнтези А по делу - не нужно читать справку подряд, хотя и желательно. Я лично обхожусь тем, что просто ищу в ней то, что поможет мне в данный момент.А можно узнать, почему надоела?
логично-же, что справка - это тебе не боевик какой-нибудь или фэнтези А по делу - не нужно читать справку подряд, хотя и желательно. Я лично обхожусь тем, что просто ищу в ней то, что поможет мне в данный момент.А можно узнать, почему надоела?
Сюжета ведь нет в справке. Если был сюжет, то лучше бы читалась справка.А можно узнать, почему надоела?
Const
Indent=25;
Function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall delayload';
Function ssInitialize(hParent:HWND;ssTimeShow:integer;FadeOut:boolean;StretchMode:integer;BkgColor:DWORD):boolean; external 'ssInitialize@files:isgsg.dll stdcall delayload';
Procedure ssDeInitialize; external 'ssDeInitialize@files:isgsg.dll stdcall delayload';
Procedure ssAddImage(FileName:PChar); external 'ssAddImage@files:isgsg.dll stdcall delayload';
Procedure ssStartShow; external 'ssStartShow@files:isgsg.dll stdcall delayload';
Procedure ssStopShow; external 'ssStopShow@files:isgsg.dll stdcall delayload';
Procedure InitializeWizard;
Begin
ssInitialize(GetWindowLong(MainForm.Handle,-8),1,False,1,$FF000000);
end;
Procedure CurStepChanged(CurStep: TSetupStep);
Begin
If CurStep=ssInstall then begin
ExtractTemporaryFile('Image1.bmp');
ssAddImage(ExpandConstant('{tmp}')+'\Image1.bmp');
ExtractTemporaryFile('Image2.bmp');
ssAddImage(ExpandConstant('{tmp}')+'\Image2.bmp');
ExtractTemporaryFile('Image3.bmp');
ssAddImage(ExpandConstant('{tmp}')+'\Image3.bmp');
ExtractTemporaryFile('Image4.bmp');
ssAddImage(ExpandConstant('{tmp}')+'\Image4.bmp');
ssStartShow;
end;
If CurStep=ssPostInstall then ssStopShow;
end;
Procedure CurPageChanged(CurPageID: Integer);
Begin
If CurPageID=wpInstalling then begin
WizardForm.MainPanel.Visible:=False;
end;
end;
Procedure DeinitializeSetup;
Begin
ssDeInitialize;
end; [/SPOILER]
Надеюсь на ващу помощь!
в эти дебри можете не лезть.Залез в дебри Delphi...дескрипторы...хэндлы! Да помогут мне боги))
Function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall delayload';
Function ssInitialize(hParent:HWND;ssTimeShow:integer;FadeO ut:boolean;StretchMode:integer;BkgColorWORD):boo lean; external 'ssInitialize@files:isgsg.dll stdcall delayload';
Скорей всего зд есь придеться копать чтобы на WizardForm'е сделать этот слайд!...буду дальше искать решение...хотя это может быть ограничением самой ISgsg.dll...
Да, исправить .dllДописать саму Dll
Товарищ South знает как, ибо он автор этой .dll (ISgsg.dll)Не сложно, кто знает как это сделать)
Если не трудно не подскажешь как и чем это можно сделать?Самим Delphi...
попробую скачать его и открыть им эту Dll
Раз видели, почему бы не просмотреть скрипт? В нём как раз таки реализовано это..Будет круто если это можно будет реализовать, что-то подобное видел в TextModule_v0.2_by_aLLeXUs!
установить игру с "Тестовым прогоном"
WizardForm.ComponentsList.WantTabs := True;
Да, можно. Но если бы вы прочитали справку к ISDone, у вас бы не возник этот вопрос.можно ли както самому вручную внести данные в "records.inf" чтоб пропустить этот шаг
Ручная расстановка процентов на каждую операцию.
При ручной расстановке если в проекте множество операций, все расчеты необходимо производить вручную. Т.е. сумма процентов всех выполненных операций должна равняться 100%, иначе корректного отображения на прогрессбаре не будет.
Для включения данного режима необходимо заполнить вторые значения всех функций извлечения архивов значениями процентов, отличными от 0 (числа могут быть дробными).
При групповой распаковке архивов по маске (типа *.pcf) для операции задается общий процент на все распаковываемые файлы данной командой, а уж каждый из найденных файлов будет разбивать указанный кусок прогрессбара еще на части пропорциональные размерам файлов. Например строка:
if not ISArcExtract (0, 100, ExpandConstant('{src}\*.arc'), ExpandConstant('{app}'), false, '', '', '') then break;
...
распакует все *.arc архивы из {src} в {app}, при чем весь прогрессбар будет поделен на кусочки пропрорциональные размерам архивов. В общем тут все так же как в скрипте распаковки FreeArc.iss и ему подобным. Таким образом при распаковке нескольких архивов одного типа проще пользоваться ручной расстановкой, т.к. отличие расперделения процентов от автоматической будет совсем небольшим, но за то не требуется тестовый проход.
Вот некоторые правила, которые неоходимо выполнять при ручной расстановке:
а) сумма процентов учитывая ветвления (использование компонентов, условий) в скрипте должна составлять 100;
б) у компонентов, для которых возможен выбор только одного из нескольких, должны быть одинаковые значения процентов;
в) НЕЛЬЗЯ использовать компоненты, которые можно выбирать одновременно с другими в одной группе (например несколько рядом стоящих компонент без флага exclusive), потому что сумма процентов при различном выборе пользователя может отличаться от 100.
Примечание
Стоит упомянуть функцию ISExec, в которой третьим параметром задается время выполнения текущей операции. При автоматической расстановке время на операцию расчитывается приближенное к реальному (при условии, что данная операция не первая, иначе время выполнения берется равное тому, которое было в тестовом проходе). При ручной же расстановке: если машина пользователя быстрее обработает данную операцию, чем расчитано автором инсталла, то прогресс будет немного скачкообразным в моменты переходов между функциями распаковки; если машина пользователя медленнее - прогресс наоборот будет задерживаться между операциями.
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Files]
Source: "InstallFiles\"; Flags: dontcopy;
[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
[cod]
var
WizardImg: Longint;
function ImgLoad(Wnd :HWND; FileName :PAnsiChar; Left, Top, Width, Height :integer; Stretch, IsBkg :boolean) :Longint; external 'ImgLoad@{tmp}\botva2.dll stdcall delayload';
procedure ImgSetPosition(img :Longint; NewLeft, NewTop, NewWidth, NewHeight :integer); external 'ImgSetPosition@{tmp}\botva2.dll stdcall delayload';
procedure ImgRelease(img :Longint); external 'ImgRelease@{tmp}\botva2.dll stdcall delayload';
procedure ImgSetVisibility(img :Longint; Visible :boolean); external 'ImgSetVisibility@{tmp}\botva2.dll stdcall delayload';
function ImgGetVisibility(img:Longint):boolean; external 'ImgGetVisibility@{tmp}\botva2.dll stdcall delayload';
procedure ImgApplyChanges(h:HWND); external 'ImgApplyChanges@{tmp}\botva2.dll stdcall delayload';
procedure gdipShutdown; external 'gdipShutdown@{tmp}\botva2.dll stdcall delayload';
function InitializeSetup: Boolean;
begin
ExtractTemporaryFile('botva2.dll');
ExtractTemporaryFile('innocallback.dll');
Result:=True;
end;
//************************************************ [Начало - Вставка изображений] ***************************************************//
procedure CreateWizardImage;
var
i: integer;
begin
WizardForm.ClientWidth:=ScaleX(798);
WizardForm.ClientHeight:=ScaleY(543);
WizardForm.Center;
WizardForm.OuterNotebook.Hide;
WizardForm.InnerNotebook.Hide;
WizardForm.Bevel.Hide;
ExtractTemporaryFile('Workspace.png');
ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Workspace.png'),ScaleX(42), ScaleY(160),ScaleX(714),ScaleY(309),True,True);
ImgApplyChanges(WizardForm.Handle);
end;
//************************************************ [Конец - Вставка изображений] ***************************************************//
procedure InitializeWizard;
begin
CreateWizardImage;
end;
[COLOR="Red"]
procedure DeinitializeSetup;
begin
gdipShu tdown;
end;[/COLOR]
и как мне текст на передний план вывести, а то у меня его нет.
разумеется его и не будет, нужно руками все лейбы создаватьWizardForm.OuterNotebook.Hide;
WizardForm.InnerNotebook.Hide;