返回列表 回复 发帖

请教有关NSIS文件压缩器使用问题?

新手上路,新多关照:)
问题很一定很幼稚,各位老师见笑了!
我想用NSIS文件压缩器把多个软件(ACDSEE.EXE; QQ.EXE; 五笔输入法.EXE)制作成一个EXE文件,按顺序安装,请教我怎么做?

似水年华老师有关NSIS文件压缩器的以前帖子提到“解压后运行”时,详细举了两个例子:
解压后运行:
如果解压后想打开压缩包里面的一个记事本,如 test.txt ,需填上:$WINDIR\notepad.exe "$INSTDIR\文件夹名\test.txt"  
如果解压后想用 IE 打开一个 url,需填上:$PROGRAMFILES\Internet Explorer\iexplore.exe

请教各位老师,能否把剩余的变量用法详细讲一讲,先行谢过了!
用户变量
$变量名
用户变量可以用 Var 命令来声明。你可以用这些变量来保存值,用于字串操作等等。
4.2.1.1 Var
[/GLOBAL] 变量名
声明一个用户变量。变量名允许的字符: [a-z][A-Z][0-9] 和 '_'。所有定义的变量都是全局的,即使在区段或函数内定义。要使它表达更清楚一些,区段或函数内定义的变量必须使用 /GLOBAL 标记。在区段和函数之外不需要 /GLOBAL 标记。
Var example
Function testVar
  Var /GLOBAL example2
  StrCpy $example "example value"
  StrCpy $example2 "another example value"
FunctionEnd
4.2.2 其他已登记的变量
$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $R0, $R1, $R2, $R3, $R4, $R5, $R6, $R7, $R8, $R9
这些变量可以像用户变量一样使用,但常用于公用函数或宏。你不需要声明这些变量,所以当你在公用代码里使用他们的时候不能有任何名字冲突。当在公用代码里使用的时候,推荐你使用堆栈保存和恢复他们原来的数据。这些变量也可以在插件里传递,因为他们可以被 DLL 插件读取和写入。
$INSTDIR
安装目录 ($INSTDIR 可以使用 StrCpy、ReadRegStr、ReadINIStr 等等来更改。例如在 .onInit 函数里可以用来做高级的检测安装定位)。
注意在卸载程序代码里,$INSTDIR 为卸载程序所在的目录而不是在安装程序里所指定的目录。例如,你把卸载程序放在 $WINDIR 里并且用户没有移动它,那么在卸载程序里 $INSTDIR 就等于 $WINDIR。如果你要把卸载程序放到到另外的位置,那么你应该先把安装程序的 $INSTDIR 值写入注册表或其它容易保存的地方,然后在卸载程序里读取该值并赋值给卸载程序里的 $INSTDIR。
$OUTDIR
当前输出路径 (通过 SetOutPath 设定或通过 StrCpy、ReadRegStr、ReadINIStr 等等)
$CMDLINE
安装程序的命令行输入。命令行的格式如下面之一所示:
"完整路径\安装程序.exe" 参数 参数 参数
安装程序.exe 参数 参数 参数
对于解析“参数”部分,参阅 GetParameters 在 常用函数附录。如果在命令行里指定了 /D= (用来跳过安装路径的选择)那么 /D= 后面的参数将不会被保存在 $CMDLINE(前面的可以保存)。
$LANGUAGE
当前使用的语言标识符。例如,英语是 1033。你可以在 .onInit 里更改。
4.2.3 常量
常量通常用在 InstallDir 属性里。
需要注意的是一些新的常量并不是在所有的 OS 上都是正常的。例如 $CDBURN_AREA 仅在 Windows XP 及以上系统中才正常。如果在 Windows 98 中使用将会得到空值。除非特别提示,否则该常量都是在所有 OS 上有效的。
$PROGRAMFILES, $PROGRAMFILES32, $PROGRAMFILES64
程序文件目录(通常为 C:\Program Files 但是运行时会检测)。在x64 Windows中,当 $PROGRAMFILES64 指向 C:\Program Files时,$PROGRAMFILES 和 $PROGRAMFILES32 指向 C:\Program Files (x86) 。当安装 x64 应用程序时通常用$PROGRAMFILES64。
$COMMONFILES, $COMMONFILES32, $COMMONFILES64
公用文件目录。这是应用程序共享组件的目录(通常为 C:\Program Files\Common Files 但是运行时会检测)。在x64 Windows中,当 $COMMONFILES64 指向 C:\Program Files\Common Files时,$COMMONFILES 和 $COMMONFILES32 指向 C:\Program Files (x86)\Common Files。 当安装 x64 应用程序时通常用 $COMMONFILES64。
$DESKTOP
Windows 桌面目录(通常为 C:\Windows\Desktop 但是运行时会检测)。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$EXEDIR
安装程序运行时的位置。(从技术上来说你可以修改此变量,但并不是一个好方法)。
$EXEFILE
安装程序的名称。
$EXEPATH
安装程序运行时的完整路径。
${NSISDIR}
包含 NSIS 安装目录的符号定义标记。常用于在你想调用在 NSIS 目录下的资源时,例如:图标、界面……
在 Window 平台等于 makensis 所在的目录而在其它平台则在编译时决定 (信息请看 INSTALL 文件)。你可以在编译前通过修改 NSISDIR 环境变量来改变默认的设置。更多信息请看 3.1.3 节。
$WINDIR
Windows 目录(通常为 C:\Windows 或 C:\WinNT 但在运行时会检测)。
$SYSDIR
Windows 系统目录(通常为 C:\Windows\System 或 C:\WinNT\System32 但在运行时会检测)。
$TEMP
系统临时目录(通常为 C:\Windows\Temp 但在运行时会检测)。
$STARTMENU
开始菜单目录(常用于添加一个开始菜单项,使用 CreateShortCut)。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$SMPROGRAMS
开始菜单程序目录(当你想定位 $STARTMENU\程序 时可以使用它)。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$SMSTARTUP
开始菜单程序/启动 目录。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$QUICKLAUNCH
在 IE4 活动桌面及以上的快速启动目录。如果快速启动不可用,仅仅返回和 $TEMP 一样。
$DOCUMENTS
文档目录。一个当前用户典型的路径形如 C:\Documents and Settings\Foo\My Documents。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
该常量在 Windows 95 且 Internet Explorer 4 没有安装时无效。
$SENDTO
该目录包含了“发送到”菜单快捷项。
$RECENT
该目录包含了指向用户最近文档的快捷方式。
$FAVORITES
该目录包含了指向用户网络收藏夹、文档等的快捷方式。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
该常量在 Windows 95 且 Internet Explorer 4 没有安装时无效。
$MUSIC
用户的音乐文件目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
该常量仅在 Windows XP、ME 及以上才有效。
$PICTURES
用户的图片目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
该常量仅在 Windows 2000、XP、ME 及以上才有效。
$VIDEOS
用户的视频文件目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
该常量仅在 Windows XP、ME 及以上才有效。
$NETHOOD
该目录包含了可能存在于我的网络位置、网上邻居文件夹的链接对象。
该常量在 Windows 95 且 Internet Explorer 4 和活动桌面没有安装时无效。
$FONTS
系统字体目录。
$TEMPLATES
文档模板目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
$APPDATA
应用程序数据目录。当前用户路径的检测需要 Internet Explorer 4 及以上。所有用户路径的检测需要 Internet Explorer 5 及以上。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
该常量在 Windows 95 且 Internet Explorer 4 和活动桌面没有安装时无效。
$LOCALAPPDATA
本机应用程序数据目录。
该常量仅在 Windows 2000 或以上系统有效。
$PRINTHOOD
该目录包含了可能存在于打印机文件夹的链接对象。
该常量在 Windows 95 和 Windows 98 上无效。
$INTERNET_CACHE
Internet Explorer 的临时文件目录。
该常量在 Windows 95 和 Windows NT 且 Internet Explorer 4 和活动桌面没有安装时无效。
$COOKIES
Internet Explorer 的 Cookies 目录。
该常量在 Windows 95 和 Windows NT 且 Internet Explorer 4 和活动桌面没有安装时无效。
$HISTORY
Internet Explorer 的历史记录目录。
该常量在 Windows 95 和 Windows NT 且 Internet Explorer 4 和活动桌面没有安装时无效。
$PROFILE
用户的个人配置目录。一个典型的路径如 C:\Documents and Settings\Foo。
该常量在 Windows 2000 及以上有效。
$ADMINTOOLS
一个保存管理工具的目录。这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当前用户。
该常量在 Windows 2000、ME 及以上有效。
$RESOURCES
该资源目录保存了主题和其他 Windows 资源(通常为 C:\Windows\Resources 但在运行时会检测)。
该常量在 Windows XP 及以上有效。
$RESOURCES_LOCALIZED
该本地的资源目录保存了主题和其他 Windows 资源(通常为 C:\Windows\Resources\1033 但在运行时会检测)。
该常量在 Windows XP 及以上有效。
$CDBURN_AREA
一个在烧录 CD 时储存文件的目录。
该常量在 Windows XP 及以上有效。
$HWNDPARENT
父窗口的十进制窗口句柄。
$PLUGINSDIR
该路径是一个临时目录,当第一次使用一个插件或一个调用 InitPluginsDir 时被创建。该文件夹当安装程序退出时会被自动删除。这个文件夹的用意是用来保存给 InstallOptions 使用的 INI 文件、启动画面位图或其他插件运行需要的文件。
==============================================
你想实现成什么样子呢?
像我以前光盘里的样子?


