论坛风格切换切换到宽版
  • 23750阅读
  • 165回复

InnoSetup编译器功能增强 (build 091128) [复制链接]

上一主题 下一主题
离线restools
 

发帖
2848
金钱
1430
威望
143
只看楼主 倒序阅读 0 发表于: 2005-09-25
下载地址:
适用于 5.1.5 版本 功能扩展到 build 051002
http://restools.hanzify.org/inno/InnoCompiler051002.zip

适用于 5.2.3 版本 功能扩展到 build 090506
http://restools.hanzify.org/inno/InnoCompiler090506.zip

适用于 5.2.4 - 5.3.6 版本 功能扩展到 build 091128
http://restools.hanzify.org/inno/InnoCompi...91128(7zip).zip

使用方法:直接下载解压缩覆盖同版本的 Inno Setup 就可以了。

QUOTE
build 050925
1. 基于 Inno Setup 5.1.5 重新编译。
2. 在编译级别汉化本程序,汉化资源使用了莫名的汉化资源,在此感谢莫名提供汉化资源,减少了本人不少的工作量。
3. 稍微修改了调试时的显示方式。跟 Delphi 更加的接近。
4. 增加部分的关键字,参数的高亮显示,跟 ISTOOL 相同。
5. 增加复制为 UBB 代码的功能,方便论坛发帖使用。
6. 为方便编程控制事件,把里面部分控件换为 Delphi 5.0 有的更高级的控件。


build 051002
1. 修正向导中的一个BUG。(汉化时产生)
2. 加入代码模板功能。可以快速输入 INNO 一些常用代码,可自己添加。
(例如: 你有一些经常使用的代码,你可以为它们建立自己的代号,然后就很容易快速输入该段代码)




build 080409
只是 Delphi 7 重新编译了一次,根据 Inno Setup 5.2.3 版本更新,增强功能一样。以后有时间再改。

build 080428
1.添加一个代码分析视图,所有区段分析。code 段是重点,因为实现自动完成代码功能的前期工作都在这个视图中实现了,包括每个 procedure 和 function 的局部变量也被枚举了出来,只是没有在视图中显示。
2.修正中文显示问题。
3.改善一些界面上的显示。


build 080502
1.添加书签标记。
2.开放了大部分在 VNISEdit 中同样存在的编辑器选项。
3.显示缩进竖线,方便代码阅读。
4.修正部分编辑器的显示问题。

附图:

build 080503
1.添加列块缩进处理,Tab 和 Shift+Tab 快捷键。
2.添加注释选择文本功能,“;”和“/”控制,会自动检测所属区段的注释是用“;”还是“/”符号。只需要按“;”或者“/”键即可按照所属区段所使用的注释符号注释大量文本。
2.开放了编辑器语法颜色选项。
3.添加另存为 HTML 格式。并且开放 UBB 和 HTML 复制的几个选项。

附图:
图像

build 080508
1.添加对 set of(集合) 和 array of(数据) 结构的代码分析。
2.开放视图的高级提示,可显示过程函数明细,例如局部变量。(菜单中打开此功能)

图像
3.添加对 Bracket 的支持。包括 begin, end, (, ),的对应。如果你用过 Visaul Assist X ,就知道这个功能对于代码编写有多大的作用。颜色设置里面也可以设置该功能的颜色。错误配对也会显示红色。

build 080511
1.完善 Type, var 代码结构分析。
2.添加 try end 配对显示。
3.恢复功能:拖放文件,ESC 关闭查找替换窗口。


build 080513
1.修正配对显示在自动换行下的显示问题。
2.添加 Type , var 中关于 function 和 procedure 的定义。至此,基本完成了 Inno Setup 所有我知道的定义类型的视图分析,如果还有未能正确分析的请告诉我。
3.添加 HotLink 实现技术,但是目前并无实际效用,因为并未加诸应用。以后将会用在变量,函数,类型,过程等等的跳转。同样能够进行颜色设定。(功能键:Ctrl + 鼠标左键点击,类似 Delphi)
4.修正编辑器粘贴时的显示问题。


build 080519
1.修正显示、操作问题,尤其在 Win98 下测试发现的问题一并处理。
2.修正新版本 SynEdit 控件的 BUG,包括语法高亮,覆盖编辑,撤销重做问题。
3.添加一页,内部支持函数,过程,类,的声明页面,不可编辑,只是以后用来作为脚本跳转时源头,自动完成列表提取源头。
4.修正多 code 段时的处理方法。


