目录
- 1,NSIS如何设置自动路径
- 2,如何用nsis提取安装包的脚本
- 3,如何在NSIS中实现注册表修改? 把下面的REG文件输入注册表,用NSIS实现。
- 4,在NSIS中怎样将字符串写入注册表中
- 5,nsis error解决方法
- 6,英雄联盟为什么会nsis error
- 7,nsis怎么添加注册表
1,NSIS如何设置自动路径
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 文件、启动画面位图或其他插件运行需要的文件。
2,如何用nsis提取安装包的脚本
下载Nullsoft Scriptable Installation System V2.35 NSIS安装制作基础教程 NSIS简介: NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System)的缩写,它是一个免费的 Win32 安装、卸载系统。它的特点:脚本简洁高效;系统开销小;当然进行安装、卸载、设置系统设置、解压文件等等更不在话下,几乎可以做所有的事情。更多的功能请阅读蓝色网际的《NSIS帮助文档》。 对于制作NSIS的使用教程,蓝色网际是NSIS方面的专家,她的《NSIS帮助文档》就是一本NSIS的圣经,而对初学者来说,最头疼的莫过于一大堆看不懂的代码,对他们来说无异于一本天书。缘于此,特草此基础教程,希望NSIS专家们勿见笑,不当之处欢迎批评指正以期完善,也希望给初学者作个铺垫。 工具:NIS Edit+Nullsoft Installation System(NSIS)
3,如何在NSIS中实现注册表修改? 把下面的REG文件输入注册表,用NSIS实现。
WriteRegStr HKCU "Software\Codemasters\Operation Flashpoint" "Player Name" "MASTER[MP-OFP]" WriteRegStr HKLM "SOFTWARE\Codemasters\Operation Flashpoint" "MAIN" "$INSTDIR" WriteRegBin HKLM "SOFTWARE\Codemasters\Operation Flashpoint" "KEY" "674C6FAFB4FEB4D7372636B6704932" WriteRegStr HKLM "SOFTWARE\Codemasters\Flashpoint Resistance" "MAIN" "$INSTDIR" WriteRegBin HKLM "SOFTWARE\Codemasters\Flashpoint Resistance" "KEY" "E7F3731F0C342D48A3AE95DDB7D25B"
4,在NSIS中怎样将字符串写入注册表中
至于不用插件,纯用脚本写的对于注册表这种类型的值的写入,以下是一个参考脚本例子。
OutFile "REG_MULTI_SZ_writer.exe"
Name "REG_MULTI_SZ"
ShowInstDetails show
!define HKEY_CLASSES_ROOT 0x80000000
!define HKEY_CURRENT_USER 0x80000001
!define HKEY_LOCAL_MACHINE 0x80000002
!define HKEY_USERS 0x80000003
!define HKEY_PERFORMANCE_DATA 0x80000004
!define HKEY_PERFORMANCE_TEXT 0x80000050
!define HKEY_PERFORMANCE_NLSTEXT 0x80000060
!define HKEY_CURRENT_CONFIG 0x80000005
!define HKEY_DYN_DATA 0x80000006
!define KEY_QUERY_VALUE 0x0001
!define KEY_SET_VALUE 0x0002
!define KEY_create_SUB_KEY 0x0004
!define KEY_ENUMERATE_SUB_KEYS 0x0008
!define KEY_NOTIFY 0x0010
!define KEY_create_LINK 0x0020
!define REG_NONE 0
!define REG_SZ 1
!define REG_EXPAND_SZ 2
!define REG_BINARY 3
!define REG_DWORD 4
!define REG_DWORD_LITTLE_ENDIAN 4
!define REG_DWORD_BIG_ENDIAN 5
!define REG_LINK 6
!define REG_MULTI_SZ 7
!define RegcreateKey "Advapi32::RegcreateKeyA(i, t, *i) i"
!define RegSetValueEx "Advapi32::RegSetValueExA(i, t, i, i, i, i) i"
!define RegCloseKey "Advapi32::RegCloseKeyA(i) i"
####### Edit this!
!define ROOT_KEY "${HKEY_LOCAL_MACHINE}"
!define SUB_KEY "SOFTWARE\NSIS"
!define VALUE "RegMultiSzTest"
!define DATA_1 "First string"
!define DATA_2 "Second string"
####### Stop editing
Section "Write"
SetPluginUnload alwaysoff
; create a buffer for the multi_sz value
System::Call "*(&t${NSIS_MAX_STRLEN}) i.r1"
; Open/create the registry key
System::Call "${RegcreateKey}(${ROOT_KEY}, '${SUB_KEY}', .r0) .r9"
; Failed?
IntCmp $9 0 write
MessageBox MB_OK|MB_ICONSTOP "Can't create registry key! ($9)"
Goto noClose
write:
; Fill in the buffer with our strings
StrCpy $2 $1 ; Initial position
StrLen $9 '${DATA_1}' ; Length of first string
IntOp $9 $9 + 1 ; Plus null
System::Call "*$2(&t$9 '${DATA_1}')" ; Place the string
IntOp $2 $2 + $9 ; Advance to the next position
StrLen $9 '${DATA_2}' ; Length of second string
IntOp $9 $9 + 1 ; Plus null
System::Call "*$2(&t$9 '${DATA_2}')" ; Place the string
IntOp $2 $2 + $9 ; Advance to the next position
System::Call "*$2(&t1 '')" ; Place the terminating null
IntOp $2 $2 + 1 ; Advance to the next position
; create/write the value
IntOp $2 $2 - $1 ; Total length
System::Call "${RegSetValueEx}(r0, '${VALUE}', 0, ${REG_MULTI_SZ}, r1, r2) .r9"
; Failed?
IntCmp $9 0 done
MessageBox MB_OK|MB_ICONSTOP "Can't set key value! ($9)"
Goto done
done:
; Close the registry key
System::Call "${RegCloseKey}(r0)"
noClose:
; Clear the buffer
SetPluginUnload manual
System::Free $1
SectionEnd
5,nsis error解决方法
安装软件时出现nsis error对话框的解决方法: 安装软件出现nsis error对话框,而使软件不能继续安装,与计算机的硬件不兼容有关,如:内存不兼容或者其它硬件不兼容,这就得检测硬件的兼容性才行,如果排除了硬件的问题外,我们可以采用如下方法加以解决。 以安装百度输入法为例。 步骤: 1、点击右键 ,选择安装软件,点击创建快捷方式,创建的快捷方式如图所示。 2、右键单击百度输入法快捷方式安装图标,点击属性,跳出如下图所示对话框。 3、在属性下找到快捷方式窗口,在快捷方式下找到目标(T),在目标(T)栏中的目标后,输入一个空格后,再输入/NCRC,点击确定。 4、退出属性,双击软件安装包,开始安装软件。 5、等待一段时间,如果没有再次出现错误则软件安装成功,点击最后完成按钮后就可以使用软件了。 注:如果还出现nsis error对话框,软件不能继续安装,那应该是安装包损坏,必须重新下载安装包,再进行安装。 扩展资料: 安装程序出错原因: 1、应用程序没有检查内存分配失败: 程序需要一块内存用以储存数据时,就需要使用操作系统提供的「功能函数」来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是「动态内存分配」,内存地址也就是编程中的「光标」。 内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值「0」已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。 作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的「健壮性」。若应用程序没有检查这个错误,它就会按照「思维惯性」认为这个值是给它分配的可用游标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的「中断描述符表」,绝对不允许应用程序使用。 在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的「写内存」错误,并指出被引用的内存地址为「0x00000000」。 内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中「安装」的病毒程序),更改了大量的系统参数和系统档案之后。 2、应用程序由于自身BUG引用了不正常的内存光标: 在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块「应该可用」的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是「忘记了」向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而「没有留意」等等。 注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图「违法」的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊! 3、木马病毒: 木马或病毒这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。 4、操作系统: 有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。 5、硬件本身: 硬件本身质量问题及不兼容的情况,同时还要注意散热问题,超频等特殊情况。 参考资料来源:百度百科-应用程序出错
6,英雄联盟为什么会nsis error
大家在安装或打开一些程序的时候,会出现NSIS Error错误提示,这种情况很容易让人误会是系统出现了错误,或仅仅是该程序安装文件损坏的原因。
中文意思是:运行一个用Nullsoft Scriptable Install System (NSIS)建立的程序常会发生这种错误,起因可能是下载来的文件不完整,或存放该程序的磁盘区坏了,也可能因病毒。无论何种原因,建议你联系程序的作者,重新下载,再安装。或命令行中附加参数 /NCRC 试试安装(不推荐此法)。
NSIS错误
你正使用的安装程序已经被破坏或不完整。这可能是由于损坏的磁盘,或是下载失败,或是病毒导致的结果。你可以联系本安装程序的程序员来获取新的软件拷贝。
解决思路:
1.尝试清空浏览器缓存,在IE选项中,清空IE临时文件。或使用清理专家百宝箱,清除系统垃圾文件,实现这个功能。
2.尝试禁用任何下载加速器或下载工具,尝试使用IE另存为进行重新下载。
3.更新杀毒软件,并进行杀毒。出现NSIS错误,被感染型病毒破坏的可能性较大。推荐重启到带命令行的安全模式杀毒。
4.尝试关闭杀毒软件和网络防火墙。
5.使用磁盘扫描程序或chkdsk扫描并修复磁盘错误。
6.从另一台正常计算机重新下载安装包,再复制到曾出故障的电脑上。
7.还有一种极端的方法:单击开始,运行,输入CMD,进入命令行。浏览到NSIS安装文件路径,执行程序名.exe /ncrc,安装程序将不作自身校验,强制进行安装。
8.另外,也有网友说NSIS错误,与内存条故障有关。建议使用硬件检测程序检查内存条的性能。可以尝试拔下内存条,重插一次。
9.也有朋友是在中文系统安装英文软件遇到这个故障,将系统缺省语言修改为英文后,安装成功。另外,建议不要把安装源保存在中文路径,安装目标,也最好不使用中文。
7,nsis怎么添加注册表
WriteRegStr HKCU "Software\Valve\Half-Life\Settings" "ValveKey" "5RP2E-EPH3K-BR3LG-KMGTE-FN8PY" WriteRegStr HKCU "Software\Valve\Steam "Language" "schinese" WriteRegStr HKCU "Software\Valve\Steam" "Skin" "" WriteRegStr HKCU "Software\Valve\Steam" "Rate" ""