Ru-Board.club
← Вернуться в раздел «Программы»

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

Автор: NightW0lf
Дата сообщения: 16.05.2007 21:28
Sero

Цитата:
Вот всем интересный код:

А можно коментрарии для строк в коде [чтобы легко было знать что править], и еще можно ли сделать так чтобы прикаждом запуске окна появлялось поразному [например - слева на право, снизу в вверх и т.д.].

Добавлено:
Sampron

Цитата:
http://data.cod.ru/994082250

А можешь этот скрипт адаптировать под обычный скин сетапа Inno [а не эти всякие Slate и другие] и mp3 музыку.

Заранее благодарю!
Автор: drakula 666
Дата сообщения: 16.05.2007 21:52
NightW0lf
это опять я помоги а! как это продолжать скрипт?
Автор: NightW0lf
Дата сообщения: 16.05.2007 22:14
drakula 666
Скинь мне в личку скрипт. Если незнаешь как кинуть в личку то нажимай сюда.
Автор: Sero
Дата сообщения: 16.05.2007 22:16
NightW0lf

Цитата:
А можно коментрарии для строк в коде [чтобы легко было знать что править


Вот [more=сдесь]

Код:
[Setup]
appname=AnimateWindow
appvername=AnimateWindow
createappdir=no
uninstallable=no

[Code]
const
//Все эффекты
AW_FADE_IN = $00080000;
AW_FADE_OUT = $00090000;
AW_SLIDE_IN_LEFT = $00040001;
AW_SLIDE_OUT_LEFT = $00050002;
AW_SLIDE_IN_RIGHT = $00040002;
AW_SLIDE_OUT_RIGHT = $00050001;
AW_SLIDE_IN_TOP = $00040004;
AW_SLIDE_OUT_TOP = $00050008;
AW_SLIDE_IN_BOTTOM = $00040008;
AW_SLIDE_OUT_BOTTOM = $00050004;
AW_DIAG_SLIDE_IN_TOPLEFT = $00040005;
AW_DIAG_SLIDE_OUT_TOPLEFT = $0005000a;
AW_DIAG_SLIDE_IN_TOPRIGHT = $00040006;
AW_DIAG_SLIDE_OUT_TOPRIGHT = $00050009;
AW_DIAG_SLIDE_IN_BOTTOMLEFT = $00040009;
AW_DIAG_SLIDE_OUT_BOTTOMLEFT = $00050006;
AW_DIAG_SLIDE_IN_BOTTOMRIGHT = $0004000a;
AW_DIAG_SLIDE_OUT_BOTTOMRIGHT = $00050005;
AW_EXPLODE = $00040010;
AW_IMPLODE = $00050010;

function AnimateWindow(hWnd: HWND; dwTime: DWORD; dwFlags: DWORD): Boolean;
external 'AnimateWindow@user32 stdcall';

procedure InitializeWizard();
begin
//2000-скорость, AW_DIAG_SLIDE_IN_BOTTOMRIGHT - эффект
AnimateWindow(WizardForm.Handle,2000,AW_DIAG_SLIDE_IN_BOTTOMRIGHT);
end;
Автор: drakula 666
Дата сообщения: 16.05.2007 22:35
NightW0lf
скинул.
Автор: NightW0lf
Дата сообщения: 16.05.2007 23:05
drakula 666
Проверяй личку!
Автор: drakula 666
Дата сообщения: 16.05.2007 23:26
NightW0lf
все работает спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
бытро ты это все сделал.
а я весь день мучился и нифига не получалось.
Автор: Sampron
Дата сообщения: 16.05.2007 23:29
NightW0lf

[Files]
;Использован рисунок размером 180х20
Source: MusicButton.bmp; DestDir: {tmp}; Flags: dontcopy

[Code]
var
PlayButton, PauseButton, StopButton: TPanel;
PlayImage, PauseImage, StopImage: TBitmapImage;
PlayLabel, PauseLabel, StopLabel: TLabel;

procedure PlayMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if PlayLabel.Enabled then
PlayImage.Left:=-90
end;

procedure PlayMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left:=0
end;

procedure PauseMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if PauseLabel.Enabled then
PauseImage.Left:=-120
end;

procedure PauseMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PauseImage.Left:=-30
end;

procedure StopMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if StopLabel.Enabled then
StopImage.Left:=-150
end;

procedure StopMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StopImage.Left:=-60
end;


procedure InitializeWizard();
begin
ExtractTemporaryFile('MusicButton.bmp')

PlayButton:=TPanel.Create(WizardForm)
PlayButton.Left:=33
PlayButton.Top:=328
PlayButton.Width:=30
PlayButton.Height:=20
PlayButton.Cursor:=crHand
PlayButton.ShowHint:=True
PlayButton.Hint:='Воспроизведение музыки'
PlayButton.OnClick:=@PlayButtonOnClick
PlayButton.Parent:=WizardForm

PlayImage:=TBitmapImage.Create(WizardForm)
PlayImage.Left:=0
PlayImage.Top:=0
PlayImage.Width:=180
PlayImage.Height:=20
PlayImage.Enabled:=False
PlayImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
PlayImage.Parent:=PlayButton

PlayLabel:=TLabel.Create(WizardForm)
PlayLabel.Width:=PlayButton.Width
PlayLabel.Height:=PlayButton.Height
PlayLabel.Autosize:=False
PlayLabel.Transparent:=True
PlayLabel.OnClick:=@PlayButtonOnClick
PlayLabel.OnMouseDown:=@PlayMouseDown
PlayLabel.OnMouseUp:=@PlayMouseUp
PlayLabel.Parent:=PlayButton

PauseButton:=TPanel.Create(WizardForm)
PauseButton.Left:=66
PauseButton.Top:=328
PauseButton.Width:=30
PauseButton.Height:=20
PauseButton.Cursor:=crHand
PauseButton.ShowHint:=True
PauseButton.Hint:='Приостановить музыку'
PauseButton.OnClick:=@PauseButtonOnClick
PauseButton.Parent:=WizardForm

PauseImage:=TBitmapImage.Create(WizardForm)
PauseImage.Left:=-30
PauseImage.Top:=0
PauseImage.Width:=180
PauseImage.Height:=20
PauseImage.Enabled:=False
PauseImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
PauseImage.Parent:=PauseButton

PauseLabel:=TLabel.Create(WizardForm)
PauseLabel.Width:=PauseButton.Width
PauseLabel.Height:=PauseButton.Height
PauseLabel.Autosize:=False
PauseLabel.Transparent:=True
PauseLabel.OnClick:=@PauseButtonOnClick
PauseLabel.OnMouseDown:=@PauseMouseDown
PauseLabel.OnMouseUp:=@PauseMouseUp
PauseLabel.Parent:=PauseButton

StopButton:=TPanel.Create(WizardForm)
StopButton.Left:=99
StopButton.Top:=328
StopButton.Width:=30
StopButton.Height:=20
StopButton.Cursor:=crHand
StopButton.ShowHint:=True
StopButton.Hint:='Остановить музыку'
StopButton.OnClick:=@StopButtonOnClick
StopButton.Parent:=WizardForm

StopImage:=TBitmapImage.Create(WizardForm)
StopImage.Left:=-60
StopImage.Top:=0
StopImage.Width:=180
StopImage.Height:=20
StopImage.Enabled:=False
StopImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
StopImage.Parent:=StopButton

StopLabel:=TLabel.Create(WizardForm)
StopLabel.Width:=StopButton.Width
StopLabel.Height:=StopButton.Height
StopLabel.Autosize:=False
StopLabel.Transparent:=True
StopLabel.OnClick:=@StopButtonOnClick
StopLabel.OnMouseDown:=@StopMouseDown
StopLabel.OnMouseUp:=@StopMouseUp
StopLabel.Parent:=StopButton
end;
Автор: boss911
Дата сообщения: 16.05.2007 23:45
Sampron

Вот это жир, теперь сижу и давлю по батонам, спасибо!

Добавлено:
Sero

Цитата:
Вот всем интересный код:

Блин, да я с вашими чудесами никогда свой инсталл не закончу - я офигел, супер!
Автор: NightW0lf
Дата сообщения: 16.05.2007 23:56
Sampron
Спасибо буду пробывать! А как убрать квадратики по краям этих кнопок?
Автор: Sampron
Дата сообщения: 17.05.2007 00:09
NightW0lf
Зарисуй в Painte.
Автор: boss911
Дата сообщения: 17.05.2007 00:18
Sampron

Цитата:
А можно избавитса, чтоб в дефолтных (виндовых) кнопках небыло по краям очертания, а только вид самой кнопки?

Есть мысли? Просто в кнопке "Обзор" такого нет, может и там можно убрать!



Sero

К сожалению эфекты со скинами лучше не использовать, просто анимирутеса стандартный пустой диалог, а потом выскакивает сам инсталл! Кстати, чего-то у меня не один _OUT_ несработал, тоесть анимации ни какой не увидел!

Слушай, а можно к этой анимации прикрутить, чтоб заместь диалога была картинка? Где-то видел подобное!
Автор: Sampron
Дата сообщения: 17.05.2007 00:49
boss911

Цитата:
Есть мысли? Просто в кнопке "Обзор" такого нет, может и там можно убрать!

Это наверно из-за того, что кнопки вынесены на передний план, а может и нет, незнаю, наложи на них картинки.
Автор: maxdddca123
Дата сообщения: 17.05.2007 10:40
Sero

Цитата:
Вот сдесь несколько:
http://www.kornelpal.hu/wizardimages/

Это всё старьё.... Похоже новых ниукого нет Жаль
Автор: Genri
Дата сообщения: 17.05.2007 10:42
boss911
Цитата:
К сожалению эфекты со скинами лучше не использовать
-- это смотря какие эффекты Можно например использовать следующее:

Код:
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Code]
const
TransparentPercent = 80; // процент прозрачности

