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

Статус
В этой теме нельзя размещать новые ответы.

sergey3695

Ветеран
Модератор
kkels,
Код:
[Setup] 
AppName=MyApp 
AppVerName=MyApp 
DefaultDirname={pf}\MyApp 
 
[files] 
Source: Img2.bmp; DestDir: {tmp}; Flags: dontcopy 
 
[code ] 
procedure InitializeWizard(); 
begin 
ExtractTemporaryFile('img2.bmp'); 
 
WizardForm.WizardBitmapImage.Width:= ScaleX(497); 
WizardForm.WizardBitmapImage2.Width:= ScaleX(497); 
WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img2.bmp')); 
WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img2.bmp')); 
 
WizardForm.WelcomeLabel1.Hide; 
WizardForm.WelcomeLabel2.Hide; 
WizardForm.FinishedLabel.Hide; 
WizardForm.FinishedHeadingLabel.Hide; 
end;
P.S Тут еще и на финишной сделано. Какая разница? Все равно спросишь как сделать и на последеней странице. :)
 

Mailchik

Старожил
Проверенный
kkels, так например:
[SOURCE="inno"][Setup]
AppName=MyApp
AppVersion=MyApp
DefaultDirName={pf}\MyApp
WizardImageFile=compiler:WizModernImage-IS.bmp

Код:
procedure InitializeWizard();
begin
 with Wizardform.WizardBitmapImage do begin
  Width := WizardForm.ClientWidth;
  Height := WizardForm.ClientHeight;
 end;

 Wizardform.WelcomeLabel1.Hide;
 Wizardform.WelcomeLabel2.Hide;
end;[/SOURCE][/SPOILER]
[b]sergey3695[/b], извини, не заметил твой пост.
 
Последнее редактирование:

makst

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

Код:
[Code ]
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 ssSetBkgImage(FileName:PChar); external 'ssSetBkgImage@files:isgsg.dll stdcall delayload';
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

procedure InitializeWizard1();
begin
  ExtractTemporaryFile('logo.png');
  ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\logo.png',1000,3000,1000,0,255,False,$FFFFFF,10);
  ssInitialize(GetWindowLong(MainForm.Handle,-8),0,False,2,$FF000000);
  ExtractTemporaryFile('back.jpg');
  ssSetBkgImage(ExpandConstant('{tmp}')+'\back.jpg');
end;

procedure InitializeWizard2();
begin
ExtractTemporaryFile('img2.bmp');

WizardForm.WizardBitmapImage.Width:= ScaleX(497);
WizardForm.WizardBitmapImage2.Width:= ScaleX(497);
WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img2.bmp'));
WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img2.bmp'));

WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.FinishedHeadingLabel.Hide;
end;

procedure DeinitializeSetup;
begin
  ssDeInitialize;
end;
Если отключить Сплеш то изображение появится, и наоборот.
 

nik1967

Old Men
Проверенный
kkels,
[SOURCE="inno"][_Code]
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 ssSetBkgImage(FileName:pChar); external 'ssSetBkgImage@files:isgsg.dll stdcall delayload';
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

procedure InitializeWizard();
begin
ExtractTemporaryFile('logo.png');
ExtractTemporaryFile('img2.bmp');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\logo.png',1000,3000,1000,0,255,False,$FFFFFF,10);
ssInitialize(GetWindowLong(MainForm.Handle,-8),0,False,2,$FF000000);
ExtractTemporaryFile('back.jpg');
ssSetBkgImage(ExpandConstant('{tmp}')+'\back.jpg');

WizardForm.WizardBitmapImage.Width:= ScaleX(497);
WizardForm.WizardBitmapImage2.Width:= ScaleX(497);
WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img2.bmp'));
WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img2.bmp'));

WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.FinishedHeadingLabel.Hide;
end;

procedure DeinitializeSetup;
begin
ssDeInitialize;
end;[/SOURCE]

Если честно, не помню автора, чего очень стыжусь.
[SOURCE="inno"]// ******************************************************** События установки ********************************************************

[ Code]
// События установки имеющие дубликацию

