使用NSIS制作安装文件
1.前言
如果你是第一次制作安装程序,建议你使用 Setup Factory 或 CreateInstall,因为这两个安装程序是图形接口非常的适合初学者使用。笔者一开始也不会使用NSIS写脚本,而是先从上面两套软件着手,了解安装程序的流程与基础才进而使用Nullsoft Installation System 来制作安装程序。
同一个程序用这三套软件以最精简的流程制作出来的安装程序其大小如下
-----------------------------------------------
原始程序 248 KB
Setup Factory 488 KB
CreateInstall 156 KB
Nullsoft Installation System 134 KB
-----------------------------------------------
原始程序 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
2.注册 REG 登录档案
3.在 WIN 路径里放置 STPlugin.ini
我先在这里简单的描述所需用到的参数在文章结尾处我会放上 ShellInfoTip.nsi,脚本档案我有写上详细的批注,这里以提出所需要的三项功能作为主要介绍。有不知道不了解不清楚或
我没提及的参数,你可以查 NSIS 的使用说明书他写的非常详细。
1.注册 DLL 档案
RegDLL "$INSTDIR\ShellTip4Rar.dll"
RegDLL "$INSTDIR\ShellTip4Rar.dll"
其中mui框架如何使用 $INSTDIR 是代表你安装的目录
如:你是装在 c:\emp\ShellInfoTip 底下,他的 $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 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 的缩写
HKCR 是 HKEY_CLASSES_ROOT 的缩写
原始程序所要注册的登录档内容如下
-----------------------------------------------------------------------
REGEDIT4
-----------------------------------------------------------------------
REGEDIT4
[HKEY_CLASSES_ROOT\.rar\ShellEx]
[HKEY_CLASSES_ROOT\.rar\ShellEx\{ 00021500-0000-0000-c000-000000000046 }]
@="{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }"
@="{ 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 }"
@="{ 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 }"
-----------------------------------------------------------------------
@="{ C34C25BE-9B2B-4A50-9D97-2658E0D8796B }"
-----------------------------------------------------------------------
3.在 WIN 路径里放置 STPlugin.ini
WriteINIStr "$WINDIR\STPlugin.ini" "Plugin" "Plugin1" "$INSTDIR\rar_txt.dll"
WriteINIStr "$WINDIR\STPlugin.ini" "Plugin" "Plugin1" "$INSTDIR\rar_txt.dll"
$WINDIR 是 Windows 系统的目录
WriteINIStr 是写入 INI 档案,按照顺序写入 ini 的文件名称、区域名称、变量名称、数值。
WriteINIStr 是写入 INI 档案,按照顺序写入 ini 的文件名称、区域名称、变量名称、数值。
原始程序的 STPlugin.ini 档内容如下
-------------------------------------------------
[Plugin]
Plugin1=安装路径名\rar_txt.dll
-------------------------------------------------
-------------------------------------------------
[Plugin]
Plugin1=安装路径名\rar_txt.dll
-------------------------------------------------
三项主要的功能介绍就到此结束了底下开始是ShellInfoTip.nsi脚本档案的内容
==========================================================
; ShellInfoTip.nsi
; 本安装程序由 DC 编写制作
;
; ShellInfoTip.nsi
; 本安装程序由 DC 编写制作
;
;宣告软件名称,后面可以利用 ${ NAME } 调用这个名字
!define NAME "ShellInfoTip"
!define NAME "ShellInfoTip"
;设定字型
SetFont 宋体 9
SetFont 宋体 9
;使用 WindowsXP 视觉样式
XPstyle on
XPstyle on
;安装窗口的标题名称
Caption /LANG=2052 "安装 Winrar Shell Info Tip 功能"
Caption /LANG=2052 "安装 Winrar Shell Info Tip 功能"
;替换预设的按钮文字
MiscButtonText /LANG=2052 "< 上一步" "下一步 >" "取消" "关闭"
;替换预设的按钮文字
InstallButtonText /LANG=2052 "安装"
InstallButtonText /LANG=2052 "安装"
;替换预设的按钮文字
UninstallButtonText /LANG=2052 "反安装"
UninstallButtonText /LANG=2052 "反安装"
;替换反安装程序的文字
DirText /LANG=2052 "欢迎您安装 Shell Info Tip 这是个自由软件版权归原作者 KYO 所有。此安装程序由∮Ω奥米加空间∮ 坛主 DC 提供制作。" "请选择欲安装 ${ NAME } 的目录:" "浏览..."
DirText /LANG=2052 "欢迎您安装 Shell Info Tip 这是个自由软件版权归原作者 KYO 所有。此安装程序由∮Ω奥米加空间∮ 坛主 DC 提供制作。" "请选择欲安装 ${ NAME } 的目录:" "浏览..."
;替换反安装程序的文字
UninstallText /LANG=2052 "现在将从你的系统中反安装 ${ NAME } 。如果你触发了 ${ NAME } 的功能 ShellTip4Rar.dll 动态连结文件必须重开机之后才可以被删除。" "反安装目录:"
UninstallText /LANG=2052 "现在将从你的系统中反安装 ${ NAME } 。如果你触发了 ${ NAME } 的功能 ShellTip4Rar.dll 动态连结文件必须重开机之后才可以被删除。" "反安装目录:"
;
替换反安装程序标题的文字
UninstallCaption /LANG=2052 "反安装 ${ NAME }"
UninstallCaption /LANG=2052 "反安装 ${ NAME }"
;替换反安装程序的文字
DetailsButtonText /LANG=2052 "显示详细过程"
DetailsButtonText /LANG=2052 "显示详细过程"
;替换反安装按钮的文字
UninstallButtonText /LANG=2052 "反安装"
UninstallButtonText /LANG=2052 "反安装"
;反安装程序显示方式 预设是隐藏
ShowUninstDetails hide
ShowUninstDetails hide
;替换空间的文字
SpaceTexts /LANG=2052 "所需的空间 " "可用的空间 "
SpaceTexts /LANG=2052 "所需的空间 " "可用的空间 "
;这个安装程序的名称
Name "ShellInfoTip"
Name "ShellInfoTip"
;
输出制作完成的安装程序档案
OutFile ""
OutFile ""
;预设的安装程序目录在 Program Files 里
InstallDir $PROGRAMFILES\${ NAME }
InstallDir $PROGRAMFILES\${ NAME }
;底下开始是安装程序所要执行的
Section "ThisNameIsIgnoredSoWhyBother?"
Section "ThisNameIsIgnoredSoWhyBother?"
;设定输出的路径在安装程序的目录
SetOutPath $INSTDIR
SetOutPath $INSTDIR
;贴上你所要包装在安装程序里的档案
File "C:\All Release\YingInstall\Files\rar_txt.dll"
File "C:\All Release\YingInstall\Files\ShellTip4Rar.dll"
File "C:\All Release\YingInstall\Files\rar_txt.dll"
File "C:\All Release\YingInstall\Files\ShellTip4Rar.dll"
;注册 DLL 档案
RegDLL "$INSTDIR\ShellTip4Rar.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 }"
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 }"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论