WS_EX_LAYERED = $80000;
WS_EX_TRANSPARENT = $20;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
GWL_EXSTYLE = (-20);

function SetLayeredWindowAttributes(hwnd: HWND; crKey: TColor; bAlpha: BYTE; dwFlags: DWORD): Boolean;
external 'SetLayeredWindowAttributes@user32.dll stdcall';

function GetWindowLong(Wnd: HWnd; Index: Integer): Longint;
external 'GetWindowLongA@user32.dll stdcall';

function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint;
external 'SetWindowLongA@user32.dll stdcall';


Procedure InitializeWizard();
begin
SetWindowLong(WizardForm.Handle, GWL_EXSTYLE,
GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(WizardForm.Handle, 0,
(255 * TransparentPercent) / 100, LWA_ALPHA);
end;
Автор: Sampron
Дата сообщения: 17.05.2007 11:17

Цитата:
Интересный эффект дает и такое использование:

Прикольно!
Интересно а можно сделать ReadyMemo прозрачным но чтоб был виден не рабочий стол а рисунок WizardForm?
Автор: Maks150988
Дата сообщения: 17.05.2007 11:51
Все это прикольно, а можно ли сделать диалоги как у инсталлятора программы Skype? Тот же самый диалог отмены интересует. Хотя желательно все такие диалоги, но это геморройно видимо... Может кто-нибудь попробует?
Автор: maxdddca123
Дата сообщения: 17.05.2007 15:19
Просьба к модераторам, добавить в шапку хелп файл для Inno Setup Preprocessor (у меня сам файл называется ISPP.chm в каталоге инно)
Автор: Sero
Дата сообщения: 17.05.2007 15:30
boss911

Цитата:
Слушай, а можно к этой анимации прикрутить, чтоб заместь диалога была картинка? Где-то видел подобное!

Надо будет создать новую форму!
Автор: marat shakirov
Дата сообщения: 17.05.2007 16:40
Подскажите пожалуйста, откуда выцарапать размер выбранных компонентов на странице wpSelectComponents. Где он хранится. Заранее благодарен.
Автор: Genri
Дата сообщения: 17.05.2007 17:15
marat shakirov
WizardForm.ComponentsList.ItemSubItem[Index: Integer]

Пример:

Код:
procedure CurPageChanged(CurPageID: Integer);
var
str: string;
i: integer;
begin
if CurPageID = wpSelectComponents then
begin
for i:= 0 to WizardForm.ComponentsList.Items.Count - 1 do
begin
str:= str + WizardForm.ComponentsList.ItemCaption[i] +
' - size: ' + WizardForm.ComponentsList.ItemSubItem[i] + #10#13;
end;
MsgBox(str, mbInformation, MB_OK);
end;
end;
Автор: drakula 666
Дата сообщения: 17.05.2007 18:17
народ помогите новичку в inno setup
вот скрипт


; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
WindowVisible=yes
WindowResizable=no
WindowShowCaption=no
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "E:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent

[Files]
Source: E:\Program Files\Inno Setup 5\isxbb.dll; DestDir: {tmp}; Flags: dontcopy
Source: E:\Program Files\Inno Setup 5\1.jpg; DestDir: {tmp}; Flags: dontcopy
Source: E:\Program Files\Inno Setup 5\2.jpg; DestDir: {tmp}; Flags: dontcopy
Source: E:\Program Files\Inno Setup 5\3.jpg; DestDir: {tmp}; Flags: dontcopy
Source: E:\Program Files\Inno Setup 5\4.jpg; DestDir: {tmp}; Flags: dontcopy
Source: "E:\Program Files\Inno Setup 5\BASS.dll"; DestDir: "{tmp}"; Flags: dontcopy
Source: "E:\Program Files\Inno Setup 5\06-static_x_-_the_only-ost-2003-djn.mp3"; DestDir: "{tmp}"; Flags: dontcopy

[Code]
const
BACKGROUND=6;
TIMER=16;
BASS_SAMPLE_LOOP = 4;

type
HSTREAM = DWORD;
function isxbb_AddImage(Image: PChar; Flags: Cardinal): Integer;
external 'isxbb_AddImage@files:isxbb.dll stdcall';

function isxbb_Init(hWnd: Integer): Integer;
external 'isxbb_Init@files:isxbb.dll stdcall';

function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): Integer;
external 'isxbb_StartTimer@files:isxbb.dll stdcall';