function BackButtonClick(CurPageID: Integer): Boolean;
begin
Result := BackButtonClick1(CurPageID); if not Result then exit;
// Result := BackButtonClick2(CurPageID); if not Result then exit;
// Result := BackButtonClick3(CurPageID); if not Result then exit;
// Result := BackButtonClick4(CurPageID); if not Result then exit;
// Result := BackButtonClick5(CurPageID); if not Result then exit;
// Result := BackButtonClick6(CurPageID); if not Result then exit;
// Result := BackButtonClick7(CurPageID); if not Result then exit;
// Result := BackButtonClick8(CurPageID); if not Result then exit;
// Result := BackButtonClick9(CurPageID); if not Result then exit;
// Result := BackButtonClick10(CurPageID); if not Result then exit;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
CurPageChanged1(CurPageID);
// CurPageChanged2(CurPageID);
// CurPageChanged3(CurPageID);
// CurPageChanged4(CurPageID);
// CurPageChanged5(CurPageID);
// CurPageChanged6(CurPageID);
// CurPageChanged7(CurPageID);
// CurPageChanged8(CurPageID);
// CurPageChanged9(CurPageID);
// CurPageChanged10(CurPageID);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
CurStepChanged1(CurStep);
// CurStepChanged2(CurStep);
// CurStepChanged3(CurStep);
// CurStepChanged4(CurStep);
// CurStepChanged5(CurStep);
// CurStepChanged6(CurStep);
// CurStepChanged7(CurStep);
// CurStepChanged8(CurStep);
// CurStepChanged9(CurStep);
// CurStepChanged10(CurStep);
end;

procedure DeinitializeSetup();
begin
DeinitializeSetup1();
// DeinitializeSetup2();
// DeinitializeSetup3();
// DeinitializeSetup4();
// DeinitializeSetup5();
// DeinitializeSetup6();
// DeinitializeSetup7();
// DeinitializeSetup8();
// DeinitializeSetup9();
// DeinitializeSetup10();
end;

function GetCustomSetupExitCode(): Integer;
begin
Result := GetCustomSetupExitCode1(); if Result>0 then exit;
// Result := GetCustomSetupExitCode2(); if Result>0 then exit;
// Result := GetCustomSetupExitCode3(); if Result>0 then exit;
// Result := GetCustomSetupExitCode4(); if Result>0 then exit;
// Result := GetCustomSetupExitCode5(); if Result>0 then exit;
// Result := GetCustomSetupExitCode6(); if Result>0 then exit;
// Result := GetCustomSetupExitCode7(); if Result>0 then exit;
// Result := GetCustomSetupExitCode8(); if Result>0 then exit;
// Result := GetCustomSetupExitCode9(); if Result>0 then exit;
// Result := GetCustomSetupExitCode10(); if Result>0 then exit;
end;

function InitializeSetup(): Boolean;
begin
Result := InitializeSetup1(); if not Result then exit;
// Result := InitializeSetup2(); if not Result then exit;
// Result := InitializeSetup3(); if not Result then exit;
// Result := InitializeSetup4(); if not Result then exit;
// Result := InitializeSetup5(); if not Result then exit;
// Result := InitializeSetup6(); if not Result then exit;
// Result := InitializeSetup7(); if not Result then exit;
// Result := InitializeSetup8(); if not Result then exit;
// Result := InitializeSetup9(); if not Result then exit;
// Result := InitializeSetup10(); if not Result then exit;

end;

procedure InitializeWizard();
begin
InitializeWizard1();
// InitializeWizard2();
// InitializeWizard3();
// InitializeWizard4();
// InitializeWizard5();
// InitializeWizard6();
// InitializeWizard7();
// InitializeWizard8();
// InitializeWizard9();
// InitializeWizard10();
end;

function NeedRestart(): Boolean;
begin
Result := NeedRestart1(); if Result then exit;
// Result := NeedRestart2(); if Result then exit;
// Result := NeedRestart3(); if Result then exit;
// Result := NeedRestart4(); if Result then exit;
// Result := NeedRestart5(); if Result then exit;
// Result := NeedRestart6(); if Result then exit;
// Result := NeedRestart7(); if Result then exit;
// Result := NeedRestart8(); if Result then exit;
// Result := NeedRestart9(); if Result then exit;
// Result := NeedRestart10(); if Result then exit;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := NextButtonClick1(CurPageID); if not Result then exit;
// Result := NextButtonClick2(CurPageID); if not Result then exit;
// Result := NextButtonClick3(CurPageID); if not Result then exit;
// Result := NextButtonClick4(CurPageID); if not Result then exit;
// Result := NextButtonClick5(CurPageID); if not Result then exit;
// Result := NextButtonClick6(CurPageID); if not Result then exit;
// Result := NextButtonClick7(CurPageID); if not Result then exit;
// Result := NextButtonClick8(CurPageID); if not Result then exit;
// Result := NextButtonClick9(CurPageID); if not Result then exit;
// Result := NextButtonClick10(CurPageID); if not Result then exit;
end;

procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
RegisterPreviousData1(PreviousDataKey);
// RegisterPreviousData2(PreviousDataKey);
// RegisterPreviousData3(PreviousDataKey);
// RegisterPreviousData4(PreviousDataKey);
// RegisterPreviousData5(PreviousDataKey);
// RegisterPreviousData6(PreviousDataKey);
// RegisterPreviousData7(PreviousDataKey);
// RegisterPreviousData8(PreviousDataKey);
// RegisterPreviousData9(PreviousDataKey);
// RegisterPreviousData10(PreviousDataKey);
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := ShouldSkipPage1(PageID); if not Result then exit;
// Result := ShouldSkipPage2(PageID); if not Result then exit;
// Result := ShouldSkipPage3(PageID); if not Result then exit;
// Result := ShouldSkipPage4(PageID); if not Result then exit;
// Result := ShouldSkipPage5(PageID); if not Result then exit;
// Result := ShouldSkipPage6(PageID); if not Result then exit;
// Result := ShouldSkipPage7(PageID); if not Result then exit;
// Result := ShouldSkipPage8(PageID); if not Result then exit;
// Result := ShouldSkipPage9(PageID); if not Result then exit;
// Result := ShouldSkipPage10(PageID); if not Result then exit;
end;




// События установки не имеющие дубликацию
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin

end;

function CheckPassword(Password: String): Boolean;
begin

end;

function CheckSerial(Serial: String): Boolean;
begin

end;

function PrepareToInstall(var NeedsRestart: Boolean): String;
begin

end;

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
begin

end;




// ******************************************************** События удаления********************************************************
// События удаления имеющие дубликацию

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
CurUninstallStepChanged1(CurUninstallStep);
// CurUninstallStepChanged2(CurUninstallStep);
// CurUninstallStepChanged3(CurUninstallStep);
// CurUninstallStepChanged4(CurUninstallStep);
// CurUninstallStepChanged5(CurUninstallStep);
// CurUninstallStepChanged6(CurUninstallStep);
// CurUninstallStepChanged7(CurUninstallStep);
// CurUninstallStepChanged8(CurUninstallStep);
// CurUninstallStepChanged9(CurUninstallStep);
// CurUninstallStepChanged10(CurUninstallStep);
end;

procedure DeinitializeUninstall();
begin
DeinitializeUninstall1();
// DeinitializeUninstall2();
// DeinitializeUninstall3();
// DeinitializeUninstall4();
// DeinitializeUninstall5();
// DeinitializeUninstall6();
// DeinitializeUninstall7();
// DeinitializeUninstall8();
// DeinitializeUninstall9();
// DeinitializeUninstall10();
end;

function InitializeUninstall(): Boolean;
begin
Result := InitializeUninstall1(); if not Result then exit;
// Result := InitializeUninstall2(); if not Result then exit;
// Result := InitializeUninstall3(); if not Result then exit;
// Result := InitializeUninstall4(); if not Result then exit;
// Result := InitializeUninstall5(); if not Result then exit;
// Result := InitializeUninstall6(); if not Result then exit;
// Result := InitializeUninstall7(); if not Result then exit;
// Result := InitializeUninstall8(); if not Result then exit;
// Result := InitializeUninstall9(); if not Result then exit;
// Result := InitializeUninstall10(); if not Result then exit;
end;

procedure InitializeUninstallProgressForm();
begin
InitializeUninstallProgressForm1();
// InitializeUninstallProgressForm2();
// InitializeUninstallProgressForm3();
// InitializeUninstallProgressForm4();
// InitializeUninstallProgressForm5();
// InitializeUninstallProgressForm6();
// InitializeUninstallProgressForm7();
// InitializeUninstallProgressForm8();
// InitializeUninstallProgressForm9();
// InitializeUninstallProgressForm10();
end;

function UninstallNeedRestart(): Boolean;
begin
Result := UninstallNeedRestart1(); if Result then exit;
// Result := UninstallNeedRestart2(); if Result then exit;
// Result := UninstallNeedRestart3(); if Result then exit;
// Result := UninstallNeedRestart4(); if Result then exit;
// Result := UninstallNeedRestart5(); if Result then exit;
// Result := UninstallNeedRestart6(); if Result then exit;
// Result := UninstallNeedRestart7(); if Result then exit;
// Result := UninstallNeedRestart8(); if Result then exit;
// Result := UninstallNeedRestart9(); if Result then exit;
// Result := UninstallNeedRestart10(); if Result then exit;
end;[/SOURCE]
 
Последнее редактирование:

nik1967

