ksiCallNsis-又一款调用nsis插件的插件(支持更多nsis插件)
来源: 最后更新:2018-01-18 10:32 阅读: 12
评论(0)
http://www.kngstr.com/product/inno_setup/
ksiCallNsis是一款调用nsis的dll的插件,本插件支持/unload,callback的nsis插件,参照nsis的源码编写。
但依然有些插件不支持:
1、会访问nsis窗口的
2、在回调事件中有真实代码的
3、会访问一些nsis的常量的
特别感谢:
感谢Restools大神写的插件,callnsis,借用他的话说,双剑合璧。
感谢Restools大神分享的调用nsis插件的代码
插件附带了几个nsis的插件,作为演示,这里举例说明
killer.dll - 进程检测和结束插件,支持32和64
nsProcess.dll- 进程检测和结束插件,支持32和64
newadvsplash.dll - 闪屏插件
AdvSplash.dll - 闪屏插件
1 ; -- Example1.iss --
0
1; ksiCallNsis 插件演示,调用含有callback的nsis插件
2
3#include "ksiCallNsis.ish"
4
5[Setup]
6AppName=我的程序
7AppVerName=我的程序 版本 1.5
8DefaultDirName={pf}\我的程序
9DefaultGroupName=我的程序
10UninstallDisplayIcon={app}\MyProg.exe
11OutputDir=userdocs:Inno Setup Examples Output
12
13[Files]
14Source: "{#PluginDir}\Nsis\nsProcess.dll"; Flags: dontcopy
15
16[Icons]
17Name: "{group}\我的程序"; Filename: "{app}\MyProg.exe"
18
19[code]
20procedure InitializeWizard();
21var
22 val: string;
23 ival: Integer;
24begin
25 PDir('{# ksiCallNsis_DLL }');
26
27 InitNsisPlug(0);
28 try
29 CallNsisPlugEx(PDir('nsProcess.dll'),'_FindProcess', ['/NOUNLOAD', 'cmd.exe']);
30 val := PopNsisString;
31 if val = '0' then begin
32 if MsgBox('发现cmd,是否关闭进程?', mbConfirmation, MB_YESNO) = IDYES then begin
33 CallNsisPlugEx(PDir('nsProcess.dll'),'_KillProcess', ['/NOUNLOAD', 'cmd.exe']);
34 val := PopNsisString;
35 if val = '0' then
36 MsgBox('关闭成功', mbConfirmation, MB_OK)
37 else
38 MsgBox(Format('错误代码:%s', [val]), mbConfirmation, MB_OK);
39 end;
40 end
41 else
42 MsgBox(Format('错误代码:%s', [val]), mbConfirmation, MB_OK);
43 CallNsisPlugEx(PDir('nsProcess.dll'),'_Unload', []);
44 finally
45 FreeNsisPlug();
46 end;
47end;
48
49
50
本插件是按照AIO(Inno集成版)的规范编写。使用的时候请直接覆盖到AIO(Inno集成版)的安装目录使用
如果你使用AIO(Inno集成版)新版本的话,会集成本插件,老版本可以手动覆盖
- 上一篇: <<Inno使用系统网卡MAC地址制作注册码/注册机
- 下一篇:已是最后一篇