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

  • Автор темы Автор темы YURSHAT
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
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 Тут еще и на финишной сделано. Какая разница? Все равно спросишь как сделать и на последеней странице. :)
 
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], извини, не заметил твой пост.
 
Последнее редактирование:
Эм, вот такая проблема, у меня есть код для сплешскрина, когда я вставляю код для вставки изображения то ни один из них не активен, вот как стоит код

Код:
[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;

Если отключить Сплеш то изображение появится, и наоборот.
 
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]
 
Последнее редактирование:
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]
 
Последнее редактирование:
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,
Примера нет, удалил уже давно, т.к. который шёл от 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;
Принцип простой, две панели, на одной из которых лейбл и эту панель двигаешь по таймеру по первой панели.
 
Я думал может у кого есть другой пример, это я видел. (в скрипте PSP)/ просто помню видел помоему другой пример, вот и спросил. :)
 
Есть файлы *.bin знаю что упакованы через инно(без архиваторов), но setup.exe не вскрывается,возможно ли вытащить файлы из bin и как!?
 
Лёха, провести инсталляцию, если инсталл не вскрывается, то больше никак вообще.
 
Привет. Как сделать так что бы инсталлятор не сидел по верх всех окон. Раньше такого не было..
 
Убрать кусок кода, который отвечает за это. скрипт покажи.
 
kkels, Создаю обычный пустой скрипт, компилю, запускаю - никакого расположения поверх всех окон не наблюдаю. вывод - Не обычный у тебя скрипт, сунул какой-то кусок кода незнамо откуда, и теперь понять не можешь, где косяк. а я с десяток страниц назад писал, что принудительное расположение поверх все окон - это все-же косяк, а не фича.
 
Привет всем. Не знаете в чём может быть проблема..при установке я НЕ выбираю Создание Ярлыка, но он всё равно создаётся..
 
kkels, в твоём скрипте. покажи скрипт что ли, протестируем.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху