脚本:Shell Info Tip
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 编写制作 ;宣告软件名称,后面可以利用 ${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