Kaspersky Internet Security 汉化版
作者:SCHER 日期:2006-05-17
Visual Watermark 汉化版
作者:SCHER 日期:2006-04-26
【转载】反编译 NSIS 的脚本(五)
作者:SCHER 日期:2006-04-22
第二个组件页面对应的 AsscoiationPre、AsscoiationShow 与上面的基本一致,只是要隐藏的区段索引不同而已。
9. 隐藏控件
组件页面第二次显示的时候,有几个控件是隐藏的,用 Resource Hacker 打开 ${NSISDIR}\Contrib\UIs\modern.exe 里面的 104 对话框就是组件显示页面,要隐藏的空间 ID 为 1017 (显示安装类型) 和 1021 (它左边显示的文本) 还有 1023 (磁盘空间显示的控件)。显示和隐藏控件的指令为 ShowWindow ,说明请看这里。
隐藏控件的代码需要加在 AsscoiationShow 函数里。
FindWindow $0 "#32770" "" $HWNDPARENT
获取一个窗口句柄保存在 $0 里
GetDlgItem $1 $0 1017
获取 1017 控件的句柄
ShowWindow $1 ${SW_HIDE}
9. 隐藏控件
组件页面第二次显示的时候,有几个控件是隐藏的,用 Resource Hacker 打开 ${NSISDIR}\Contrib\UIs\modern.exe 里面的 104 对话框就是组件显示页面,要隐藏的空间 ID 为 1017 (显示安装类型) 和 1021 (它左边显示的文本) 还有 1023 (磁盘空间显示的控件)。显示和隐藏控件的指令为 ShowWindow ,说明请看这里。
隐藏控件的代码需要加在 AsscoiationShow 函数里。
FindWindow $0 "#32770" "" $HWNDPARENT
获取一个窗口句柄保存在 $0 里
GetDlgItem $1 $0 1017
获取 1017 控件的句柄
ShowWindow $1 ${SW_HIDE}
【转载】反编译 NSIS 的脚本(四)
作者:SCHER 日期:2006-04-22
调用了 SectionTextReset 函数之后是一个循环,这个循环读取 "$PLUGINSDIR\gaydata.ini" 的 sec0 到 ${SECTION_COMPONENT_END} ,如果某个 sec 读到的值为空,则把该区段隐藏,也就是把区段名设为空值。你可以试试英文原版,刚启动时把 "$PLUGINSDIR\gaydata.ini" 的 sec0 设为空值,到了组件选择页面 Winamp (required) 区段就被隐藏了。
再下来也是一个循环,把 ${SECTION_ASSCOIATION_START} 到 ${SECTION_TOTAL} 的区段隐藏,因为第一个 MUI_PAGE_COMPONENTS 只需要显示 0 到 ${SECTION_COMPONENT_END} 的区段。ComponentShow 函数如下
Function ComponentShow
Push $0
Push $1
StrCpy $1 0
loop:
再下来也是一个循环,把 ${SECTION_ASSCOIATION_START} 到 ${SECTION_TOTAL} 的区段隐藏,因为第一个 MUI_PAGE_COMPONENTS 只需要显示 0 到 ${SECTION_COMPONENT_END} 的区段。ComponentShow 函数如下
Function ComponentShow
Push $0
Push $1
StrCpy $1 0
loop:
Tags: NSIS
【转载】反编译 NSIS 的脚本(三)
作者:SCHER 日期:2006-04-21
8. 组件的隐藏和显示
细心的朋友都看到了脚本里面有两个 !insertmacro MUI_PAGE_COMPONENTS,那么组件选择页面就会出现两次,察看 gaydata.ini 就知道第一次显示的是 sec0 到 sec36,第二次显示的是 sec37 到 sec 47。
关于页面的说明请看这里
每个页面都有三个函数: Pre、Show、Leave,分别是预载入、显示、离开,在 MUI 界面可以用定义的方法来插入函数,比如在 !insertmacro MUI_PAGE_COMPONENTS 前(插入上一个页面之后) 定义一个 MUI_PAGE_CUSTOMFUNCTION_PRE 函数就可以插入一个预载入函数。在本次脚本中在第一个组件选择页面作如下定义
!define MUI_PAGE_CUSTOMFUNCTION_PRE ComponentPre
!define MUI_PAGE_CUSTOMFUNCTION_SHOW ComponentShow
上面定义了 ComponentPre、ComponentShow 函数,当然定义的函数名可以随便起,但一般来说名字都要表达它的含义,便于阅读。
细心的朋友都看到了脚本里面有两个 !insertmacro MUI_PAGE_COMPONENTS,那么组件选择页面就会出现两次,察看 gaydata.ini 就知道第一次显示的是 sec0 到 sec36,第二次显示的是 sec37 到 sec 47。
关于页面的说明请看这里
每个页面都有三个函数: Pre、Show、Leave,分别是预载入、显示、离开,在 MUI 界面可以用定义的方法来插入函数,比如在 !insertmacro MUI_PAGE_COMPONENTS 前(插入上一个页面之后) 定义一个 MUI_PAGE_CUSTOMFUNCTION_PRE 函数就可以插入一个预载入函数。在本次脚本中在第一个组件选择页面作如下定义
!define MUI_PAGE_CUSTOMFUNCTION_PRE ComponentPre
!define MUI_PAGE_CUSTOMFUNCTION_SHOW ComponentShow
上面定义了 ComponentPre、ComponentShow 函数,当然定义的函数名可以随便起,但一般来说名字都要表达它的含义,便于阅读。
【转载】反编译 NSIS 的脚本(二)
作者:SCHER 日期:2006-04-21
3. 完善安装程序属性设置
当然安装程序的属性还要增加一些设置
BrandingText "Nullsoft Install System -- built on ${__DATE__} at ${__TIME__}"
这是设置安装程序个人标志的
InstallDir "$PROGRAMFILES\Winamp"
设置一个默认的安装路径
InstallDirRegKey HKCU "Software\Winamp" ""
优先读取注册表里保存的路径,如果存在就是用注册表保存的路径
当然安装程序的属性还要增加一些设置
BrandingText "Nullsoft Install System -- built on ${__DATE__} at ${__TIME__}"
这是设置安装程序个人标志的
InstallDir "$PROGRAMFILES\Winamp"
设置一个默认的安装路径
InstallDirRegKey HKCU "Software\Winamp" ""
优先读取注册表里保存的路径,如果存在就是用注册表保存的路径
Tags: NSIS
【转载】反编译 NSIS 的脚本(一)
作者:SCHER 日期:2006-04-21
创建 NSIS 脚本的习惯: 创建一个 include 目录,用来保存安装用的文件, .nsi 文件放在 include 的上级目录,再在 include 目录里创建一个 resource,用来保存一些资源文件比如图标、界面位图、自己修改的 UI 等等。
然后分析一下官方的安装程序,嗯嗯,先清空临时文件夹,这是为了为了找东西方便,然后启动安装程序,再到临时目录里找一个 nxxx.tmp 这样的目录,里面有一些释放出来的资源 gaydata.ini、modern-header.bmp、classic256.bmp、modern256.bmp、opt2page.ini、opt3page.ini。那几个位图一看就明白,不用解释,gaydata.ini 呢,里面有从 sec0 到 sec47 的定义,所以我们可以确定一共有 47 个区段,而且区段的名称是根据 gaydata.ini 来确定的,如何知道是根据 gaydata.ini 来确定的 的呢,你在安装程序刚启动的时候(刚显示许可页面的时候)找到临时的那个目录(也就是 NSIS 里的 $PLUGINSDIR 目录),把一个区段名称改一下,比如把“Winamp (required)”改为 aaa,等进入组件选择页面的时候第一个就是 aaa 了,而如果把“Winamp (required)”清空的话,第一个区段就不见了。 opt2page.ini、opt3page.ini 分别是最后两个页面用来选择连接方式和外观的。分析后就可以动手了……
1.建立基本的结构
首先在脚本头部定义一些版本号等值,比如
!define VERSION "5.05"
!define VERSION_NUM "505"
这样版本号变的时候在脚本头部改一下就行了,不用在脚本的每个地方都改
然后分析一下官方的安装程序,嗯嗯,先清空临时文件夹,这是为了为了找东西方便,然后启动安装程序,再到临时目录里找一个 nxxx.tmp 这样的目录,里面有一些释放出来的资源 gaydata.ini、modern-header.bmp、classic256.bmp、modern256.bmp、opt2page.ini、opt3page.ini。那几个位图一看就明白,不用解释,gaydata.ini 呢,里面有从 sec0 到 sec47 的定义,所以我们可以确定一共有 47 个区段,而且区段的名称是根据 gaydata.ini 来确定的,如何知道是根据 gaydata.ini 来确定的 的呢,你在安装程序刚启动的时候(刚显示许可页面的时候)找到临时的那个目录(也就是 NSIS 里的 $PLUGINSDIR 目录),把一个区段名称改一下,比如把“Winamp (required)”改为 aaa,等进入组件选择页面的时候第一个就是 aaa 了,而如果把“Winamp (required)”清空的话,第一个区段就不见了。 opt2page.ini、opt3page.ini 分别是最后两个页面用来选择连接方式和外观的。分析后就可以动手了……
1.建立基本的结构
首先在脚本头部定义一些版本号等值,比如
!define VERSION "5.05"
!define VERSION_NUM "505"
这样版本号变的时候在脚本头部改一下就行了,不用在脚本的每个地方都改
Tags: NSIS
【转载】取得winamp的NSIS教本的教程
作者:SCHER 日期:2006-04-21
创建 NSIS 脚本的习惯: 创建一个 include 目录,用来保存安装用的文件, .nsi 文件放在 include 的上级目录,再在 include 目录里创建一个 resource,用来保存一些资源文件比如图标、界面位图、自己修改的 UI 等等。
然后分析一下官方的安装程序,嗯嗯,先清空临时文件夹,这是为了为了找东西方便,然后启动安装程序,再到临时目录里找一个 nxxx.tmp 这样的目录,里面有一些释放出来的资源 gaydata.ini、modern-header.bmp、classic256.bmp、modern256.bmp、opt2page.ini、opt3page.ini。那几个位图一看就明白,不用解释,gaydata.ini 呢,里面有从 sec0 到 sec47 的定义,所以我们可以确定一共有 47 个区段,而且区段的名称是根据 gaydata.ini 来确定的,如何知道是根据 gaydata.ini 来确定的 的呢,你在安装程序刚启动的时候(刚显示许可页面的时候)找到临时的那个目录(也就是 NSIS 里的 $PLUGINSDIR 目录),把一个区段名称改一下,比如把“Winamp (required)”改为 aaa,等进入组件选择页面的时候第一个就是 aaa 了,而如果把“Winamp (required)”清空的话,第一个区段就不见了。 opt2page.ini、opt3page.ini 分别是最后两个页面用来选择连接方式和外观的。分析后就可以动手了……
1.建立基本的结构
首先在脚本头部定义一些版本号等值,比如
!define VERSION "5.05"
然后分析一下官方的安装程序,嗯嗯,先清空临时文件夹,这是为了为了找东西方便,然后启动安装程序,再到临时目录里找一个 nxxx.tmp 这样的目录,里面有一些释放出来的资源 gaydata.ini、modern-header.bmp、classic256.bmp、modern256.bmp、opt2page.ini、opt3page.ini。那几个位图一看就明白,不用解释,gaydata.ini 呢,里面有从 sec0 到 sec47 的定义,所以我们可以确定一共有 47 个区段,而且区段的名称是根据 gaydata.ini 来确定的,如何知道是根据 gaydata.ini 来确定的 的呢,你在安装程序刚启动的时候(刚显示许可页面的时候)找到临时的那个目录(也就是 NSIS 里的 $PLUGINSDIR 目录),把一个区段名称改一下,比如把“Winamp (required)”改为 aaa,等进入组件选择页面的时候第一个就是 aaa 了,而如果把“Winamp (required)”清空的话,第一个区段就不见了。 opt2page.ini、opt3page.ini 分别是最后两个页面用来选择连接方式和外观的。分析后就可以动手了……
1.建立基本的结构
首先在脚本头部定义一些版本号等值,比如
!define VERSION "5.05"
Tags: NSIS






