искал код для вставки сплеша в инсталл, так и не смог что-то найти нормально на руборде.
думаю есть у кого-то)
[Setup]
AppName=Splash
AppVerName=Splash
CreateAppDir=false
DisableDirPage=true
DisableProgramGroupPage=true
UninstallDisplayName=Splash
[Files]
Source: compiler:WizModernImage.bmp; DestDir: {tmp}; DestName: Splash.bmp; Flags: dontcopy
[Code_]
procedure InitializeWizard();
var
SplashImage: TBitmapImage;
SplashForm: TForm;
SplashFileName: String;
I: Integer;
begin
SplashFileName := ExpandConstant('{tmp}\splash.bmp');
ExtractTemporaryFile(ExtractFileName(SplashFileName));
SplashForm := TForm.create(nil);
with SplashForm do
begin
BorderStyle := bsNone;
Position := poScreenCenter;//poDesigned poDefault poDefaultPosOnly poDefaultSizeOnly
ClientWidth := 405; // Минимальный размер 320х200 !
ClientHeight := 310;
end;
SplashImage := TBitmapImage.Create(SplashForm);
with SplashImage do
begin
Bitmap.LoadFromFile(SplashFileName);
Stretch := false;
Align := alClient;
Parent := SplashForm;
end;
with SplashForm do
begin
Show;
for I := 1 to 1 do
begin
Repaint;
Sleep(1000); // показ изображения в милисекундах
end;
// Close;
// Free;
end;
end;
Tixo, Держи : http://rghost.ru/53024405искал код для вставки сплеша в инсталл
EvilAlex,Можно и покороче кодКакой ни какой, пример сплеша
[Setup]
AppName=Splash
AppVerName=Splash
CreateAppDir=false
DisableDirPage=true
DisableProgramGroupPage=true
UninstallDisplayName=Splash
[Files]
Source: WizModernImage.bmp; DestDir: {tmp}; DestName: Splash.bmp; Flags: dontcopy
[Code ]
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLongW@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongW@user32.dll stdcall';
function SetLayeredWindowAttributes(hwnd: HWND; crKey: TColor; bAlpha: BYTE; dwFlags: DWORD): Boolean; external 'SetLayeredWindowAttributes@user32.dll stdcall';
var
SplashImage: TBitmapImage;
SplashFileName: String;
SplashForm: TForm;
SplashTimer1: TTimer;
SplashTimer2: TTimer;
b: integer;
s: boolean;
procedure ShowForm(Sender: TObject);
begin
b:=b+50;
SetWindowLong(SplashForm.Handle,-20,GetWindowLong(SplashForm.Handle,-20) or $80000);
SetLayeredWindowAttributes(SplashForm.Handle,$000008,b,1 or 2);
if b=255 then
begin
SplashTimer1.Enabled:=false;
Sleep(1000);
SplashTimer2.Enabled:=True;
end;
end;
procedure HideForm(Sender: TObject);
begin
b:=b-50;
SetWindowLong(SplashForm.Handle,-20,GetWindowLong(SplashForm.Handle,-20) or $80000);
SetLayeredWindowAttributes(SplashForm.Handle,$000008,b,1 or 2);
if b=5 then
begin
SplashForm.Close;
s:= true;
end;
end;
function Splash: boolean;
begin
b:=55;
SplashFileName := ExpandConstant('{tmp}\splash.bmp');
ExtractTemporaryFile(ExtractFileName(SplashFileName));
SplashForm := TForm.create(nil);
with SplashForm do
begin
BorderStyle := bsNone;
Position := poScreenCenter;
ClientWidth := ScaleX(405);
ClientHeight := ScaleX(310);
end;
SplashImage := TBitmapImage.Create(SplashForm);
with SplashImage do
begin
Bitmap.LoadFromFile(SplashFileName);
Stretch := false;
Align := alClient;
Parent := SplashForm;
end;
SplashTimer1:=TTimer.Create(nil);
with SplashTimer1 do begin
Interval:=100;
OnTimer:=@ShowForm;
end;
SplashTimer2:=TTimer.Create(nil);
with SplashTimer2 do begin
Interval:=100;
OnTimer:=@HideForm;
Enabled:=false;
end;
with SplashForm do
begin
b:= 55;
SetWindowLong(Handle,-20,GetWindowLong(Handle,-20) or $80000);
SetLayeredWindowAttributes(Handle,$000008,b,1 or 2);
ShowModal;
Repaint;
end;
Result:=s;
end;
function InitializeSetup(): Boolean;
begin
Result:= Splash;
end;
хмм, все скопировал, откомпилил, доделал свои косяки, инсталл запускается но сплешем там не пахнет)Tixo, Держи : http://rghost.ru/53024405
Tixo, Замени в скрипте: http://rghost.ru/53036896хмм, все скопировал, откомпилил, доделал свои косяки, инсталл запускается но сплешем там не пахнет
Ну типа да...в названии процедуры однотипном
procedure RunSplash();
begin
ExtractTemporaryFile('Splash.png');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\Splash.png',{#SplS},{#SplR},{#SplE},0,255,False,$FFFFFF,10);
end;
procedure InitializeWizard;
begin
RunSplash(); // Splash
end;
Тоже попробовал внедрить этот код в чистый ISDone 6 Final,так прогресс бар стал появляться на долю секунды в самом начале установки, а дальше установка идёт вообще без него и даже кнопка "Отмена"стала не активной.Пытаюсь разобраться в чём делоShift85, пример...Код:if (CurStep = ssPostInstall) and ISDoneError then begin if ISDoneProgressBar1.Position <> 0 then begin ISDoneProgressBar1.Show; while ISDoneProgressBar1.Position <> 0 do begin ISDoneProgressBar1.Position := ISDoneProgressBar1.Position - 1; Sleep(1); end; end; end;
ilzok17, Значит неправильно внедрял...Тоже попробовал внедрить этот код в чистый ISDone 6 Final,так прогресс бар стал появляться на долю секунды в самом начале установки, а дальше установка идёт вообще без него и даже кнопка "Отмена"стала не активной.Пытаюсь разобраться в чём дело
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files]
Source: "test.txt"; DestDir: {app}; Check: CBTestFunc;
[B][[/B]Code]
var
CB: TCheckBox;
function CBTestFunc: boolean;
begin
Result := CB.Checked;
end;
procedure InitializeWizard;
begin
CB := TCheckBox.Create(WizardForm);
with CB do begin
Parent := WizardForm;
Caption := 'Протестировать';
SetBounds(ScaleX(10), WizardForm.NextButton.Top, ScaleX(200), ScaleY(20));
end;
end;
function WrapCallback(callback:TCallback; paramcount:integer):longword;
external 'wrapcallback@files:ISDone.dll stdcall delayload';
function WrapCallback(Callback:TProc; NumParam:integer): longword;
external 'WrapCallback@files:isslideshow.dll stdcall';