在 Inno Setup 中使用 ISSI(添加背景图像)时实现事件函数 InitializeWizard:重复标识符 'INITIALIZEWIZARD'
Implementing event functions InitializeWizard while using ISSI (to add background image) in Inno Setup: Duplicate identifier 'INITIALIZEWIZARD'
我正在尝试使用 ISSI 将背景图像与使用 "BASS audio library" 的歌曲一起放入 Inno Setup 安装程序,但我只能保持其中一个处于活动状态,因为出现此编译器错误:
Duplicate identifier 'INITIALIZEWIZARD'
我是否可以通过其他方式获取全屏背景图像以便使用 BASS 音频库?
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 = 000000;
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;
谁能帮帮我,感激不尽
Inno Setup 6 支持事件属性,请参阅 。
[Code]
<event('InitializeWizard')>
procedure InitializeWizard2;
begin
{ Your BASS code goes here }
end;
对于旧版本的 Inno Setup:
Inno Setup Script #Includes (ISSI) may implement some Inno Setup event functions,例如 InitializeWizard
、InitializeSetup
、CurPageChanged
、BackButtonClick
、NextButtonClick
和 DeinitializeSetup
目的。并非所有事件函数都必须定义,这取决于您使用的 ISSI 功能。在您的情况下,是 ISSI_BackgroundImage
导致 InitializeWizard
事件函数的实现。
如果您需要 运行 在其中一些事件函数中使用您自己的代码,当您定义适当的预处理器符号时,事件函数的 ISSI 实现可以调用您的用户定义函数。符号名称类似于 ISSI_EventFunctionName
并且用户定义的函数必须具有相同的名称。 function/procedure 还必须具有与原始 Inno Setup 事件函数相同的签名。
必须先定义符号和用户函数,然后再包含 _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"
我正在尝试使用 ISSI 将背景图像与使用 "BASS audio library" 的歌曲一起放入 Inno Setup 安装程序,但我只能保持其中一个处于活动状态,因为出现此编译器错误:
Duplicate identifier 'INITIALIZEWIZARD'
我是否可以通过其他方式获取全屏背景图像以便使用 BASS 音频库?
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 = 000000;
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;
谁能帮帮我,感激不尽
Inno Setup 6 支持事件属性,请参阅
[Code]
<event('InitializeWizard')>
procedure InitializeWizard2;
begin
{ Your BASS code goes here }
end;
对于旧版本的 Inno Setup:
Inno Setup Script #Includes (ISSI) may implement some Inno Setup event functions,例如 InitializeWizard
、InitializeSetup
、CurPageChanged
、BackButtonClick
、NextButtonClick
和 DeinitializeSetup
目的。并非所有事件函数都必须定义,这取决于您使用的 ISSI 功能。在您的情况下,是 ISSI_BackgroundImage
导致 InitializeWizard
事件函数的实现。
如果您需要 运行 在其中一些事件函数中使用您自己的代码,当您定义适当的预处理器符号时,事件函数的 ISSI 实现可以调用您的用户定义函数。符号名称类似于 ISSI_EventFunctionName
并且用户定义的函数必须具有相同的名称。 function/procedure 还必须具有与原始 Inno Setup 事件函数相同的签名。
必须先定义符号和用户函数,然后再包含 _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"