从此为 NSIS 开发的插件也通用于 INNO 了。
callnsis.dll 就是新作出来的调用 NSIS 插件地通用调用插件,适用于任何程序的正常调用,当然就会包括 INNO 了。
这个 callnsis.dll 的调用函数是 callplug 。Delphi 中声明如下。
procedure callplug(parentwnd: Integer; pluginname, funcname, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10: PChar); stdcall;
external 'callnsis.dll' name 'callplug';
预留 10 个参数,参数根据 NSIS 例子中来填入。10 个一般够用了,如果没用的就填空字符串。
看看以下的 INNO 例子。跟 NSIS 一样的效果。 :233
渐显渐隐的闪屏效果,还附带背景声音。
QUOTE
; -- Example1.iss --
; 演示如何调用 NSIS 插件的 INNO 安装程序。
[Setup]
AppName=我的程序
AppVerName=我的程序 版本 1.5
DefaultDirName={pf}\我的程序
DefaultGroupName=我的程序
UninstallDisplayIcon={app}\MyProg.exe
[Files]
Source: "MyProg.exe"; DestDir: "{app}"
Source: "MyProg.hlp"; DestDir: "{app}"
Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme
Source: "callnsis.dll"; DestDir: "{tmp}"; Flags: dontcopy
Source: "AdvSplash.dll"; DestDir: "{tmp}"; Flags: dontcopy
Source: "logo.bmp"; DestDir: "{tmp}"; Flags: dontcopy
Source: "logo.wav"; DestDir: "{tmp}"; Flags: dontcopy
[Icons]
Name: "{group}\我的程序"; Filename: "{app}\MyProg.exe"
[code]
procedure callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PChar);
external 'callplug@files:callnsis.dll stdcall';
procedure InitializeWizard();
begin
ExtractTemporaryFile(ExtractFileName(ExpandConstant('{tmp}\AdvSplash.dll')));
ExtractTemporaryFile(ExtractFileName(ExpandConstant('{tmp}\logo.bmp')));
ExtractTemporaryFile(ExtractFileName(ExpandConstant('{tmp}\logo.wav')));
callplug(0,ExpandConstant('{tmp}\AdvSplash.dll'),'show','2800','1400','1200','-1',ExpandConstant('{tmp}\logo'),'','','','','');
end;
以下附件包括所有插件(包括通用调用插件 callnsis.dll 和 NSIS 专用插件 AdvSplash.dll)。
[attachmentid=16698]