首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Inno设置中使用ISSI (添加背景图像)实现事件函数InitializeWizard :重复标识符'INITIALIZEWIZARD‘

在Inno设置中使用ISSI (添加背景图像)实现事件函数InitializeWizard :重复标识符'INITIALIZEWIZARD‘
EN

Stack Overflow用户
提问于 2018-11-22 02:27:15
回答 1查看 669关注 0票数 2

我试图使用ISSI向Inno安装安装程序提供背景图像,同时使用“低音音频库”播放一首歌曲,但我只能保持其中一个是活动的,因为我收到了这个编译器错误:

重复标识符“INITIALIZEWIZARD”

我会有另一种方法来获得全屏背景图像,以便我可以使用低音音频库?

Inno设置代码:

代码语言:javascript
复制
; 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;

谁能帮我我真的很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-22 07:30:26

在Inno安装程序6中,由于它支持事件属性,请参见从不同来源合并事件函数(InitializeWizard)实现

代码语言:javascript
复制
[Code]

<event('InitializeWizard')>
procedure InitializeWizard2;
begin
  { Your BASS code goes here }
end;

对于Inno安装程序的旧版本:

Inno安装脚本#包含(ISSI)可以为自己的目的实现一些Inno设置事件函数,如InitializeWizardInitializeSetupCurPageChangedBackButtonClickNextButtonClickDeinitializeSetup。并不是所有的事件函数都必须定义,它取决于您正在使用的ISSI特性。在您的例子中,是ISSI_BackgroundImage导致了InitializeWizard事件函数的实现。

如果需要在其中一些事件函数中运行自己的代码,则在定义适当的预处理器符号时,事件函数的ISSI实现可以调用用户定义的函数。符号名类似于ISSI_EventFunctionName,用户定义的函数必须具有相同的名称。函数/过程还必须具有与原始Inno安装事件函数相同的签名。

必须在包含_issi.isi之前定义符号和用户函数。

InitializeWizard的一个例子

代码语言:javascript
复制
[Code]

procedure ISSI_InitializeWizard;
begin
  { Your BASS code goes here }
end;

#define ISSI_InitializeWizard

#define ISSI_IncludePath "C:\ISSI"
#include ISSI_IncludePath+"\_issi.isi"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53423064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档