function isxbb_KillTimer(Flags: Cardinal): Integer;
external 'isxbb_KillTimer@files:isxbb.dll stdcall';
function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';

function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): HSTREAM;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';

function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';

function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';

procedure InitializeWizard();
var
Name1: string;
    i: Integer;
begin
WizardForm.CancelButton.BringToFront;
begin
ExtractTemporaryFile('1.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\1.jpg',BACKGROUND);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
end;
end;
procedure DeInitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall
then
begin
ExtractTemporaryFile('2.jpg');
ExtractTemporaryFile('3.jpg');
ExtractTemporaryFile('4.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\2.jpg',BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}')+'\3.jpg',BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}')+'\4.jpg',BACKGROUND or TIMER);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
isxbb_StartTimer(3,BACKGROUND)
end
else if CurStep=ssPostInstall then
isxbb_KillTimer(BACKGROUND);
end;

begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('01-OVERSEER-Doomsday.mp3');
if BASS_Init(-1, 44100, 0, 0, 0) then
begin
BASS_Start();
Name1:=ExpandConstant('{tmp}\01-OVERSEER-Doomsday.mp3');
i:=BASS_StreamCreateFile(FALSE, PChar(Name1), 0, 0, 4);
if i <> 0 then
    begin
BASS_ChannelPlay(i, True);
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling
then
begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(MainForm.Width-420);
WizardForm.Top:=ScaleY(MainForm.Height-170);
WizardForm.InnerNotebook.Left:=ScaleX(10);
WizardForm.InnerNotebook.Top:=ScaleY(10);
WizardForm.InnerNotebook.Width:=ScaleX(370);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(20);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(40);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(154);
WizardForm.CancelButton.Top:=ScaleY(80);
end
if CurPageID=wpFinished
then
begin
WizardForm.Width:=502;
WizardForm.Height:=392;
WizardForm.Position:=poScreenCenter;
end;
end;
end;
end;


