Problème Inno Setup

Fermé
Smiley32 Messages postés 153 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 10 février 2016 - 16 juil. 2015 à 11:42
Bonjour à tous.

Voilà mon problème : je veux faire jouer une musique au format XM en même temps que mon installation. Pour cela, j'ai trouvé un code sur google et voilà ce que ça donne :


#define MyAppName "jeu"
#define MyAppVersion "V2"
#define MyAppPublisher "Smiley32"
#define MyAppExeName "jeu.exe"

[Setup]

AppId= ICI, l'AppId

AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputBaseFilename=jeu
SetupIconFile=E:\Install\5.ico
Compression=lzma
SolidCompression=yes
DiskSpanning = yes
SlicesPerDisk=19
DiskSliceSize=2000000000

[code]
function InitializeSetup(): Boolean;
begin
  Result := MsgBox('{#MyAppName}' #13#13 'Smiley32', mbConfirmation, MB_OK) = idOk;  
end;

var
  str: string;
  BASSMODArray: array of Char;
 
 
const
  BASS_MUSIC_RAMP = 1;               // (Fast Tracker .xm Mode 1)
  BASS_MUSIC_RAMPS = 2;              // (Fast Tracker .xm Mode 2)
  BASS_MUSIC_LOOP = 4;               // (Loop Play Mode)
  BASS_MUSIC_FT2MOD = 16;            // (.mod FastTracker 2)
  BASS_MUSIC_PT1MOD = 32;            // (.mod ProTracker 1)
  BASS_MUSIC_SURROUND = 512;         // (surround Mode 1)
  BASS_MUSIC_SURROUND2 = 1024;       // (surround Mode 2)
 
function BASSMOD_Init(device: Integer; freq, flags: DWORD): Boolean;
  external 'BASSMOD_Init@files:bassmod.dll stdcall delayload';
 
function BASSMOD_MusicLoad(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): Boolean;
  external 'BASSMOD_MusicLoad@files:bassmod.dll stdcall delayload';
 
procedure BASSMOD_MusicFree();
  external 'BASSMOD_MusicFree@files:bassmod.dll stdcall delayload';
 
function BASSMOD_MusicPlay(): Boolean;
  external 'BASSMOD_MusicPlay@files:bassmod.dll stdcall delayload';
 
function BASSMOD_MusicPause(): Boolean;
  external 'BASSMOD_MusicPause@files:bassmod.dll stdcall delayload';
 
function BASSMOD_MusicStop(): Boolean;
  external 'BASSMOD_MusicStop@files:bassmod.dll stdcall delayload';
 
procedure BASSMOD_Free();
  external 'BASSMOD_Free@files:bassmod.dll stdcall delayload';
 
procedure PlayButtonOnClick(Sender: TObject);
var
  Name1: string;
begin
  if not BASSMOD_MusicPlay then
  begin
    Name1 := ExpandConstant('{tmp}\musique.xm');
    if BASSMOD_MusicLoad(FALSE, PChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND) then
       BASSMOD_MusicPlay;
  end;
end;
 
procedure PauseButtonOnClick(Sender: TObject);
begin
  BASSMOD_MusicPause;
end;
 
procedure StopButtonOnClick(Sender: TObject);
begin
  BASSMOD_MusicStop;
  BASSMOD_MusicFree;
end;
 
 
procedure InitializeWizard();
 
var
  Name1: string;
  PlayButton, PauseButton, StopButton: TButton;
 
  begin
 
    PlayButton := TNewButton.Create(WizardForm);
    PlayButton.Left := ScaleX(10);
    PlayButton.Top := WizardForm.ClientHeight - 30;
    PlayButton.Width := ScaleX(40);
    PlayButton.Height := ScaleY(20);
    PlayButton.Caption := 'Play';
    PlayButton.OnClick := @PlayButtonOnClick;
    PlayButton.Parent := WizardForm;
 
    PauseButton := TNewButton.Create(WizardForm);
    PauseButton.Left := ScaleX(60);
    PauseButton.Top := WizardForm.ClientHeight - 30;
    PauseButton.Width := ScaleX(40);
    PauseButton.Height := ScaleY(20);
    PauseButton.Caption := 'Pause';
    PauseButton.OnClick := @PauseButtonOnClick;
    PauseButton.Parent := WizardForm;
 
    StopButton := TNewButton.Create(WizardForm);
    StopButton.Left := ScaleX(110);
    StopButton.Top := WizardForm.ClientHeight - 30;
    StopButton.Width := ScaleX(40);
    StopButton.Height := ScaleY(20);
    StopButton.Caption := 'Stop';
    StopButton.OnClick := @StopButtonOnClick;
    StopButton.Parent := WizardForm;
 
    WizardForm.PasswordEdit.Visible := False;
    WizardForm.PasswordEdit.Text := '';
 
    ExtractTemporaryFile(ExpandConstant('bassmod.dll'));
    ExtractTemporaryFile(ExpandConstant('musique.xm'));
    if not BASSMOD_Init(-1, 44100, 0)
      then
    begin
      MsgBox('BASSMOD Can''t initialize the device. Playing is not possible.', mbError, MB_OK)
        BASSMOD_Free;
    end
    else
    begin
      Name1 := ExpandConstant('{tmp}\musique.xm');
      if BASSMOD_MusicLoad(FALSE, PChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND) then
        BASSMOD_MusicPlay;
    end;
end;

[Languages]
Name: "french"; MessagesFile: "compiler:Languages\French.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1

[Messages]
BeveledLabel=Smiley32

[Files]
Source: "E:\Install\jeu.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Install\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "E:\bassmod.dll"; DestDir: "{tmp}"; Flags: deleteafterinstall dontcopy
Source: "E:\musique.xm"; DestDir: "{tmp}"; Flags: deleteafterinstall dontcopy

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent



Alors, l'installation fonctionne, mais au moment où la fenêtre d'installation devrait se fermer (A la fin ou bien au clic sur annuler), la fenêtre semble se fermer mais est toujours présente dans la barre des taches et est signalée comme "Ne répond pas".
Le seul moyen est alors de la fermer via le gestionnaire des tâches.

Si vous pouviez m'aider, je vous en serais reconnaissant.
A voir également: