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

  • Автор темы Автор темы Shegorat
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Shift85, мне казалось, что комментарии автора в этом модуле написаны на русском языке..
и чем вам мешают прототипы функций то?
 
Shift85
Примерно такой минимум нужен для простой отрисовки изображений посредством botva2 + b2p
 
искал код для вставки сплеша в инсталл, так и не смог что-то найти нормально на руборде.
думаю есть у кого-то)
 
искал код для вставки сплеша в инсталл, так и не смог что-то найти нормально на руборде.
думаю есть у кого-то)

Код:
[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;
 
Shift85, если учесть что в твоем примере библа используется, а у 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 если компилято unicode то сплеша не будет вот эту строчку замени
procedure ShowSplashScreen(p1:HWND;p2:Ansistring;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer);
external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
 
пошло)
объясни в чем было дело?
в названии процедуры однотипном?
 
Последнее редактирование:
в названии процедуры однотипном

Ну типа да...

procedure InitializeWizard; (два раза нельзя использовать,если присутствует еще такая процедура просто переименуем)

Типа так :

Код:
procedure RunSplash();
begin
 ExtractTemporaryFile('Splash.png');
 ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\Splash.png',{#SplS},{#SplR},{#SplE},0,255,False,$FFFFFF,10);
end;

И подстроим под procedure InitializeWizard; так:

Код:
procedure InitializeWizard;
begin
RunSplash(); // Splash
end;
 
Последнее редактирование:
  • Like
Реакции: Tixo
подскажите а можно ли в инсталляторе сделать 2-а ComponentsList и что бы каждый из них работал самостоятельно
 
Shift85, пример...
 
Shift85, пример...

Тоже попробовал внедрить этот код в чистый ISDone 6 Final,так прогресс бар стал появляться на долю секунды в самом начале установки, а дальше установка идёт вообще без него и даже кнопка "Отмена"стала не активной.Пытаюсь разобраться в чём дело
 
Mailchik, Спасибо большое :up: а как еще проценты туда добавить...

Тоже попробовал внедрить этот код в чистый ISDone 6 Final,так прогресс бар стал появляться на долю секунды в самом начале установки, а дальше установка идёт вообще без него и даже кнопка "Отмена"стала не активной.Пытаюсь разобраться в чём дело

ilzok17, Значит неправильно внедрял...:)
 
Последнее редактирование:
Mailchik, Данный пример не будет отображать реальный процесс удаления
 
Подскажите пожалуйста, как сделать выбор компонентов установки через checkbox, что бы программа инсталировала те фаилы которые будут указаны флажками checkbox. (Интересует не через стандартную SelectComponentsPage а именно отдельными checkbox)
 
legik2003, код...
 
Последнее редактирование:
Как на отдельный чекбокс наложить картинку bmp или только на компонент лист можно...

И еще при использовании скина как сделать,чтобы при выходе инсталл плавно закрывался без дополнительной формы аеро ( на Win7)...

Заранее спасибо...

Как обьединить функции или же их нужно по отдельности использовать...

Код:
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';
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху