NSIS如何设置自动路径

NSIS如何设置自动路径,第1张

NSIS 路径

$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

程序文件目录(通常为 C:\Program Files 但是运行时会检测)。

$COMMONFILES

公用文件目录。这是应用程序共享组件的目录(通常为 C:\Program Files\Common Files 但是运行时会检测)。

$DESKTOP

Windows 桌面目录(通常为 C:\windows\desktop 但是运行时会检测)。该常量的内容(所有用户或当前用户)取决于 SetShellVarContext 设置。默认为当

前用户。

$EXEDIR

安装程序运行时的位置。(从技术上来说你可以修改改变量,但并不是一个好方法)。

${NSISDIR}

包含 NSIS 安装目录的一个标记。在编译时会检测到。常用于在你想调用一个在 NSIS 目录下的资源时,例如:图标、界面……

$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 文件、启动画面位图或其他插件运行需要的文件。

$0~$9、$R0~$R9 是 NSIS 二十个内置变量。

1. Push X

将 X(变量或字符串都行)放入 NSIS 堆栈顶部。Pop 变量,将堆栈顶部值d出到 "变量"。如:

Push good

StrCpy $R0 bad

Pop $R0

MessageBox MB_OK $R0 #此时$R0为good

2. 读取注册表:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5

键下的 Install 项的值,将结果保存在 $0 变量中。

3. StrCmp 值1 值2 相等时跳转标记 [不相等时跳转标记]。

相等时跳转标记/不相等时跳转标记可以是标记,也可以是+N或-N表示相对跳转。

StrCmp $0 1 KnowNetFrameworkVersion +1

$0为1,跳转到"KnowNetFrameworkVersion:"处,否则跳转+1即下一行。

StrCpy $1 "1.0.3705.0"

将字符串"1.0.3705.0"复制到$1变量。

(1) StrCmp $R0 0 good

#"不相等跳转标记"是可选的,你可以留空不写或写0或+1都一样表示到下一句。

...

...

good:

(2) StrCmp $R0 0 +2 +4

#如果该行是有效的语句则被跳过。注意:注释不算语句,此处仅作示范,下同。

#$R0为0则跳到此行

Goto +2 #跳过下一行到下下一行

#$R0不为0则跳到此行

也可以标记与相对跳转混合使用:

(3) StrCmp $R0 0 0 end

...

#N行语句,不确定行数或行数太多。

...

end:

4."$TEMP"是临时文件夹。如果当前为Administrator用户,其典型路径如下:

XP/2000:C:\Documents and Settings\Administrator\Local Settings\Temp

Vista/7:C:\Users\Administrator\AppData\Local\Temp

常见的路径变量有:

桌面:$DESKTOP

Windows目录:$WINDIR

系统目录:$SYSDIR

开始菜单:$STARTMENU

开始菜单中的程序:$SMPROGRAMS

我的文档:$DOCUMENTS

…………

以上命令说明都可以在NSIS中文帮助中找到。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11942154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存