Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 5]
R.i.m.s.k.y.
03-11-2012, 22:06
Johny777, знаю - ругаиццо
insombia
04-11-2012, 16:27
все кто ставит мои репаки на win 7 64x игры не пашут,может со скриптом что-то? http://rghost.ru/41339323
R.i.m.s.k.y.
04-11-2012, 17:17
insombia, а ошибка то какая что не пашут?
insombia
04-11-2012, 17:52
R.i.m.s.k.y. говорят ошибки при распаковки,или игра по просту не запускается
R.i.m.s.k.y.
04-11-2012, 17:59
insombia,
Игра не запускается скорее всего потому что записи реестра и/или файлы в sys/appdata/localuser/etc не туда складываются. Несколько страниц назад El Sanchez отлично расписал как в х64/х86 нужно прописывать. Листани поищи
Надеюсь ты всегда используешь относительные, а не абсолютные пути?
Ошибки распаковки - это исдоне, я его не знаю и знать не желаю вот как раз поэтому. Пользуюсь стандартными функциями инно, хотя мои установщики очень разнообразны по встроенным функциям, и ошибкам там место есть, да, но я всегда при запиливании одной фичи делаю ключ комстроки для ее обхода.
Чего и всем желаю.
insombia
04-11-2012, 18:07
R.i.m.s.k.y. у игр которые я паковал вообще нету реестра
R.i.m.s.k.y.
04-11-2012, 18:11
у игр вообще нету реестра »
ога, а потом патчи на репаки не ставятся
У меня под рукой ведьмак
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\CD Projekt Red\The Witcher]
"IsDjinniInstalled"=dword:00000001
"RegionVersion"="RU"
"Language"="14"
"InstallFolder"="R:\\WitcherEE"
Без этого ключа в меню нет букв и патч 1,5 игру не найдет
Реестра у игр нет, дадад
Регшоть и аккуратно импортируй
insombia
04-11-2012, 18:22
R.i.m.s.k.y. я для sleeping dogs что-то не могу найти ветки реестра
Nightwishh
08-11-2012, 03:55
Доброго времени суток! Небольшой вопросик! как сделать так что-бы музыка при запуске инталла начинала проигрываться несразу, а через секунд 4-6 после запуска инсталека? ( Использую обычный скрипт с кнопками в формате .bmp)!
Johny777
08-11-2012, 22:53
Nightwishh, Использую обычный скрипт с кнопками в формате .bmp »
ни о чём не говорит. Приучись пожалуйста выкладывать код (на музыку в твоём случае) с файлами(библиотеки, картинки и пр.)
концепт реализации через таймер:
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
[code]
var
SoundTimer: LongWord;
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';
procedure PlaySound;
begin
KillTimer(WizardForm.Handle, SoundTimer); // убиваем таймер, ведь он уже не нужен
WizardForm.Color := clGreen; // заместо этой строки код запуска проигрывания звука
end;
procedure InitializeWizard;
begin
SoundTimer := SetTimer(WizardForm.Handle, 5, 4000, CallbackAddr('PlaySound')); // в конце процедуры запускаем таймер. Интервал его обновления 4000 мс = 4 с
end;
procedure DeinitializeSetup();
begin
KillTimer(WizardForm.Handle, SoundTimer); // если пользователь вышел из инсталла менее чем за 4 секунды после его запуска
end;
Nightwishh
08-11-2012, 23:40
Johny777, Вот этот скрипт:
[Setup]
AppName=Example.Play.MP3.Music.On.Start.Up.With.Texture
AppVerName=Example.Play.MP3.Music.On.Start.Up.With.Texture
AppPublisher=genri.sampron.iTASmania_Inc.uncle
DefaultDirName=C:\Play.MP3
OutputBaseFilename=play.mp3.by.genri.sampron.iTASmania_Inc.uncle
OutputDir=.
[Files]
Source: BASS.dll; DestDir: {tmp}; Flags: dontcopy noencryption
Source: sound.mp3; DestDir: {tmp}; Flags: dontcopy noencryption nocompression
Source: MusicButton.bmp; DestDir: {tmp}; Flags: dontcopy
[Code]
const
BASS_ACTIVE_STOPPED = 0;
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;
var
mp3Handle: HWND;
mp3Name: String;
PlayButton, PauseButton, StopButton: TPanel;
PlayImage, PauseImage, StopImage: TBitmapImage;
PlayLabel, PauseLabel, StopLabel: TLabel;
MouseLabel: Tlabel;
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): DWORD;
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_ChannelIsActive(handle: DWORD): Integer;
external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload';
function BASS_ChannelPause(handle: DWORD): Boolean;
external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';
function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_Pause(): Boolean;
external 'BASS_Pause@files:BASS.dll stdcall delayload';
function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';
procedure PlayMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := -96
end;
procedure PlayMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := 0
end;
procedure PlayMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if PlayImage.Left <> -96 then PlayImage.Left := -192
StopImage.Left := -64
end;
procedure PauseMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PauseImage.Left := -128
end;
procedure PauseMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PauseImage.Left := -32
end;
procedure PauseMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if PauseImage.Left <> -128 then PauseImage.Left := -224
StopImage.Left := -64
end;
procedure StopMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StopImage.Left := -160
end;
procedure StopMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StopImage.Left := -64
end;
procedure StopMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if StopImage.Left <> -160 then StopImage.Left := -256
PlayImage.Left := 0
PauseImage.Left := -32
end;
procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := 0
PauseImage.Left := -32
StopImage.Left := -64
end;
function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('sound.mp3');
mp3Name := ExpandConstant('{tmp}\sound.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
Result := True;
end;
procedure PlayButtonOnClick(Sender: TObject);
begin
case BASS_ChannelIsActive(mp3Handle) of
BASS_ACTIVE_PAUSED:
begin
BASS_ChannelPlay(mp3Handle, False);
PlayButton.Hide
PauseButton.Show
end;
BASS_ACTIVE_STOPPED:
begin
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
PlayButton.Hide
PauseButton.Show
end;
end;
end;
procedure PauseButtonOnClick(Sender: TObject);
begin
BASS_ChannelPause(mp3Handle);
PauseButton.Hide
PlayButton.Show
end;
procedure StopButtonOnClick(Sender: TObject);
begin
BASS_Stop();
BASS_Free();
PauseButton.Hide
PlayButton.Show
end;
procedure InitializeWizard();
begin
ExtractTemporaryFile('MusicButton.bmp')
MouseLabel := TLabel.Create(WizardForm)
MouseLabel.Width := WizardForm.Width
MouseLabel.Height := WizardForm.Height
MouseLabel.Autosize := False
MouseLabel.Transparent := True
MouseLabel.OnMouseMove := @MouseMove
MouseLabel.Parent := WizardForm
PlayButton := TPanel.Create(WizardForm)
PlayButton.Left := 50
PlayButton.Top := 320
PlayButton.Width := 32
PlayButton.Height := 33
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 := 288
PlayImage.Height := 33
PlayImage.Enabled := False
PlayImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
PlayImage.Parent := PlayButton
//
PlayImage.ReplaceColor:=$E2E2E2
PlayImage.ReplaceWithColor:=clBtnFace
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.OnMouseMove := @PlayMouseMove
PlayLabel.Parent := PlayButton
PauseButton := TPanel.Create(WizardForm)
PauseButton.Left := 50
PauseButton.Top := 320
PauseButton.Width := 32
PauseButton.Height := 33
PauseButton.Cursor := crHand
PauseButton.ShowHint := True
PauseButton.Hint := 'Приостановить музыку'
PauseButton.OnClick := @PauseButtonOnClick
PauseButton.Parent := WizardForm
PauseImage := TBitmapImage.Create(WizardForm)
PauseImage.Left := -32
PauseImage.Top := 0
PauseImage.Width := 288
PauseImage.Height := 33
PauseImage.Enabled := False
PauseImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
PauseImage.Parent := PauseButton
//
PauseImage.ReplaceColor:=$E2E2E2
PauseImage.ReplaceWithColor:=clBtnFace
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.OnMouseMove := @PauseMouseMove
PauseLabel.Parent := PauseButton
StopButton := TPanel.Create(WizardForm)
StopButton.Left := 82
StopButton.Top := 320
StopButton.Width := 32
StopButton.Height := 33
StopButton.Cursor := crHand
StopButton.ShowHint := True
StopButton.Hint := 'Остановить музыку'
StopButton.OnClick := @StopButtonOnClick
StopButton.Parent := WizardForm
StopImage := TBitmapImage.Create(WizardForm)
StopImage.Left := -64
StopImage.Top := 0
StopImage.Width := 288
StopImage.Height := 33
StopImage.Enabled := False
StopImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
StopImage.Parent := StopButton
//
StopImage.ReplaceColor:=$E2E2E2
StopImage.ReplaceWithColor:=clBtnFace
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.OnMouseMove := @StopMouseMove
StopLabel.Parent := StopButton
end;
procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;
Johny777
09-11-2012, 00:45
Nightwishh, ну переносишь кусок кода:
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('sound.mp3');
mp3Name := ExpandConstant('{tmp}\sound.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
из function InitializeSetup(): Boolean; в procedure PlaySound; и получаешь
procedure PlaySound;
begin
KillTimer(WizardForm.Handle, SoundTimer); // убиваем таймер, ведь он уже не нужен
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('sound.mp3');
mp3Name := ExpandConstant('{tmp}\sound.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
end;
функцию function InitializeSetup(): Boolean; у себя в коде полностью удали
PS: без отступов код читать тяжело. Убирай в твои код иначе они слетают, если были
Nightwishh
09-11-2012, 01:16
Ок. Спасибо!
elChoopacabra
09-11-2012, 18:21
Уважаемые, помогите пожалуйста осилить задачу.
При выборе определённого компонента:
1. запустить (до копирования файлов) сторонний (дополнительный) инсталлятор из {tmp} с заданными ключами установки.
2. удалить в {app} определённые папки ("мусорные", которые установит инсталлятор из пункта 1).
3. выполнить копирование (установку) файлов уже посредством основного inno-инсталлятора
Заранее спасибо.
Nightwishh
09-11-2012, 19:21
Помогите подалуйста объединить 2 срипта:
const
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;
var
SoundTimer: LongWord;
mp3Handle: HWND;
mp3Name: String;
PlayButton: TPanel;
PauseButton: TPanel;
PlayImage: TBitmapImage;
PauseImage: TBitmapImage;
PlayLabel: TLabel;
PauseLabel: TLabel;
MouseLabel: Tlabel;
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): DWORD;
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_ChannelIsActive(handle: DWORD): Integer;
external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload';
function BASS_ChannelPause(handle: DWORD): Boolean;
external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';
function BASS_Pause(): Boolean;
external 'BASS_Pause@files:BASS.dll stdcall delayload';
function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
procedure PlayMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := -64;
end;
procedure PlayMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := 0;
end;
procedure PlayMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if PlayImage.Left <> -64 then PlayImage.Left := -128;
end;
procedure PauseMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PauseImage.Left := -96;
end;
procedure PauseMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PauseImage.Left := -32;
end;
procedure PauseMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if PauseImage.Left <> -96 then PauseImage.Left := -160;
end;
procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := 0;
PauseImage.Left := -32;
end;
procedure PlaySound();
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('music.mp3');
KillTimer(WizardForm.Handle, SoundTimer);
mp3Name := ExpandConstant('{tmp}\music.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
end;
procedure PlayButtonOnClick(Sender: TObject);
begin
case BASS_ChannelIsActive(mp3Handle) of
BASS_ACTIVE_PAUSED:
begin
BASS_ChannelPlay(mp3Handle, False);
PlayButton.Hide
PauseButton.Show
end;
end;
end;
procedure PauseButtonOnClick(Sender: TObject);
begin
BASS_ChannelPause(mp3Handle);
PauseButton.Hide
PlayButton.Show
end;
procedure InitializeWizard();
begin
SoundTimer := SetTimer(WizardForm.Handle, 5, 8000, CallbackAddr('PlaySound'));
ExtractTemporaryFile('MusicButton.bmp')
{ MouseLabel }
MouseLabel := TLabel.Create(WizardForm);
with MouseLabel do
begin
Width := WizardForm.Width;
Height := WizardForm.Height;
Autosize := False;
Transparent := True;
OnMouseMove := @MouseMove;
Parent := WizardForm.MainPanel;
end;
{ PlayButton }
PlayButton := TPanel.Create(WizardForm);
with PlayButton do
begin
Left := ScaleX(21);
Top := ScaleY(544);
Width := ScaleX(32);
Height := ScaleY(47);
Cursor := crHand;
ShowHint := True;
Hint := 'Воспроизведение музыки';
OnClick := @PlayButtonOnClick;
Parent := WizardForm.InnerPage;
end;
{ PlayImage }
PlayImage := TBitmapImage.Create(WizardForm);
with PlayImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(192);
Height := ScaleX(47);
Enabled := False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'));
Parent := PlayButton;
ReplaceColor:=$E2E2E2;
ReplaceWithColor:=clBtnFace;
end;
{ PlayLabel }
PlayLabel := TLabel.Create(WizardForm);
with PlayLabel do
begin
Width := PlayButton.Width;
Height := PlayButton.Height;
Autosize := False;
Transparent := True;
OnClick := @PlayButtonOnClick;
OnMouseDown := @PlayMouseDown;
OnMouseUp := @PlayMouseUp;
OnMouseMove := @PlayMouseMove;
Parent := PlayButton;
end;
{ PauseButton }
PauseButton := TPanel.Create(WizardForm);
with PauseButton do
begin
Left := ScaleX(21);
Top := ScaleY(544);
Width := ScaleX(32);
Height := ScaleY(47);
Cursor := crHand;
ShowHint := True;
Hint := 'Остановить музыку';
OnClick := @PauseButtonOnClick;
Parent := WizardForm.InnerPage;
end;
{ PauseImage }
PauseImage := TBitmapImage.Create(WizardForm);
with PauseImage do
begin
Left := ScaleX(-32);
Top := ScaleY(0);
Width := ScaleX(192);
Height := ScaleY(47);
Enabled := False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'));
Parent := PauseButton;
ReplaceColor:=$E2E2E2;
ReplaceWithColor:=clBtnFace;
end;
{ PauseLabel }
PauseLabel := TLabel.Create(WizardForm);
with PauseLabel do
begin
Width := PauseButton.Width;
Height := PauseButton.Height;
Autosize := False;
Transparent := True;
OnClick := @PauseButtonOnClick;
OnMouseDown := @PauseMouseDown;
OnMouseUp := @PauseMouseUp;
OnMouseMove := @PauseMouseMove;
Parent := PauseButton;
end;
end;
procedure DeinitializeSetup();
begin
BASS_Free();
end;
и
const
n=3; //количество слайдов
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);
TRandNumbers = array[1..N] of byte;
function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:InnoCallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
function get_unique_random_number(X:byte):TRandNumbers;
var
A,b,c: string;
i,j,k:byte;
begin
For i:=1 to X do A:=A+chr(i);
B:='';
For i:=1 to X do
begin
j:=Random(Length(A)-1)+1;
C:='';
B:=B + A[j];
for k:=1 to Length(A) do
if k<>j then C:=C+A[k];
A:=C;
end;
for i:=1 to X do Result[i]:=ord(B[i]);
end;
var
TimerID: LongWord;
currTime: Integer;
SplashImage: TBitmapImage;
bmp: TRandNumbers;
z:byte;
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
currTime := currTime + 1;
if (currTime mod {#TIME_FOR_VIEW} = 0)
then begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_'+inttostr(bmp[currTime/{#TIME_FOR_VIEW}])+'.bmp'));
if (currTime/{#TIME_FOR_VIEW} = N) then currTime:=0;
end;
end;
procedure InitializeWizard();
begin
bmp:=get_unique_random_number(N);
ExtractTemporaryFile('Image_'+inttostr(bmp[1])+'.bmp');
currTime := 0;
{ SplashImage }
SplashImage := TBitmapImage.Create(WizardForm);
with SplashImage do
begin
Top := ScaleY(0);
Left := ScaleX(0);
Width := WizardForm.MainPanel.Width;
Height := WizardForm.Bevel.Top;
Parent := WizardForm.InstallingPage;
Stretch := True;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_'+inttostr(bmp[1])+'.bmp'));
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
WizardForm.StatusLabel.Caption := 'Распаковка слайдов ...';
for z:=2 to N do ExtractTemporaryFile('Image_'+inttostr(bmp[z])+'.bmp');
end;
end;
procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
begin
if (CurPageID = wpInstalling) then
begin
pfunc := WrapTimerProc(@OnTimer, 5);
TimerID := SetTimer(0, 0, 1000, pfunc);
end else
if (CurPageID > wpInstalling) and (CurPageID < wpFinished) then
If CurPageID = wpFinished then
end;
procedure DeInitializeSetup();
begin
KillTimer(0, TimerID);
end;
а именно меня волнуют 2 одинаковые функции:
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
1- ый скрипт
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
2- ой скрипт
elChoopacabra, вроде никак, но где-то в репаков игр видел...
Nightwishh, Inno Setup Script Joiner (http://issjoiner.codeplex.com/)
Nightwishh
09-11-2012, 19:45
alert30, он не объединяет такие функции, я пробывал!
Nightwishh, интересно, а у меня получилось. Держите. (http://rghost.ru/download/41454659/442886016c9d6eb03cd3d3e2463df46def3f0066/joined.iss)
Nightwishh
09-11-2012, 20:01
alert30,
За проделанную спасибо, на нет...неполучится через него. Ошибка вылетает: Duplicat identifier "SETTIMER", ну а потом и "KillTimer". :)
Nightwishh, ответ у меня большой и подробный. Но тут там тоже самое (вот только скобки влияют?), как InitializeWizard.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.