Вопрос Как запустить музыку на определенной странице инсталлятора

Suomy

Новичок
Приветствую всех форумчане!, я новичок в деле написания скриптов для inno setup, и у меня есть вопрос к более опытным товарищам, написал простенький скрипт под себя, есть Splash, и музыка, для музыки использую bass.dll, и подключенный BASS_Module.iss, дело в следующем, при запуске инсталлятора, сначала появляется лого\Splash, а так же сразу запускается музыка, сам вопрос, как сделать, что и где прописать, чтобы музыка запускалась с появлением окна приветствия инсталлятора?, а не сразу после запуска установщика с ярлыка, то есть нужно сделать запуск музыки с определенного окна инсталлятора, как то так, надеюсь удалось понятно объяснить свою проблему.

P/S: извиняюсь если не там задал вопрос, на форуме первый раз, не совсем разобрался куда писать и как создавать вопросы.
 

Andreo Fadio

Старожил
@Suomy, например, инициализацию музыки передвинуть в конец процедуры инициализации форм\окон. А вообще без скрипта вашего не помочь, только вы знаете что там накодировали.
 

Suomy

Новичок
@Suomy, например, инициализацию музыки передвинуть в конец процедуры инициализации форм\окон. А вообще без скрипта вашего не помочь, только вы знаете что там накодировали.
так, а как это реализовать в коде?, поэтому я задал здесь вопрос, что сам не разобрался как инициализацию передвинуть, вот мой код:
Код:
[Files]
Source: "ISSkin.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
Source: "ISSkinU.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
Source: "tiger.cjstyles"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
Source: "bass.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
Source: "isgsg.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
Source: "CallbackCtrl.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
Source: "botva2.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
Source: "Music.mp3"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
Source: "BASS_Files\*"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
Source: "Splash.png"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
Source: "Папка с файлами для инсталляции\exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "Папка с файлами для инсталляции\ *"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]


[Run]


[UninstallDelete]


[Code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';

//Ползунок устанавливается в соответствии с громкостью, остальные настройки в BASS_Module.iss
procedure BASS_SetVolume(Pos: DWORD);
var
  nLeft, bLeft, bTop, bWidth, bHeight: Integer;
begin
  if (Pos >= 0) and (Pos <= 100) then begin
  BASS_ChangePos(Pos);
  nLeft:= BASS_TrackBar.MinLeft + round(BASS_TrackBar.BarWidth*BASS_Volume/100);  
  if (nLeft<BASS_TrackBar.MinLeft) then nLeft:= BASS_TrackBar.MinLeft;
  if (nLeft>BASS_TrackBar.MaxLeft) then nleft:= BASS_TrackBar.MaxLeft;
  BtnGetPosition(BASS_TrackBar.BarDote, bLeft, bTop, bWidth, bHeight);
  BtnSetPosition(BASS_TrackBar.BarDote, nLeft, bTop, bWidth, bHeight);
end;
end;
//Конец Ползунок

//Splash
procedure ShowSplashScreen(p1:HWND;p2:AnsiString;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer);
external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
//Конец Splash

function InitializeSetup:boolean;

begin
ExtractTemporaryFile('tiger.cjstyles');
LoadSkin(ExpandConstant('{tmp}\tiger.cjstyles'), '');
Result:=True;
end;

procedure Splash();
begin
ExtractTemporaryFile('Splash.png');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}\Splash.png'),1000,5000,2000,0,255,True,$FFFFFF,10);
end;

procedure InitializeWizard;
begin
ExtractTemporaryFile('bass.dll');
ExtractTemporaryFile('botva2.dll');
ExtractTemporaryFile('CallbackCtrl.dll');
ExtractTemporaryFile('Music.mp3');
ExtractTemporaryFile('MusicButton.png');
ExtractTemporaryFile('volmax.png');
ExtractTemporaryFile('volmin.png');
ExtractTemporaryFile('volpb.png');
ExtractTemporaryFile('voldote.png');

Bass_Init('{tmp}\Music.mp3');

BASS_CreateMediaPlayer(WizardForm, '{tmp}\volmax.png', '{tmp}\volmin.png', '{tmp}\volpb.png', '{tmp}\voldote.png', 20, 329);
BASS_CreateOnOffButton(WizardForm, '{tmp}\MusicButton.png', 170, 320, 36, 36, 4);
BASS_SetVolume(5);

Splash();
end;



procedure DeinitializeSetup;
begin
Bass_DeInit;
gdipShutdown;
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
end;
 

zettend

Старожил
@Suomy, ищи у себя BASS_SetVolume(5); меняй на BASS_SetVolume(0);
Далее ищешь примерно такой код и вставляешь туда BASS_SetVolume(5);:
code_language.pascal:
Procedure CurPageChanged(CurPageID: Integer);
var n: Integer;
begin
  GetStateOriginalBtn();
  HideComponents();

  Case CurPageID of
    wpWelcome: begin
       BASS_SetVolume(5);
 

Suomy

Новичок
@Suomy, ищи у себя BASS_SetVolume(5); меняй на BASS_SetVolume(0);
Далее ищешь примерно такой код и вставляешь туда BASS_SetVolume(5);:
code_language.pascal:
Procedure CurPageChanged(CurPageID: Integer);
var n: Integer;
begin
  GetStateOriginalBtn();
  HideComponents();

  Case CurPageID of
    wpWelcome: begin
       BASS_SetVolume(5);
спасибо, код нашел, все получилось., вообще похожий код делал сразу, а ошибкой моей было, что BASS_SetVolume(5); стоял не в этом коде, поэтому и не применялось изменение, еще раз спасибо за подсказку.
 
Последнее редактирование:

Yaroslav950

Участник
Очень хороший вопрос был. Как вообще можно запустить ее на определенной странице (допустим на одной странице инсталятора wpWelcome) как в botve (видимость-"True" невидимость-"False") строка которая ведена жирным курсивом:
Код:
procedure InitializeWizard;
begin
BASS_CreateMediaPlayer(WizardForm, '{tmp}\volmax.png', '{tmp}\volmin.png', '{tmp}\volpb.png', '{tmp}\voldote.png', 20, 329);
end ;
Может там надо дописать в Module.iss что-то? Может кто-то задумывался над этим вопросом.
 
Последнее редактирование:

Andreo Fadio

Старожил
Как вообще можно запустить ее на определенной странице (допустим на одной странице инсталятора wpWelcome)
Код:
#include "botva2.iss"
#include "BASS_Module.iss"

[_Setup]
AppName=BassExample
AppVerName=BassExample
DefaultDirName={pf}\BassExample
DisableWelcomePage=no

[_Files]
Source: BASS_Files\*;  DestDir: {tmp}; Flags: dontcopy
Source: music.mp3;  DestDir: {tmp}; Flags: dontcopy

[_code]
var
MusOn: Boolean;

procedure InitializeWizard();
begin
  ExtractTemporaryFile('BASS.dll');
  ExtractTemporaryFile('CallbackCtrl.dll');
  ExtractTemporaryFile('botva2.dll');
  ExtractTemporaryFile('MusicButton.png');
  ExtractTemporaryFile('Music.mp3');
  //BASS_CreateOnOffButton(WizardForm, '{tmp}\MusicButton.png', 20, 320, 36, 36, 4);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if (CurpageID = wpWelcome) then
   begin
    //BtnSetVisibility(BASS_OnOffBtn, True);
    if not MusOn then
     BASS_Init('{tmp}\Music.mp3') else
    BASS_OnOffClick(BASS_OnOffBtn);
    MusOn:= True;
   end;
  if not (CurpageID = wpWelcome) then
   begin
    //BtnSetVisibility(BASS_OnOffBtn, False);
    _BASS_ChannelPause(BASS_Cfg.Mp3Handle);
   end;
end;
procedure DeinitializeSetup();
begin
  BASS_DeInit;
  gdipShutdown
end;

Код:
#define BASS_CurrentTime
#include "botva2.iss"
#include "BASS_Module.iss"

[_Setup]
AppName=BassExample
AppVerName=BassExample
DefaultDirName={pf}\BassExample

[_Files]
Source: BASS_Files\*;  DestDir: {tmp}; Flags: dontcopy
Source: music.mp3;  DestDir: {tmp}; Flags: dontcopy

[_code]
var
MusOn: Boolean;