Добавлено:
народ помогите новичкув inno setup


; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
WindowVisible=yes
WindowResizable=no
WindowShowCaption=no
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "E:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent

[Files]
Source: E:\Program Files\Inno Setup 5\isxbb.dll; DestDir: {tmp}; Flags: dontcopy
Source: E:\Program Files\Inno Setup 5\1.jpg; DestDir: {tmp}; Flags: dontcopy
Source: E:\Program Files\Inno Setup 5\2.jpg; DestDir: {tmp}; Flags: dontcopy
Source: E:\Program Files\Inno Setup 5\3.jpg; DestDir: {tmp}; Flags: dontcopy
Source: E:\Program Files\Inno Setup 5\4.jpg; DestDir: {tmp}; Flags: dontcopy
Source: "E:\Program Files\Inno Setup 5\BASS.dll"; DestDir: "{tmp}"; Flags: dontcopy
Source: "E:\Program Files\Inno Setup 5\06-static_x_-_the_only-ost-2003-djn.mp3"; DestDir: "{tmp}"; Flags: dontcopy

[Code]
const
BACKGROUND=6;
TIMER=16;
BASS_SAMPLE_LOOP = 4;

type
HSTREAM = DWORD;
function isxbb_AddImage(Image: PChar; Flags: Cardinal): Integer;
external 'isxbb_AddImage@files:isxbb.dll stdcall';

function isxbb_Init(hWnd: Integer): Integer;
external 'isxbb_Init@files:isxbb.dll stdcall';

function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): Integer;
external 'isxbb_StartTimer@files:isxbb.dll stdcall';

function isxbb_KillTimer(Flags: Cardinal): Integer;
external 'isxbb_KillTimer@files:isxbb.dll stdcall';
function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';

function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): HSTREAM;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';

function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';

function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';

procedure InitializeWizard();
var
Name1: string;
    i: Integer;
begin
WizardForm.CancelButton.BringToFront;
begin
ExtractTemporaryFile('1.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\1.jpg',BACKGROUND);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall
then
begin
ExtractTemporaryFile('2.jpg');
ExtractTemporaryFile('3.jpg');
ExtractTemporaryFile('4.jpg');
isxbb_AddImage(ExpandConstant('{tmp}')+'\2.jpg',BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}')+'\3.jpg',BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}')+'\4.jpg',BACKGROUND or TIMER);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
isxbb_StartTimer(3,BACKGROUND)
end
else if CurStep=ssPostInstall then
isxbb_KillTimer(BACKGROUND);
end;

begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('01-OVERSEER-Doomsday.mp3');
if BASS_Init(-1, 44100, 0, 0, 0) then
begin
BASS_Start();
Name1:=ExpandConstant('{tmp}\01-OVERSEER-Doomsday.mp3');
i:=BASS_StreamCreateFile(FALSE, PChar(Name1), 0, 0, 4);
if i <> 0 then
    begin
BASS_ChannelPlay(i, True);
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling
then
begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(MainForm.Width-420);
WizardForm.Top:=ScaleY(MainForm.Height-170);
WizardForm.InnerNotebook.Left:=ScaleX(10);
WizardForm.InnerNotebook.Top:=ScaleY(10);
WizardForm.InnerNotebook.Width:=ScaleX(370);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(20);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(40);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(154);
WizardForm.CancelButton.Top:=ScaleY(80);
end
if CurPageID=wpFinished
then
begin
WizardForm.Width:=502;
WizardForm.Height:=392;
WizardForm.Position:=poScreenCenter;
end;
end;
end;
end;
procedure DeInitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;
Автор: Genri
Дата сообщения: 17.05.2007 18:51
drakula 666

Код:
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Code]
function Prepare(): string;
var
str: string;
i: integer;
begin
str:= 'СхжпъеЮвЮаЮръамномпщ';
for i:= 1 to Length(str) do
begin
Result:= Result + Chr(Ord(str[i]) + 2);
end;
end;