Old Men
Проверенный
kkels, внимательно присмотрись к ошибке - в "FadeOut:boolean" можно увидеть пробел - "FadeO ut:boolean". Видимо особенности движка сайта.
И кстати, я не напрасно выложил "События установки имеющие дубликацию". Можно было оставить предыдущий код, но добавить объединяющую процедуру.
[SOURCE="inno"]
Код:
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 ssSetBkgImage(FileName:PChar); external 'ssSetBkgImage@files:isgsg.dll stdcall delayload';
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

procedure InitializeWizard1();
begin
  ExtractTemporaryFile('logo.png');
  ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\logo.png',1000,3000,1000,0,255,False,$FFFFFF,10);
  ssInitialize(GetWindowLong(MainForm.Handle,-8),0,False,2,$FF000000);
  ExtractTemporaryFile('back.jpg');
  ssSetBkgImage(ExpandConstant('{tmp}')+'\back.jpg');
end;

procedure InitializeWizard2();
begin
ExtractTemporaryFile('img2.bmp');

WizardForm.WizardBitmapImage.Width:= ScaleX(497);
WizardForm.WizardBitmapImage2.Width:= ScaleX(497);
WizardForm.WizardBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img2.bmp'));
WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img2.bmp'));

WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.FinishedHeadingLabel.Hide;
end;

procedure InitializeWizard();
begin
  InitializeWizard1();
  InitializeWizard2();
end;

procedure DeinitializeSetup;
begin
  ssDeInitialize;
end;[/SOURCE][/SPOILER]
 
Последнее редактирование:

Mailchik

Старожил
Проверенный
kkels,
[SOURCE="inno"][Setup]
AppName=MyApp
AppVersion=MyApp
DefaultDirName={pf}\MyApp
WizardSmallImageFile=compiler:WizModernImage-IS.bmp

Код:
procedure InitializeWizard();
begin
 with Wizardform.WizardSmallBitmapImage do begin
  Width := WizardForm.MainPanel.Width;
  Left := WizardForm.MainPanel.Left;
 end;
 Wizardform.PageNameLabel.Hide;
 Wizardform.PageDescriptionLabel.Hide;
end;[/SOURCE][/SPOILER]
 

sergey3695

Ветеран
Модератор
Привет всем! У кого есть пример как сделать эффект титр в инсталляторе. Чтобы была видна надпись и потом все монотонно уходило вверх и появлялось продолжение текста. У самого был пример, но найти не смог. Если не сложно, поделитесь.
 

Snoopak96

Старожил
sergey3695,
Примера нет, удалил уже давно, т.к. который шёл от restool не совсем удачный в плане реализации, лейблы постоянно моргали при перемещении, можешь взять от сюда http://krinkels.org/downloads.php?do=file&id=82
Самому выдёргивать лень :pardon:
Нужные тебе функции:
Код:
procedure MyOnTimer(h: Longword; msg: Longword; idevent: Longword; dwTime: Longword);
begin
  InfoPanel.Top := InfoPanel.Top - 1;
  if InfoPanel.Top = -InfoPanel.Height then
    InfoPanel.Top := OuterPanel.Height - 150;
end;

procedure InfoPanelOnMouseEnter(Sender: TObject);
begin
  KillTimer(WizardForm.Handle,TimerID3);
end;

procedure InfoPanelOnMouseLeave(Sender: TObject);
begin
  TimerID3:=SetTimer(WizardForm.Handle,3,70,WrapTimerProc(@MyOnTimer,4));
end;

и процедура Gameinfo;
Принцип простой, две панели, на одной из которых лейбл и эту панель двигаешь по таймеру по первой панели.
 

sergey3695

Ветеран
Модератор
Я думал может у кого есть другой пример, это я видел. (в скрипте PSP)/ просто помню видел помоему другой пример, вот и спросил. :)
 

Лёха

Участник
Есть файлы *.bin знаю что упакованы через инно(без архиваторов), но setup.exe не вскрывается,возможно ли вытащить файлы из bin и как!?
 

LexBell

Борода
Супер модератор
Лёха, провести инсталляцию, если инсталл не вскрывается, то больше никак вообще.
 

makst

Новичок
Привет. Как сделать так что бы инсталлятор не сидел по верх всех окон. Раньше такого не было..
 

LexBell

Борода
Супер модератор
Убрать кусок кода, который отвечает за это. скрипт покажи.
 

LexBell

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

makst

Новичок
Привет всем. Не знаете в чём может быть проблема..при установке я НЕ выбираю Создание Ярлыка, но он всё равно создаётся..
 

Mailchik

Старожил
Проверенный
kkels, в твоём скрипте. покажи скрипт что ли, протестируем.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху