|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5] |
|
Скрипты Inno Setup. Помощь и советы [часть 5]
|
Ветеран Сообщения: 1265 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 Скрипты Inno Setup. Помощь и советы [часть 3] Скрипты Inno Setup. Помощь и советы [часть 4] |
|
Отправлено: 03:49, 21-05-2012 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Johny777, Вот этот скрипт:
|
Отправлено: 23:40, 08-11-2012 | #1211 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать 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); 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; PS: без отступов код читать тяжело. Убирай в [code] твои код [/code] иначе они слетают, если были |
Отправлено: 00:45, 09-11-2012 | #1212 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Ок. Спасибо!
|
Отправлено: 01:16, 09-11-2012 | #1213 |
Старожил Сообщения: 256
|
Профиль | Сайт | Отправить PM | Цитировать Уважаемые, помогите пожалуйста осилить задачу.
При выборе определённого компонента: 1. запустить (до копирования файлов) сторонний (дополнительный) инсталлятор из {tmp} с заданными ключами установки. 2. удалить в {app} определённые папки ("мусорные", которые установит инсталлятор из пункта 1). 3. выполнить копирование (установку) файлов уже посредством основного inno-инсталлятора Заранее спасибо. |
Отправлено: 18:21, 09-11-2012 | #1214 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать Помогите подалуйста объединить 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; 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- ый скрипт |
Отправлено: 19:21, 09-11-2012 | #1215 |
Ветеран Сообщения: 1088
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось alert30, 09-11-2012 в 19:47. Отправлено: 19:37, 09-11-2012 | #1216 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать alert30, он не объединяет такие функции, я пробЫвал!
|
Отправлено: 19:45, 09-11-2012 | #1217 |
Ветеран Сообщения: 1088
|
Профиль | Отправить PM | Цитировать Nightwishh, интересно, а у меня получилось. Держите.
|
Отправлено: 19:52, 09-11-2012 | #1218 |
Пользователь Сообщения: 76
|
Профиль | Отправить PM | Цитировать alert30,
За проделанную спасибо, на нет...неполучится через него. Ошибка вылетает: Duplicat identifier "SETTIMER", ну а потом и "KillTimer". |
Отправлено: 20:01, 09-11-2012 | #1219 |
Ветеран Сообщения: 1088
|
Профиль | Отправить PM | Цитировать Nightwishh, ответ у меня большой и подробный. Но тут там тоже самое (вот только скобки влияют?), как InitializeWizard.
|
Отправлено: 20:07, 09-11-2012 | #1220 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] | Serega | Автоматическая установка приложений | 2651 | 08-11-2010 18:34 | |
Скрипты Inno Setup Compiler | QAZAK | Автоматическая установка приложений | 7 | 15-01-2007 17:59 | |
Inno Setup | tradeukraine | Вебмастеру | 3 | 13-06-2006 20:39 |
|