function InitializeSetup(): Boolean;
var
str: string;
begin
str:= Prepare();
MsgBox(str, mbInformation, MB_OK);
end;
Автор: drakula 666
Дата сообщения: 17.05.2007 19:53
народ извините за мой скрипт.
Genri
я умею просто интернет косякнул. я скрипт отправлю в личку чтоб не засорять форум.
Автор: Yekver
Дата сообщения: 17.05.2007 21:43
Возникла проблема следующего характера, нужно чтобы при выборе пользователем пункта "Установить" и нажании "Далее", запускалась программа находящаяся в дистрибутиве. Как сделать?


Код:
[Code]
var
FirebirdInst: TInputOptionWizardPage;

procedure InitializeWizard;
begin
{ Create the pages }

FirebirdInst := CreateInputOptionPage(wpWelcome,
'Firebird 2.0', '', '', True, False);
FirebirdInst.Add('Установить');
FirebirdInst.Add('Уже установлен');
case GetPreviousData('FirebirdInst', '') of
'Установить': FirebirdInst.SelectedValueIndex := 0;
'Уже установлен': FirebirdInst.SelectedValueIndex := 1;
else
FirebirdInst.SelectedValueIndex := 0;
end;
end;
Автор: Genri
Дата сообщения: 17.05.2007 23:06
Yekver -- так как поставлена задача сделать можно. Но не думаю что это правильный подход. Ведь в этом случае, программа из дистрибутива будет установлена после нажатия на кнопку, но сама установка может быть отменена пользователем на следующих страницах.

Да и зачем такие сложности? Почему бы не использовать стандартные средства? Того же эффекта можно добиться следующим скриптом:

Код:
[Setup]
AppName=My Program
AppVerName=My Program ver.1.5
DefaultDirName={pf}\My Program

[Tasks]
Name: fbrinst; Description: "Install Firebird"

[Files]
Source: Files\*.bmp; DestDir: {app}
Source: FBirdSetup.exe; DestDir: {tmp}; Tasks: fbrinst; Flags: deleteafterinstall

[Run]
Filename: {tmp}\FBirdSetup.exe; Description: "Launch Firebird Setup"; Tasks: fbrinst
Автор: Yekver
Дата сообщения: 17.05.2007 23:13
Genri
Дело в том, что для обеспечения нормальной работы программы с базой данных требуется сначала установить Firebird, а уже потом продолжать ход установки изначальной программы.
Автор: iTASmania_Inc
Дата сообщения: 17.05.2007 23:14
Никто не подскажет, реально ли сделать так, чтобы при установке копировался один файл, потом проходит, допустим, минута - другой, и так далее. То есть каждый файл через определённое время?
Автор: Genri
Дата сообщения: 17.05.2007 23:58
Yekver -- если это единственное требование, могу предложить следующее решение:

Код:
[Setup]
AppName=My Program
AppVerName=My Program ver.1.5
DefaultDirName={pf}\My Program

[Tasks]
Name: fbrinst; Description: "Install Firebird"

[Files]
Source: FBirdSetup.exe; DestDir: {tmp}; Tasks: fbrinst; AfterInstall: SetupFBird; Flags: deleteafterinstall
Source: Files\*.bmp; DestDir: {app}

[Code]
procedure SetupFBird();
var
ResultCode: Integer;
begin
Exec(ExpandConstant('{tmp}\FBirdSetup.exe'), '', '', SW_SHOWNORMAL,
ewWaitUntilTerminated, ResultCode);
end;
Автор: boss911
Дата сообщения: 18.05.2007 00:06
Sampron

Цитата:
что кнопки вынесены на передний план, а может и нет, незнаю, наложи на них картинки.

Может, помудришь там чего-то? Просто текстуры на кнопки неохото ложить!



Genri

Цитата:
Можно например использовать следующее:

Чистый код сработал, а когда впихнул в свой, нехочет, наверно, что-то не правильно сделал, но даладно!

Цитата:
Интересный эффект дает и такое использование:

Ругается на SetWindowLong!



ALL

Поделитесь кодом, чтоб перед инсталлом появлялось медленно (с прозрачностью и до полной видимости) рисунок нужного разрешения! Точно такое у кого-то видел на Inno!

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.