build 080525
1.修正代码模版的执行方法,撤消重做无论在任何编辑器选项下都能正常使用了。并且增加模版每一项的描述。所以之前的模版文件在这版本中不能使用,需要替换掉。
2.修正双击选择中文的问题。
3.更改除 code 段外所有区段代码的分析算法,力求更高效和更完整的分析,以备以后有需要的时候使用,可能以后会拿 Setup 段来实现 ISTool 的功能,不过不会扩展到所有区段,这部分是无责任烂尾,只是用来实验 ISTool 如何实现功能而已。开放了所有区段的高级视图提示。
4.改善切换页面时的效率问题。
5.经测试后,之前版本存在严重内存泄漏问题,这版本基本去除已发现的内存泄漏,不过线程处理很容易造成内存偶尔泄漏,所以接下来需要长时间的压力测试。就目前来说未再发现泄漏。


build 080530
1.修正一个视图显示的问题。
2.修正一个 begin end 配对的显示问题。
3.增加一个当前光标竖线颜色设置的选项,对于我自己来说,经常编写多层 begin end 代码,所以我最终还是忍受不住太多的竖线仍然让我看得眼花缭乱,必须把我想知道的竖线加深颜色以便查看。
4.模板菜单中显示模板的描述,可方便初期使用时知道那些缩写究竟代表什么代码。
5.修正批量注释时的处理方法。
6.修正多处视图错误分析。
7.自动参数提示,包括内部支持过程函数和当前编辑脚本中的过程函数的参数提示。至于“#include”的包含文件方式,以后会想办法解决。


build 080608
1.实现了近乎完美的弹出参数提示算法,已经能在任何输入下(包括中间夹杂了,字符串,注释,内含括号的计算公式,函数中再包含函数等等的影响),都能正确标注出当前的要输入的第几项参数,同时也允许在换行输入下继续提示参数而不再消失。
2.修正编辑器的中文显示问题。
3.增加 Inno Setup 内部支持类成员函数和过程的参数弹出提示,CreateOleObject 创建的 Com 对象除外,至此,基本建立了一个较为完整的检索类声明的分析体系,想来接下来的弹出列表应该问题不大了,with do 结构以后想办法处理。
4.在内部支持页中补全了所有支持的类型,变量,常量声明,部分在帮助中并未提及。
5.修正常量声明语法分析和部分视图分析的问题。


build 080609
1.修正在无语法高亮时的中文显示问题。
2.增加内部支持类所属的属性,过程,函数的自动完成列表。


build 080618
1.修正参数提示弹出算法。
2.修正属性列表显示问题,弹出算法,支持 function 返回类的弹出列表,例如
CreateInputQueryPage(AfterID,ACaption,ADescription,ASubCaption).Description
这样的返回类弹出列表,支持 function 和 Class 混合语法分析弹出属性列表和函数参数提示,例如这种
function_return_class().property_return_class.property_function() 。
所以把 Mainform 和 WizardForm 声明修正为 function。
3.增加“function UninstallProgressForm: TUninstallProgressForm;”声明,使 UninstallProgressForm 能正常使用参数弹出和属性列表弹出。
4.增加弹出列表排序功能。


build 080628
1.修正函数参数弹出算法。同时增加快捷键 Ctrl+Shift+Space 激活参数提示。
2.当行后无字符时,当输入“(”的时候,同时检测到之前的标识符属于支持函数,将会自动补充一个“)”字符。
3.增加 #include 包含文件中的代码分析。支持多层包含文件代码分析,例如在一个包含文件中又包含另外一个包含文件。包含文件被修改后,重新返回该编辑器编辑的时候也会自动更新代码分析,当检测到包含文件循环崁套或者多次包含都只会载入一次以避免进入死循环。


build 080724
1.当输入“@”符号时,提供当前声明的 proc 和 func 列表以供选择。
2.调整在 proc 和 func 定义错误时的局部变量和全局变量的判断。尽可能的避免局部变量的定义变成了全局变量定义。
3.修正参数弹出算法,调整参数显示算法,当太多参数的时候,会自动根据屏幕宽度调整参数换行。
4.增加一个打开当前脚本文件夹的菜单。
5.修正最后一个 function 段的分析。
6.修正 Chr 和 ord 的声明分析。
7.增加 record 类型的成员弹出列表。
8.允许列表弹出设置弹出延迟时间。
9.增加编辑器一些选项。例如设置成较为女性化的编辑器底色。


build 080921
仍然没有增加新的功能,只是修正大量错误。这里不一一细述了。
稍微调整的就是能自动分辨增强版编译器,以使用新的声明。