procedure InitializeWizard();
begin
  ExtractTemporaryFile('BASS.dll');
  ExtractTemporaryFile('CallbackCtrl.dll');
  ExtractTemporaryFile('botva2.dll');
  ExtractTemporaryFile('volmax.png');
  ExtractTemporaryFile('volmin.png');
  ExtractTemporaryFile('volpb.png');
  ExtractTemporaryFile('volpbt.png');
  ExtractTemporaryFile('voldote.png');
  ExtractTemporaryFile('Music.mp3');
  BASS_CreateMediaPlayer(WizardForm, '{tmp}\volmax.png', '{tmp}\volmin.png', '{tmp}\volpb.png', '{tmp}\volpbt.png', '{tmp}\voldote.png', 20, 320, 150, True);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if (CurpageID = wpWelcome) then
   begin
    BtnSetVisibility(BASS_VolBtnMax, True);
    BtnSetVisibility(BASS_VolBtnMin, True);
    BtnSetVisibility(BASS_VolBar.BarDote, True);
    BtnSetVisibility(BASS_PosBar.BarDote, True);
    BASS_VolBar.BarLbl.Visible:= True;
    BASS_PosBar.BarLbl.Visible:= True;
    //ImgSetVisibility(BASS_VolBar.BarImg, True);
    //ImgSetVisibility(BASS_PosBar.BarImg, True);
    //ImgSetVisibility(BASS_VolBar.BarTexImg, True);
    //ImgSetVisibility(BASS_PosBar.BarTexImg, True);
    if not MusOn then
     BASS_Init('{tmp}\Music.mp3') else
    BASS_OnOffClick(BASS_OnOffBtn);
    MusOn:= True;
   end;
  if not (CurpageID = wpWelcome) then
   begin
    BtnSetVisibility(BASS_VolBtnMax, False);
    BtnSetVisibility(BASS_VolBtnMin, False);
    BtnSetVisibility(BASS_VolBar.BarDote, False);
    BtnSetVisibility(BASS_PosBar.BarDote, False);
    BASS_VolBar.BarLbl.Visible:= False;
    BASS_PosBar.BarLbl.Visible:= False;
    //ImgSetVisibility(BASS_VolBar.BarImg, False);
    //ImgSetVisibility(BASS_PosBar.BarImg, False);
    //ImgSetVisibility(BASS_VolBar.BarTexImg, False);
    //ImgSetVisibility(BASS_PosBar.BarTexImg, False);
    _BASS_ChannelPause(BASS_Cfg.Mp3Handle);
   end;
end;

procedure DeinitializeSetup();
begin
  BASS_DeInit;
  gdipShutdown
end;
 
Последнее редактирование:

Yaroslav950

Участник
Все благодарочка (botva старая у меня просто) разобрался надо было добавить в Bass_Moudle TLabel и обязательно вести
BASS_TrackBar.BarLbl.Visible:= True;
BASS_TrackBar.BarLbl.Visible:= False;
Если кому нужно код вот:
Код:
#include "botva2.iss"
#include "BASS_Module.iss"

[Setup]
AppName=BassExample
AppVerName=BassExample
DefaultDirName={pf}\BassExample

[Files]
Source: BASS_Files\*;  DestDir: {tmp}; Flags: dontcopy
Source: music.mp3;  DestDir: {tmp}; Flags: dontcopy

[Code]
procedure ShowComponents(CurPageID: Integer);
begin
case CurPageID of
wpWelcome:
    begin
    ImgSetVisibility(BASS_TrackBar.BarImg,True);
    end;
end;
end;

procedure InitializeWizard;
begin
  ExtractTemporaryFile('CallbackCtrl.dll');
  ExtractTemporaryFile('botva2.dll');
  ExtractTemporaryFile('BASS.dll');
  ExtractTemporaryFile('volmax.png');
  ExtractTemporaryFile('volmin.png');
  ExtractTemporaryFile('volpb.png');
  ExtractTemporaryFile('voldote.png');
  ExtractTemporaryFile('Music.mp3');

  BASS_Init('{tmp}\Music.mp3') //Запускаем музыку
  //Можно добавить в инсталл несколько песен
  //BASS_Init(ExpandConstant('{tmp}\*'))        //Поиск по маске
BASS_CreateMediaPlayer(WizardForm, '{tmp}\volmax.png', '{tmp}\volmin.png', '{tmp}\volpb.png', '{tmp}\voldote.png',495, 320));
end;

procedure CurPageChanged(CurPageID: Integer);
begin
ShowComponents(CurPageID);
ImgSetVisibility(BASS_TrackBar.BarImg,False);
BtnSetVisibility(BASS_TrackBar.BarDote,False);
BASS_TrackBar.BarLbl.Visible:= True;  //показ курсора мышки
BtnSetVisibility(BASS_VolBtnMax,False);
BtnSetVisibility(BASS_VolBtnMin,False);
case CurPageID of
  wpWelcome:
    begin
    BtnSetVisibility(BASS_VolBtnMin,True);                 BtnSetVisibility(BASS_VolBtnMax,True);      BtnSetVisibility(BASS_TrackBar.BarDote,True);  // показ бутонки (изображение на страницах.)
    end;
SystemPage.ID:
    begin           
  BASS_TrackBar.BarLbl.Visible:= False; // не показ курсора мышки на TLabel на определенной странице.
    end;
end;
end;

procedure DeinitializeSetup();
begin
  BASS_DeInit;
  gdipShutdown
end;
Оставляю Bass Module чутка дописанный может кому-то пригодится. Старая версия
 

Вложения

Последнее редактирование:
Сверху