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

  • Автор темы Автор темы YURSHAT
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
А можно узнать, почему надоела?
логично-же, что справка - это тебе не боевик какой-нибудь или фэнтези :) А по делу - не нужно читать справку подряд, хотя и желательно. Я лично обхожусь тем, что просто ищу в ней то, что поможет мне в данный момент.
 
Нашел более оптимальную версию создания слайд шоу...
Наконец-то))
Пожалуйста помогите слайд шоу сделать в WizardForm (в окне инсталлятора), и его подгоном (ширина высота и расположение типа SetBounds).
Скрипт прилагается:
[Setup]
AppName=Assassin's Creed III
AppVerName=Assassin's Creed III
DefaultDirName={sd}\GAMES\Assassin's Creed III
DefaultGroupName=Ubisoft\Assassin's Creed III
DirExistsWarning=no
DisableReadyPage=yes
OutputDir=.
OutputBaseFilename=Setup
UninstallFilesDir={app}\Uninstall
CreateUninstallRegKey=no
SolidCompression=yes

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: Slide\*.bmp; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: ISgsg.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: CAM\*; DestDir: {app}; Flags: ignoreversion

[UninstallDelete]
Type: filesandordirs; Name: "{app}"

Код:
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]
Надеюсь на ващу помощь!
 
RameR, если не ошибаюся, то так можно сделать слайдшоу только на заднем фоне инсталлятора (на развернутой MainForm)
А чем тебе isSlideShow.dll или смена картинок по таймеру не катят?

Как сделать чтобы взависимоти от распаковки через cmd, двигался прогрессбар и отображались проценты? (сторонние библиотеки не нужны, про isdone (ISExec) я знаю)
 
Последнее редактирование:
Залез в дебри 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...
sergey3695,
опробывал слайд шоу через innoCallback.dll и SBSlideShow, но больше понравился через ISgsg.dll
Сейчас гляну ISSlideShow.dll...
sergey3695,
Пожалуйста выложи на rghost'е, если можешь! на народе не хочет скачивать!
Заранее ThankS!!!
 
Последнее редактирование:
Почему unarc.dll не распаковывает архивы, которые запаролены?

ArcExtract(ArchivesMassive, Dirs_Edit.Text+ExtractPath, 'password', '', '')

ArchivesMassive - массив с путями, ведущими к архивам.
Dirs_Edit - эдит, содержащий путь, выбранный пользователем для распаковки
ExtractPath - массив с путями, указывающими в какую папку распаковать архив (связан с archivesmassive)
 
Залез в дебри 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...
в эти дебри можете не лезть.
GetWindowLong(MainForm.Handle,-8) = Application.Handle
слайд-шоу рисуется в собственном окне. на WizardForm его вывести не получится, хотя дописать dll не сложно
 
South,
Дописать саму Dll или дописать в Inno?
Не сложно, кто знает как это сделать)
Если не трудно не подскажешь как и чем это можно сделать?Самим Delphi...
попробую скачать его и открыть им эту Dll!
 
Дописать саму Dll
Да, исправить .dll
Не сложно, кто знает как это сделать)
Товарищ South знает как, ибо он автор этой .dll (ISgsg.dll) :)

Если не трудно не подскажешь как и чем это можно сделать?Самим Delphi...
попробую скачать его и открыть им эту Dll
:D
Что бы исправить .dll нужно иметь исходники этой dll. Исходники у автора .dll :)
 
Есть одна задумка!
Обрисую ситуацию:
#define AppName "Assassin's Creed III"
- переменная обычная
#define CapName "Assassin''s Creed III"
- переменная для Caption в Procedure CurPageChanged с двумя артиклями, чтобы Inno не ругался.
Не знаю возможно или нет...Менять цвет текста для #define CapName "Assassin''s Creed III"

То есть выглядит это все так например:
Procedure InitializeWizard;
With WelcomeLabel1 do begin
Parent := WizardForm;
Height := 16;
Top := 0;
Font.Name := 'Tahoma';
Font.Color := $c5b89c;
Font.Height := 16;
end;
Procedure CurPageChanged(CurPageID : integer);
Begin
HideComponents;
Case CurPageID of
//WelcomePage:
wpWelcome: begin
With WizardForm do begin
WelcomeLabel1.Caption := 'Добро пожаловать! Вас приветствует мастер установки игры {#CapName}.';
WelcomeLabel1.Width := 600;
WelcomeLabel1.Left := 95;
WelcomeLabel1.Top := 502;
end;
end;
Цвет - $c5b89c задан для всего текста куда и входит переменная {#CapName}!
И хочется поменять текст {#CapName} на любой другой цвет, чтобы выделялось из основного текста!
Будет круто если это можно будет реализовать, что-то подобное видел в TextModule_v0.2_by_aLLeXUs!
Заранее, Спасибо!
 
Будет круто если это можно будет реализовать, что-то подобное видел в TextModule_v0.2_by_aLLeXUs!
Раз видели, почему бы не просмотреть скрипт? В нём как раз таки реализовано это..
Так же есть модуль ReDrawText от Shegorat'а.
ReDrawText & TextModule
 
Добрый вечер,подскажите как убрать выделение в листе компонентов.
cdc65b5287c134ba58c6a33f970d5c5f.png
 
Привет, есть вопрос насчет "records.inf Так насколько я знаю нужно один раз установить игру с "Тестовым прогоном" потом создавшийся "records.inf" скинуть рядом с "setup.exe" и компилировать скрипт. Так вот можно ли както самому вручную внести данные в "records.inf" чтоб пропустить этот шаг
установить игру с "Тестовым прогоном"
 
kkels,
Можно, почитай Readme для ISDone 0.6 Final в пункте Работа с библиотекой, написанна автоматическая и ручная растановка процентов!Все расписанно и понято что и как)
Если при автоматической растановке еще нужно разкомментировать #define Records, и после скомпилировать его!
 
Последнее редактирование:
Comancheros,
Код:
WizardForm.ComponentsList.WantTabs := True;


можно ли както самому вручную внести данные в "records.inf" чтоб пропустить этот шаг
Да, можно. Но если бы вы прочитали справку к ISDone, у вас бы не возник этот вопрос.
Об ручной расстановке процентов...
 
Народ подскажите, почему при компиляции инстала последняя функция вызывает ошибку
и как сделать так что бы картинка не перекрывала текст(была на заднем плане)
Код:
[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]
 
Лёха, какие там у вас ошибки? скомпилил, всё отлично скомпилилось.
Код:
procedure DeinitializeSetup;
begin
  gdipShutdown;
end;
между u и t не должно быть пробела, хотя я думаю это причуды тэга
Код:
 
Mailchik,
нет, я целиком взял из Сборка часто спрашиваемых скриптов, Версия: 1.4. там с пробелом ))
вообще бы не помешало пройтись по сборке и исправить ошибки коих там много.
и как мне текст на передний план вывести, а то у меня его нет.
b8fd3702218294aa476c78278c718b75.jpg
 
Последнее редактирование:
Всем добрый вечерь :hi:
Мне надо закинуть 2 файла в папку C:\ProgramData
Проблема в том, что на Windows 7 я использую константу {commonappdata},
А для Windows XP мне использовать ту же константу?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху