介绍

汉化修改：风铃夜思雨
与我联系

Inno Setup 功能扩展是在原版的基础上扩展更多实用功能。该扩展版的功能大部份都是根据本人需求改进的。
程序编译 非Unicode版本使用Delphi2和Delphi3、Unicode版本使用Delphi2009。


更新日志

该更新日志仅适用增强版。

2010-04-11

  • 由于官方版增加了这几个函数,现移除GetSHA1OfFile、GetSHA1OfString、GetSHA1OfUnicodeString函数。

2009-09-25

  • INNO 添加ExitWindowsEx函数。
  • INNO 添加ExitWindowsEx函数所使用的常量EWX_LOGOFF、EWX_SHUTDOWN、EWX_REBOOT、EWX_FORCE、EWX_POWEROFF、EWX_FORCEIFHUNG。

2009-05-12

  • INNO 添加IntToHex函数。
  • INNO 和 ISPP 添加GetSHA1OfUnicodeString函数。
  • INNO 和 ISPP 添加GetCRC32OfFile函数。
  • INNO 和 ISPP 添加GetCRC32OfString函数。
  • INNO 和 ISPP 添加GetCRC32OfUnicodeString函数。

2009-05-05

  • INNO 添加UpdateIcons函数。
  • INNO 添加SetUninstExeIcons函数。

2008-07-20

  • INNO 添加{apphwnd}常量。
  • INNO 添加ProcessMessagesEvents、DisabledAboutMenu函数。
  • INNO 类TPasswordEdit添加属性Value，与属性Text功能相同。

2008-09-18

  • INNO 添加DelEmptyTree函数。
  • INNO 添加ExtendVersion常量，是否扩展版本标识。
  • ISPP 添加ExtendVersion预定义，是否扩展版本标识。
  • ISPP 添加ISVersion预定义，返回字符串形式的 Inno Setup 编译器版本。
  • ISPP 添加ISPPVersion预定义，返回字符串形式的 ISPP 版本。


标准扩展

标准扩展不论标准汉化版或增强汉化版都支持。

扩展脚本编辑器。

  • 改进代码段语法高亮显示。
  • 增加代码复制为Html。
  • 增加代码模板。
  • 增加书签功能。
  • 增加代码复制为UBB。
  • 增加编辑菜单的各种操作按钮到工具栏。
  • 设置将从INI读取/保存，去掉原是从注册表读取/保存。

扩展常量
{apphwnd} (特殊用途) 转换为安装程序的 application 句柄。

