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.
Afficher la suite