build 090110
1.with do 结构分析。支持多层 with do 结构分析。
2.修正多处参数,属性列表弹出代码分析错误算法,更加精准。
3.改善 Vista 下的界面显示效果。

图像

build 090115
1.with do 结构分析: 能够分析诸如 with TButton.Create(WizardForm) do 这样的结构
2.增加 2 种关键字匹配方式,务求更快捷的输入代码。
图像
3.改善 Vista 下的界面显示效果。


build 090215
1.改善部分语法分析,不过目前来说仍然有不太完善的地方,慢慢改。
2.增加所有标识符的弹出列表。编辑器选项中可以设置弹出延迟时间。
图像
3.如果上面的弹出列表显得太厌烦可以关闭自动弹出,已经增加了快捷键 Ctrl+J 弹出列表。
4.高亮当前行。选项可以设置是否高亮。
5.补充完整一些常量,类型声明。


build 090308
1.修正部分语法分析算法,处理 with do 结构内的所有标识符弹出列表算法。
2.添加窗口菜单以方便切换到已经打开的脚本。
3.解决了进程间的通信方式问题,将会自动检索已经打开的脚本,不会重复打开。
(这也是代码跳转,乃至脚本间代码跳转的前期工作)
4.添加支持 FullVCL 编译版本的编译器内核的所有弹出列表的处理。


build 090319
1.修正部分语法分析算法。
2.修正几处列表弹出算法。
3.窗口激活,窗口切换。窗口重排。
4.代码跳转算法,可以遍及整个 Code 段的代码跳转。包括,函数,参数,局部变量,全局
变量,记录,类型,集合,控件类、属性、函数。包含文件的脚本间的代码跳转也一并实现。
(使用方法:Ctrl + Mouse Click)

图像

build 090505
1.修正部分语法分析算法。
2.修正几处列表自动完成算法。
3.改善一些界面效果。
4.处理代码段所有标识符的提示,分为调试状态和非调试状态,在非调试状态下,提示同样遍及整个 Code 段的代码提示。包括,函数,参数,局部变量,全局变量,记录,类型,集合,控件类、属性、函数。

图像

build 090506
紧急修正一个严重错误。

build 090824
1. 修正多处语法高亮显示算法,能更好的以多种颜色显示代码。
2. 修正多处自动完成代码语法分析算法,更有效率,尽可能少的影响代码录入的速度。
3. 分析了 ISPP 预处理代码的语法分析,在视图中显示出来。(暂时还不能在预处理代码中实现代码自动完成功能)
4. procedure 可分列 External 类声明。
5. 同步更新至 5.3.4 代码。


build 091007
1. 修正多处语法高亮显示算法。
2. 修正 ISPP 分析算法。
Unicode 版本更新:
同步所有 ANSI 版本的功能,但是由于自动换行会影响程序打开速度,所以禁止了默认使用自动换行,但是换行功能仍然保留。


build 091103
1.增加断开调试器的功能。
2.工具菜单下增加插入颜色功能,同时为颜色对话框提供颜色拾取功能。
图像
3.工具菜单下增加所有内部支持事件的定位功能。
4.增加当前标识符的高亮显示。
图像
5.修正多处语法高亮显示的问题。
6.增加直接打开生成安装程序所在目录的功能。


build 091128
1. 修正多处语法高亮显示算法。
2. 编辑器文字显示针对非等宽但视觉上同样等宽的字体(例如:宋体,新宋体等等)提供紧凑显示模式。

图像


附 UBB 显示例子:
QUOTE( Example3.iss @ 2005-9-25 16:54:05 )
; -- Example3.iss --
; 与 Example1.iss 相同,但同时也创建一些注册表条目。

; 查阅帮助文档获取创建 .ISS 脚本文件的详细信息!