扩展 compiler: 编译器所在目录命令；使 Inno Setup 目录结构更简洁。
注意: 仅支持一级目录。

  • 向导位图文件支持放至到 Images 目录。
  • Config.ini，CodeTemplate.dat 支持放至到 Config 目录。
  • *.chm，faq.htm，whatsnew.htm，license.txt 支持放至到 Help 目录下。
  • isbunzip.dll，isbzip.dll，ISCrypt.dll，islzma.dll，isunzlib.dll，iszlib.dll 支持放至到 Lib 目录。
  • 包含 iss 的脚本文件(#include "compiler:dao.iss")，可放至到 Include 目录。
  • 第三方扩展 DLL 库文件，可放至到 Addin 目录。
  • default.isl 支持放至到 Languages 目录下，但会影响 IsTool 程序的选择语言文件窗口的小小错误，不是很大问题。
示例:
;实际文件存放在include目录
#include "compiler:dao.iss"

[setup]
;实际文件是存放在Images目录
WizardImageFile=compiler:WizModernImage.bmp

[files]
;实际文件是存放在Examples目录
Source: compiler:MyProg.exe; DestDir: {app}\Examples; Flags: ignoreversion

;实际文件是存放在Addin目录
Source: compiler:timectrl.dll; DestDir: {tmp}; Flags: dontcopy noencryption


函数扩展

Pascal 脚本可以内部调用的扩展支持函数。

Inno Setup 扩展支持函数

字符 函数

function RightPos(Const Substr, S: string): Integer;

function Base64EncryptString(Const S: String): String;
function Base64DecryptString(Const S: String): String;
function GetCRC32OfString(Const S: AnsiString): String;
function GetCRC32OfUnicodeString(Const S: String): String;
function StringChange(S: String; Const FromStr, ToStr: String): String;
function InsertStr(SubStr, S: String; Indx: Integer): String;

文件系统 函数

function GetCRC32OfFile(Const Filename: String): String;

字符 函数

function IntToHex(Value: Integer; Digits: Integer): string;

文件 函数

function DelEmptyTree(Dir: string; DelRoot: Boolean): Boolean;

系统 函数

Procedure ProcessMessagesEvents;
function ExitWindowsEx(uFlags, dwReserved: DWORD): Boolean;

其它 函数

Function ShortCut(Key: Word; Shift: TShiftState): TShortCut;
Procedure ShortCutToKey(ShortCut: TShortCut; Var Key: Word; Var Shift: TShiftState);
Function ShortCutToText(ShortCut: TShortCut): String;
Function TextToShortCut(Text: String): TShortCut;
Function NewPopupMenu(Owner: TComponent; Const AName: String; Alignment: TPopupAlignment; AutoPopup: Boolean; Items: Array Of TMenuItem): TPopupMenu;
Function NewSubMenu(Const ACaption: String; hCtx: Word; Const AName: String;Items: Array Of TMenuItem): TMenuItem;
Function NewItem(Const ACaption: String; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word; Const AName: String): TMenuItem;
Function NewLine: TMenuItem;
function Point(AX, AY: Integer): TPoint;
function Rect(ALeft, ATop, ARight, ABottom: Integer): TRect;
function Bounds(ALeft, ATop, AWidth, AHeight: Integer): TRect;
Procedure DisabledAboutMenu(WizardFormHandle: Integer);
function UpdateIcons(const FileName, IcoFileName, ResName: String; LangID: Integer): Boolean;
procedure SetUninstExeIcons(const IcoFileName: String);

Inno Setup 扩展支持常量

这里是用于这些函数的常量列表:

ExitWindowsEx 值
EWX_LOGOFF, EWX_SHUTDOWN, EWX_REBOOT, EWX_FORCE, EWX_POWEROFF, EWX_FORCEIFHUNG


类扩展

下面是你可以在 Pascal 脚本中使用的扩展支持类的列表。

TTimer = Class(TComponent)
  property Enabled: Boolean Read Write;
  property Interval: Cardinal Read Write;
  property OnTimer: TNotifyEvent Read Write;
End;

TMenuBreak = (mbNone, mbBreak, mbBarBreak);
TShortCut = Low(Word)..High(Word);
TMenuChangeEvent = Procedure(Sender: TObject; Rebuild: Boolean) Of Object;

TWMKey = record
  Msg: Cardinal;
  CharCode: Word;
  Unused: Word;
  KeyData: Longint;
  Result: Longint;
end;

TMenuItem = Class(TComponent)
  Procedure Insert(Index: Integer; Item: TMenuItem);
  Procedure Delete(Index: Integer);
  procedure Clear;
  Procedure Click;
  Function IndexOf(Item: TMenuItem): Integer;
  procedure Add(Item: TMenuItem);
  Procedure Remove(Item: TMenuItem);
  Property Command: Word Read;
  Property Handle: Cardinal Read;
  Property Count: Integer Read;
  Property Items[Index: Integer]: TMenuItem Read;
  Property MenuIndex: Integer Read Write;
  Property Parent: TMenuItem Read;
  Property Break: TMenuBreak Read Write;
  Property Caption: String Read Write;
  Property Checked: Boolean Read Write;
  Property Default: Boolean Read Write;
  Property Enabled: Boolean Read Write;
  Property GroupIndex: Byte Read Write;
  Property HelpContext: THelpContext Read Write;
  Property Hint: String Read Write;
  Property RadioItem: Boolean Read Write;
  Property ShortCut: TShortCut Read Write;
  Property Visible: Boolean Read Write;
  Property OnClick: TNotifyEvent Read Write;
End;

TFindItemKind = (fkCommand, fkHandle, fkShortCut);

TMenu = Class(TComponent)
  Function DispatchCommand(ACommand: Word): Boolean;
  Function DispatchPopup(AHandle: Cardinal): Boolean;
  Function FindItem(Value: Integer; Kind: TFindItemKind): TMenuItem;
  Function GetHelpContext(Value: Integer; ByCommand: Boolean): THelpContext;
  Function IsShortCut(Var Message: TWMKey): Boolean;
  Property Handle: Cardinal Read;
  Property WindowHandle: HWND Read Write;
  Property Items: TMenuItem Read;
End;

TPopupAlignment = (paLeft, paRight, paCenter);
TTrackButton = (tbRightButton, tbLeftButton);
TPopupDirection = (pdBottom, pdTop);

TPopupMenu = Class(TMenu)
  Procedure Popup(X, Y: Integer);
  Property PopupComponent: TComponent Read Write;
  property PopupPoint: TPoint read;
  Property Alignment: TPopupAlignment Read Write;
  Property AutoPopup: Boolean Read Write;
  Property HelpContext: THelpContext Read Write;
  property TrackButton: TTrackButton Read Write;
  Property PopupOrientation: TPopupDirection Read Write;
  Property OnPopup: TNotifyEvent Read Write;
End;

TBitmapImage = class(TGraphicControl)
  Property OnClick: TNotifyEvent Read Write; //新增
end;

TNewTranPanel = class(TPanel)
  Property Transparent: Boolean Read Write;
end;

TNewCheckListBox = class(TCustomListBox)
  Function ItemAtPos(Pos: TPoint; Existing: Boolean): Integer; //新增
end;

TPasswordEdit = class(TCustomEdit)
  property Value: String; read write; //新增
end;


与我联系

我汉化的最新版本的 Inno Setup 和其它软件可以在我的网站中下载:
http://www.skygz.com [external link]


Base64DecryptString

语法:

function Base64DecryptString(Const S: String): String;

描述:

解码指定 Base64 字符串，并返回解码后字符串。

注释:

支持 Inno Setup 和 ISPP


Base64EncryptString

语法:

function Base64EncryptString(Const S: String): String;

描述:

编码指定字符串，并返回 Base64 字符串。

注释:

支持 Inno Setup 和 ISPP


Bounds

语法:

function Bounds(ALeft, ATop, AWidth, AHeight: Integer): TRect;

描述:

暂无

注释:

仅支持 Inno Setup


DelEmptyTree

语法:

function DelEmptyTree(Dir: string; DelRoot: Boolean): Boolean;

描述:

删除 Dir 中的所有空目录，DelRoot 表示是否目录本身。

注释:

仅支持 Inno Setup


DisabledAboutMenu

语法:

Procedure DisabledAboutMenu(WizardFormHandle: Integer);

描述:

禁用 “关于安装程序(A)...” 菜单。

注释:

仅支持 Inno Setup

示例:
function InitializeSetup(): Boolean;
begin //在程序未创建关于菜单前设定不要创建
  DisabledAboutMenu(0);
  Result := True;
end;
或者
procedure InitializeWizard();
begin //在程序已创建关于菜单后删除菜单
   DisabledAboutMenu(WizardForm.Handle);
end;


ExitWindowsEx

语法:

function ExitWindowsEx(uFlags, dwReserved: DWORD): Boolean;

描述:

暂无

注释:

仅支持 Inno Setup


GetCRC32OfFile

语法:

function GetCRC32OfFile(Const Filename: String): String;

描述:

获取指定文件的 CRC32 校验值为一个字符串。失败时将显示一个意外。

注释:

支持 Inno Setup 和 ISPP


GetCRC32OfString

语法:

function GetCRC32OfString(Const S: AnsiString): String;

描述:

以字符串形式获取指定字符串的 CRC32 校验值。

注释:

支持 Inno Setup 和 ISPP


GetCRC32OfUnicodeString

语法:

function GetCRC32OfUnicodeString(Const S: String): String;

描述:

以字符串形式获取指定字符串的 CRC32 校验值。

注释:

支持 Inno Setup 和 ISPP


InsertStr

语法:

function InsertStr(SubStr, S: String; Indx: Integer): String;

描述:

在 S[Index] 中插入 SubStr 字符，返回改变的内容。

注释:

仅支持 ISPP


IntToHex

语法:

function IntToHex(Value: Integer; Digits: Integer): string;

描述:

IntToHex 函数转换一个整数到HEX字符串。

注释:

仅支持 Inno Setup


NewItem

语法:

Function NewItem(Const ACaption: String; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word; Const AName: String): TMenuItem;

描述:

暂无

注释:

仅支持 Inno Setup


NewLine

语法:

Function NewLine: TMenuItem;

描述:

暂无

注释:

仅支持 Inno Setup


NewPopupMenu

语法:

Function NewPopupMenu(Owner: TComponent; Const AName: String; Alignment: TPopupAlignment; AutoPopup: Boolean; Items: Array Of TMenuItem): TPopupMenu;

描述:

暂无

注释:

仅支持 Inno Setup


NewSubMenu

语法:

Function NewSubMenu(Const ACaption: String; hCtx: Word; Const AName: String;Items: Array Of TMenuItem): TMenuItem;

描述:

暂无

注释:

仅支持 Inno Setup


Point

语法:

function Point(AX, AY: Integer): TPoint;

描述:

暂无

注释:

仅支持 Inno Setup


ProcessMessagesEvents

语法:

Procedure ProcessMessagesEvents;

描述:

转让控制权，使操作系统能处理其他事件。

注释:

仅支持 Inno Setup


Rect

语法:

function Rect(ALeft, ATop, ARight, ABottom: Integer): TRect;

描述:

暂无

注释:

仅支持 Inno Setup


RightPos

语法:

function RightPos(Const Substr, S: string): Integer;

描述:

在 S 内部，从右向左搜索 Substr，并返回一个在 S 中 Substr 的第一个字符索引整数值。
如果 Substr 未找到，Pos 返回零。

注释:

仅支持 Inno Setup


SetUninstExeIcons

语法:

procedure SetUninstExeIcons(const IcoFileName: String);

描述:

设置卸载程序图标。

注释:

仅支持 Inno Setup

示例:
[Files]
Source: compiler: Examples\MyProg.exe; DestDir: {app}
Source: orange-uninstall.ico; DestDir: {tmp}; Flags: dontcopy noencryption

[Code]
procedure InitializeWizard();
begin
  SetUninstExeIcons('orange-uninstall.ico');
end;


ShortCut

语法:

Function ShortCut(Key: Word; Shift: TShiftState): TShortCut;

描述:

暂无

注释:

仅支持 Inno Setup


ShortCutToKey

语法:

Procedure ShortCutToKey(ShortCut: TShortCut; Var Key: Word; Var Shift: TShiftState);

描述:

暂无

注释:

仅支持 Inno Setup


ShortCutToText

语法:

Function ShortCutToText(ShortCut: TShortCut): String;

描述:

暂无

注释:

仅支持 Inno Setup


StringChange

语法:

function StringChange(S: String; Const FromStr, ToStr: String): String;

描述:

改变所有在 S 中出现的 FromStr 到 ToStr，返回改变的内容。

注释:

仅支持 ISPP


TextToShortCut

语法:

Function TextToShortCut(Text: String): TShortCut;

描述:

暂无

注释:

仅支持 Inno Setup


UpdateIcons

语法:

function UpdateIcons(const FileName, IcoFileName, ResName: String; LangID: Integer): Boolean;

描述:

更新32位可执行文件图标。
ResName参数为空时等于MAINICON; 支持数字格式的资源名称，例如：'101'

注释:

仅支持 Inno Setup

示例:
[Files]
Source: compiler: Examples\MyProg.exe; DestDir: {app}
Source: orange-uninstall.ico; DestDir: {tmp}; Flags: dontcopy noencryption

[Code]
Var
 IconFile: String;

procedure InitializeWizard();
begin
  IconFile := ExpandConstant('{tmp}\orange-uninstall.ico');
  ExtractTemporaryFile('orange-uninstall.ico');
end;

procedure CurPageChanged(CurPageID: Integer);
Begin
  If CurPageID = wpFinished Then UpdateIcons(ExpandConstant('{uninstallexe}'), IconFile, 'MAINICON', 2052);
End;