我试图使用ISSI向Inno安装安装程序提供背景图像,同时使用“低音音频库”播放一首歌曲,但我只能保持其中一个是活动的,因为我收到了这个编译器错误:
重复标识符“INITIALIZEWIZARD”
我会有另一种方法来获得全屏背景图像,以便我可以使用低音音频库?
Inno设置代码:
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define ISSI_BackgroundImage "E:\Instalador\file.bmp"
#define ISSI_BackgroundImage_BGColor "clWhite"
#define ISSI_IncludePath "C:\ISSI"
#include ISSI_IncludePath+"\_issi.isi"
[Files]
Source: "Bass.dll"; Flags: dontcopy
Source: "AudioFile.mp3"; Flags: dontcopy
[Code]
const
BASS_SAMPLE_LOOP = 4;
BASS_UNICODE = $80000000;
BASS_CONFIG_GVOL_STREAM = 5;
const
#ifndef UNICODE
EncodingFlag = 0;
#else
EncodingFlag = BASS_UNICODE;
#endif
type
HSTREAM = DWORD;
function BASS_Init(device: LongInt; freq, flags: DWORD;
win: HWND; clsid: Cardinal): BOOL;
external 'BASS_Init@files:bass.dll stdcall';
function BASS_StreamCreateFile(mem: BOOL; f: string; offset1: DWORD;
offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): HSTREAM;
external 'BASS_StreamCreateFile@files:bass.dll stdcall';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
external 'BASS_ChannelPlay@files:bass.dll stdcall';
function BASS_SetConfig(option: DWORD; value: DWORD ): BOOL;
external 'BASS_SetConfig@files:bass.dll stdcall';
function BASS_Free: BOOL;
external 'BASS_Free@files:bass.dll stdcall';
procedure InitializeWizard;
var
StreamHandle: HSTREAM;
begin
ExtractTemporaryFile('AudioFile.mp3');
if BASS_Init(-1, 44100, 0, 0, 0) then
begin
StreamHandle := BASS_StreamCreateFile(False,
ExpandConstant('{tmp}\AudioFile.mp3'), 0, 0, 0, 0,
EncodingFlag or BASS_SAMPLE_LOOP);
BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, 2500);
BASS_ChannelPlay(StreamHandle, False);
end;
end;
procedure DeinitializeSetup;
begin
BASS_Free;
end;谁能帮我我真的很感激。
发布于 2018-11-22 07:30:26
在Inno安装程序6中,由于它支持事件属性,请参见从不同来源合并事件函数(InitializeWizard)实现。
[Code]
<event('InitializeWizard')>
procedure InitializeWizard2;
begin
{ Your BASS code goes here }
end;对于Inno安装程序的旧版本:
Inno安装脚本#包含(ISSI)可以为自己的目的实现一些Inno设置事件函数,如InitializeWizard、InitializeSetup、CurPageChanged、BackButtonClick、NextButtonClick和DeinitializeSetup。并不是所有的事件函数都必须定义,它取决于您正在使用的ISSI特性。在您的例子中,是ISSI_BackgroundImage导致了InitializeWizard事件函数的实现。
如果需要在其中一些事件函数中运行自己的代码,则在定义适当的预处理器符号时,事件函数的ISSI实现可以调用用户定义的函数。符号名类似于ISSI_EventFunctionName,用户定义的函数必须具有相同的名称。函数/过程还必须具有与原始Inno安装事件函数相同的签名。
必须在包含_issi.isi之前定义符号和用户函数。
InitializeWizard的一个例子
[Code]
procedure ISSI_InitializeWizard;
begin
{ Your BASS code goes here }
end;
#define ISSI_InitializeWizard
#define ISSI_IncludePath "C:\ISSI"
#include ISSI_IncludePath+"\_issi.isi"https://stackoverflow.com/questions/53423064
复制相似问题