还是没有这个界面选择
直接就所上面这些软件顺序安装呢?
附件: 您所在的用户组无法下载或查看附件
感谢Baidu,Google,Dreams8给我这次机会!
还要感谢我的爸爸妈妈!
HOHO
哦!老师好快呀!谢谢似水年华老师!!!
我想要的效果就是您下图所示的那个样子!您是如何实现的?
我昨天试着按你的教程做了一遍,结果只是把这些软件放置在我设定的目录C:\Program Files\Software中,同时在开始菜单建立了链接,并没有真正把上述软件安装到系统上,请教老师问题出在哪里了?
Section "WinRAR 3.7中文正式版" SEC01
SetOutPath "$WINDIR\temp"
SetOverwrite on
SetDetailsPrint both
DetailPrint "安装WinRAR 3.7中,请等待......"
SetDetailsPrint none
File /r "wrar370sc.exe"
ExecWait '"$INSTDIR\wrar370sc.exe" /s'
Delete /REBOOTOK "$INSTDIR\wrar370sc.exe"
SectionEnd

比如你要安装WinRAR
ExecWait '"$INSTDIR\wrar370sc.exe" /s'

需运行它
用到它相关的静默参数
感谢Baidu,Google,Dreams8给我这次机会!
还要感谢我的爸爸妈妈!
HOHO
老师,我用的是你上传的NSIS文件压缩器,您上讲的在这个软件里怎么设置?
附件: 您所在的用户组无法下载或查看附件
这个NSIS压缩器
只能简单地运行一个程序

建议你还是自己用NSIS向导写一下
不然很难达到你的要求的
感谢Baidu,Google,Dreams8给我这次机会!
还要感谢我的爸爸妈妈!
HOHO
明白了,老师!指导我这样的菜鸟一定好辛苦吧?呵呵~~
我一点基础都没有,从零学起,请老师告诉我从哪里学起?省得走弯路!
http://dreams8.com/forum-66-1.html

初级入门
只要你自己动手用过向导
你发现其实很容易就入门了
感谢Baidu,Google,Dreams8给我这次机会!
还要感谢我的爸爸妈妈!
HOHO
谢谢老师,网址收藏了。我正在按你的教程练习呢!
返回列表