[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

[Icons]
Name: "{group}我的程序"; Filename: "{app}MyProg.exe"

; 注意: 许多应用程序不需要预先创建注册表条目,如果你不知道
; 注册表或如果你需要使用它,那么可能你不需要 [Registry] 段。

[Registry]
; 启动 HKEY_CURRENT_USER 和 HKEY_LOCAL_MACHINE 下的
; “SoftwareMy Company我的程序”键。如果这里面没
; 有内容,该标记告诉它在卸载时总是删除“我的程序”键。
Root: HKCU; Subkey: "SoftwareMy Company"; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: "SoftwareMy Company我的程序"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SoftwareMy Company"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "SoftwareMy Company我的程序"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SoftwareMy Company我的程序Settings"; ValueType: string; ValueName: "Path"; ValueData: "{app}"


PS: 以后的修改方向是把 [code] 段的代码编写变得更容易,但是不会费时间实现 ISTOOL 一样的功能。因为实在是太花时间了,一般如果动用到这个编译器来编辑脚本,都是因为要调试 [code] 段代码的。
我的BLOG:   http://restools.hanzify.org (Inno Setup 增强版, 插件 发布站点)
离线JunJun

发帖
438
金钱
180
威望
18
只看该作者 1 发表于: 2005-09-25
沙发`阿信厉害!顶了`
下了试用去
离线leyan22

发帖
498
金钱
0
威望
0
只看该作者 2 发表于: 2005-09-25
来个板凳 看起来不错
图像
离线restools

发帖
2848
金钱
1430
威望
143
只看该作者 3 发表于: 2005-09-25
回复 JunJun:
压缩率 NSIS 和 INNO 都可用 LZMA(7z 算法),INNO 大是因为它的文件头大。打包的压缩率大家是一样的。
至于减少文件头,没办法。
因为INNO的作者已经为这方面做出努力,文件头是用 Delphi 2 编译的,对于 VCL 来说已经相当的小了,但是因为用的始终是 VCL 控件,所以大小是降不下来的。

但是它仍然有优势的,打包一个很大的文件的时候,文件头大小的差别就显得不重要了。但是 INNO 可以分卷打包,而 NSIS 却不可以,所以有时候 INNO 做起这项工作来是比较简单的。
我的BLOG:   http://restools.hanzify.org (Inno Setup 增强版, 插件 发布站点)
离线HYQ9

发帖
1519
金钱
190
威望
19
只看该作者 4 发表于: 2005-09-25
阿信MM又出新东西了,强烈支持!
<b>中国人,用中文,做中文程序!</b><br />访问我的主页:<a href="http://hyq9.blogcup.com" target="_blank"><!--coloro:green--><span style="color:green"><!--/coloro-->http://hyq9.blogcup.com<!--colorc--></span><!--/colorc--></a><br />访问我的Blog:<a href="http://vip.hanzify.org/hyq9/blog/default.asp" target="_blank"><!--coloro:green--><span style="color:green"><!--/coloro-->http://vip.hanzify.org/hyq9/blog/default.asp<!--colorc--></span><!--/colorc--></a><br />查看我的作品:<a href="http://www.hanzify.org/index.php?Go=Search::List&Type=all&Key=HYQ" target="_blank"><!--coloro:green--><span style="color:green"><!--/coloro-->我的部分汉化作品<!--colorc--></span><!--/colorc--> </a>
离线JunJun

发帖
438
金钱
180
威望
18
只看该作者 5 发表于: 2005-09-25
QUOTE(restools @ 2005年09月25日 17时05分)
回复 JunJun:
压缩率 NSIS 和 INNO 都可用 LZMA(7z 算法),INNO 大是因为它的文件头大。打包的压缩率大家是一样的。
至于减少文件头,没办法。
因为INNO的作者已经为这方面做出努力,文件头是用 Delphi 2 编译的,对于 VCL 来说已经相当的小了,但是因为用的始终是 VCL 控件,所以大小是降不下来的。

但是它仍然有优势的,打包一个很大的文件的时候,文件头大小的差别就显得不重要了。但是 INNO 可以分卷打包,而 NSIS 却不可以,所以有时候 INNO 做起这项工作来是比较简单的。
[snapback]243743[/snapback]


哦~懂了~谢谢指点
离线夜凉如水

发帖
176
金钱
70
威望
7
只看该作者 6 发表于: 2005-09-25
先感谢你 后测试 去!!!
离线夜凉如水

发帖
176
金钱
70
威望
7
只看该作者 7 发表于: 2005-09-25
呵呵 阿信现在越来越.... 测试了 OK 在次感谢你了 @!!
离线duskymagus
发帖
178
金钱
100
威望
10
只看该作者 8 发表于: 2005-09-25
介个介个-。-

下载就好了。。。。阿信的持续创作热情偶已经习惯了。。。
已经得到好多surprise了
离线zhansh

发帖
1058
金钱
10
威望
1
只看该作者 9 发表于: 2005-09-25
感谢 restools ,这么快又出新东西了,持续崇拜 ing。。。。。。

我按默认向导创建的脚本语言 Name 这里有点小问题,乱码了,编译出错:
QUOTE
[Languages]
Name: "简?; MessagesFile: "compiler:Default.isl"