注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

月伴流星的博客

 
 
 

日志

 
 

编写 NSIS 的安装脚本(一)  

2009-10-11 13:50:21|  分类: NSIS 封装技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
前言:
如果你是第一次制作安装程序,建议你使用 Setup Factory CreateInstall
因为这两个安装程序是图形接口非常的适合初学者使用。笔者一开始也不会使用
NSIS
脚本而是先从上面两套软件着手,了解安装程序的流程与基础才进而使用
Nullsoft Installation System
来制作安装程序。
同一个程序用这三套软件以最精简的流程制作出来的安装程序其大小如下

-----------------------------------------------
原始程序
            248 KB
Setup Factory
         488 KB
CreateInstall
          156 KB
Nullsoft Installation System
  134 KB
-----------------------------------------------

我本来是想直接用 CreateInstall 来制作安装程序就好因为它是图形接口简单
作出来的档案也很小。但是他作出来的安装程序在繁体中文系统底下有一个BUG
让我非放弃他不可。就是建立快捷方式在「开始」菜单 -> 程序集
里他会因为
BIG5
里面的 "" 含有 "\" 而建立成
「开始」-> 能表 -> 程序集
少了一个
字作出来的快捷方式也不能用 >_<" 想办法跟作者联络但是我英文实在很破.......
前言到此结束底下开始是教学了

==========================================================

本教学以 KYO 网友所著的 ShellInfoTip 为例子,因为它需要做到下列三项

1.
注册 DLL 档案
2.
注册 REG 登录档案
3.
WIN 路径里放置 STPlugin.ini

我先在这里简单的描述所需用到的参数在文章结尾处我会放上 ShellInfoTip.nsi
脚本档案我有写上详细的批注,这里以提出所需要的三项功能作为主要介绍。有
不知道不了解不清楚或我没提及的参数,你可以查找 NSIS 的使用说明书他写的
非常详细。


1.
注册 DLL 档案
RegDLL "$INSTDIR\ShellTip4Rar.dll"

其中 $INSTDIR 是代表你安装的目录
如:你是装在 c:\emp\ShellInfoTip 底下,他的 $INSTDIR 就是这个目录会随着你的安装路径而变动。


2.
注册 REG 登录档案
WriteRegStr HKCR ".rar\ShellEx\{00021500-0000-0000-c000-000000000046}" "" "{C34C25BE-9B2B-4A50-9D97-2658E0D8796B}"
WriteRegStr HKCR ".exe\ShellEx\{00021500-0000-0000-c000-000000000046}" "" "{C34C25BE-9B2B-4A50-9D97-2658E0D8796B}"
WriteRegStr HKCR ".001\ShellEx\{00021500-0000-0000-c000-000000000046}" "" "{C34C25BE-9B2B-4A50-9D97-2658E0D8796B}"


WriteRegStr
是写入类型为 REG_SZ 的数值
HKCR
HKEY_CLASSES_ROOT 的缩写
原始程序所要注册的登录档内容如下
-----------------------------------------------------------------------
REGEDIT4

[HKEY_CLASSES_ROOT\.rar\ShellEx]

[HKEY_CLASSES_ROOT\.rar\ShellEx\{00021500-0000-0000-c000-000000000046}]
@="{C34C25BE-9B2B-4A50-9D97-2658E0D8796B}"

[HKEY_CLASSES_ROOT\.exe\ShellEx]

[HKEY_CLASSES_ROOT\.exe\ShellEx\{00021500-0000-0000-c000-000000000046}]
@="{C34C25BE-9B2B-4A50-9D97-2658E0D8796B}"

[HKEY_CLASSES_ROOT\.001\ShellEx]

[HKEY_CLASSES_ROOT\.001\ShellEx\{00021500-0000-0000-c000-000000000046}]
@="{C34C25BE-9B2B-4A50-9D97-2658E0D8796B}"
-----------------------------------------------------------------------


3.
WIN 路径里放置 STPlugin.ini
WriteINIStr "$WINDIR\STPlugin.ini" "Plugin" "Plugin1" "$INSTDIR\rar_txt.dll"

$WINDIR
Windows 系统的目录
WriteINIStr
是写入 INI 档案,按照顺序写入 ini 文件名称、区域名称、变量名称、数值。
原始程序的 STPlugin.ini 档内容如下
-------------------------------------------------
[Plugin]
Plugin1=
安装路径名\rar_txt.dll
-------------------------------------------------


三项主要的功能介绍就到此结束了底下开始是ShellInfoTip.nsi脚本档案的内容


==========================================================
; ShellInfoTip.nsi
;
本安装程序由 DC 编写制作
;
Ω奥米加空间
http://omega.idv.tw/kdb120/
;

;
宣告软件名称,后面可以利用 ${NAME} 调用这个名字
!define NAME "ShellInfoTip"

;
设定字型
SetFont
新细明体 9

;
使用 WindowsXP 视觉样式
XPstyle on

;
安装窗口的标题名称
Caption /LANG=1028 "
安装 Winrar Shell Info Tip 功能"

;
替换预设的按钮文字
MiscButtonText /LANG=1028 "<
上一步" "下一步 >" "取消" "关闭"

;
替换预设的按钮文字
InstallButtonText /LANG=1028 "
安装"

;
替换预设的按钮文字
UninstallButtonText /LANG=1028 "
反安装"

;
替换反安装程序的文字
DirText /LANG=1028 "
欢迎您安装 Shell Info Tip 这是个自由软件版权归原作者 KYO 所有。此安装程序由Ω奥米加空间
坛主 DC 提供制作。" "选择欲安装 ${NAME} 的目录:" "浏览..."

;
替换反安装程序的文字
UninstallText /LANG=1028 "
现在将从你的系统中反安装 ${NAME} 。如果你触发了 ${NAME} 的功能 ShellTip4Rar.dll 动态连结文件必须重开机之后才可以被删除" "反安装目录:"

;
替换反安装程序标题的文字
UninstallCaption /LANG=1028 "
反安装 ${NAME}"

;
替换反安装程序的文字
DetailsButtonText /LANG=1028 "
显示详细过程"

;
替换反安装按钮的文字
UninstallButtonText /LANG=1028 "
反安装"

;
反安装程序显示方式
预设是隐藏
ShowUninstDetails hide

;
替换空间的文字
SpaceTexts /LANG=1028 "
所需的空间 " "可用的空间 "

;
这个安装程序的名称
Name "ShellInfoTip"

;
输出制作完成的安装程序档案
OutFile "ShellInfoTip.exe"

;
预设的安装程序目录在 Program Files
InstallDir $PROGRAMFILES\${NAME}


;
底下开始是安装程序所要执行的
Section "Install"

;
设定输出的路径在安装程序的目录
SetOutPath $INSTDIR

;
贴上你所要包装在安装程序里的档案
File "C:\Files\rar_txt.dll"
File "C:\Files\ShellTip4Rar.dll"

;
注册 DLL 档案
RegDLL "$INSTDIR\ShellTip4Rar.dll"

;
写入欲注册的值在 HKEY_CLASSES_ROOT 里类型为 REG_SZ
WriteRegStr HKCR ".rar\ShellEx\{00021500-0000-0000-c000-000000000046}" "" "{C34C25BE-9B2B-4A50-9D97-2658E0D8796B}"
WriteRegStr HKCR ".exe\ShellEx\{00021500-0000-0000-c000-000000000046}" "" "{C34C25BE-9B2B-4A50-9D97-2658E0D8796B}"
WriteRegStr HKCR ".001\ShellEx\{00021500-0000-0000-c000-000000000046}" "" "{C34C25BE-9B2B-4A50-9D97-2658E0D8796B}"

;
写入 INI
WriteINIStr "$WINDIR\STPlugin.ini" "Plugin" "Plugin1" "$INSTDIR\rar_txt.dll"

;
在程序集里建立反安装程序的快捷方式
CreateDirectory "$SMPROGRAMS\${NAME}"
CreateShortCut "$SMPROGRAMS\${NAME}\
反安装 ${NAME}.lnk" \
        "$INSTDIR\uninst.exe"

;
写入建立反安装程序要跟上面所连结的档名一样
WriteUninstaller "$INSTDIR\uninst.exe"

SectionEnd
;
安装程序过程到此结束


;
反安装程序内容
Section "Uninstall"

;
循环删除档案直到删除数据夹
UnRegDLL "$INSTDIR\ShellTip4Rar.dll"
Delete "$INSTDIR\*.*"
Delete "$WINDIR\STPlugin.ini"
Delete "$SMPROGRAMS\${NAME}\*.*"
RMDir "$SMPROGRAMS\${NAME}"
RMDir "$INSTDIR"

;
写入欲删除注册的值
DeleteRegKey HKCR ".rar\ShellEx"
DeleteRegKey HKCR ".exe\ShellEx"
DeleteRegKey HKCR ".001\ShellEx"
SectionEnd
;
反安装程序过程到此结束

; eof
  评论这张
 
阅读(465)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017