先来看一下由HM NIS Edit生成的脚本:
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "My application"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "My company, Inc."
!define PRODUCT_WEB_SITE "http://www.mycompany.com"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\payload.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
; Language Selection Dialog Settings
!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language"
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE "许可协议.txt"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "SimpChinese"
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "d:\Setup.exe"
InstallDir "$PROGRAMFILES\My application"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\snapshot_blob.bin"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\resources.pak"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\payload.exe"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\package.json"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nwjc.exe"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nw_elf.dll"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nw_200_percent.pak"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nw_100_percent.pak"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nw.exe"
CreateDirectory "$SMPROGRAMS\My application"
CreateShortCut "$SMPROGRAMS\My application\My application.lnk" "$INSTDIR\nw.exe"
CreateShortCut "$DESKTOP\My application.lnk" "$INSTDIR\nw.exe"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nw.dll"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\node.dll"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\natives_blob.bin"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\nacl_irt_x86_64.nexe"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\libGLESv2.dll"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\libEGL.dll"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\icudtl.dat"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\ffmpeg.dll"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\d3dcompiler_47.dll"
SetOutPath "$INSTDIR\app"
SetOverwrite try
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\index.html"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\main.js"
SetOutPath "$INSTDIR\app\static"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\biankuang3.png"
SetOutPath "$INSTDIR\app\static\css"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\css\app.b9ead1a4c3122fd4b387b320010926f0.css"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\css\app.b9ead1a4c3122fd4b387b320010926f0.css.map"
SetOutPath "$INSTDIR\app\static\data"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\data\data-pie.xml"
SetOutPath "$INSTDIR\app\static\images"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\anniu1.png"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\anniu2.png"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\bdr-blueSky.png"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\bdr.png"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\biankuang.png"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\biankuang3.png"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\biankuang4.png"
File "D:\nwjs_workspace\electricity_visual_product\code\nwjs-sdk-v0.25.0-win-x64\app\static\images\bingzhuang.png"
.....
RMDir "$INSTDIR\locales"
RMDir "$INSTDIR\app\static\styles"
RMDir "$INSTDIR\app\static\script"
RMDir "$INSTDIR\app\static\js"
RMDir "$INSTDIR\app\static\img"
RMDir "$INSTDIR\app\static\images\img\2"
RMDir "$INSTDIR\app\static\images\img\1"
RMDir "$INSTDIR\app\static\images"
RMDir "$INSTDIR\app\static\data"
RMDir "$INSTDIR\app\static\css"
RMDir "$INSTDIR\app\static"
RMDir "$INSTDIR\app"
RMDir "$INSTDIR"
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd
这里中间部分略过了,都是一些添加文件。
主要是下面要进行环境变量的设置和图标刷新以及代码的执行权限的设置。
1、设置应该程序图标:
Section -AdditionalIcons
SetOutPath $INSTDIR
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\diyscreen\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\diyscreen\Uninstall.lnk" "$INSTDIR\uninst.exe"
CreateShortCut "$SMPROGRAMS\diyscreen\diyscreen.lnk" "$INSTDIR\nw.exe" "" "$INSTDIR\pkgtools\tool.ico"
CreateShortCut "$DESKTOP\diyscreen.lnk" "$INSTDIR\nw.exe" "" "$INSTDIR\pkgtools\tool.ico"
Exec "ie4uinit -show"
SectionEnd
2、环境变量设置及代码执行权限的设置
Section -Post
AccessControl::ClearOnFile "$INSTDIR" "(S-1-1-0)" "FullAccess"
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\nw.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\xcopy.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
WriteRegExpandStr HKCR ".vsz" "" "vszfile"
WriteRegExpandStr HKCR "vszfile\DefaultIcon" "" "$INSTDIR\pkgtools\project.ico"
WriteRegExpandStr HKCR "vszfile\shell\open\command" "" "$INSTDIR\nw.exe $\"%1$\""
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "diyscreen" "$INSTDIR"
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment"
Exec "ie4uinit -show"
SectionEnd
说明:AccessControl::ClearOnFile "$INSTDIR" "(S-1-1-0)" "FullAccess",设置安装后的目录权限为everyone(读/写);
WriteRegExpandStr HKCR ".vsz" "" "vszfile"
WriteRegExpandStr HKCR "vszfile\DefaultIcon" "" "$INSTDIR\pkgtools\project.ico"
WriteRegExpandStr HKCR "vszfile\shell\open\command" "" "$INSTDIR\nw.exe $\"%1$\""
,.vsz为自定义扩展名文件,最后的"%1" 是启动vsz文件指定nw.exe 的参数,如果在桌面上双击一个.vsz的文件,在打开nw.exe后自动打开桌面上这个自定义vsz文件内容。$\"表是"的转义。
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "diyscreen" "$INSTDIR"
,设置环境变量,用于程序中获取使用。
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment"
刷新环境变量。
Exec "ie4uinit -show"
刷新自定义格式文件的图标,否则需要重启才会生效。
记得引入!include "winmessages.nsh",否则会报错。
以上列出的是需要手动修改的地方,其余的都是HM NIS Edit自动生成的。修改完成后ctrl+f9重新编译运行。
分享到:
相关推荐
NSIS脚本编辑器是配合NSIS使用的工具,它为用户提供了编写安装脚本的友好界面,使得程序打包过程变得更加简单和直观。 在NSIS脚本编辑器中,你可以通过编写脚本来控制安装程序的行为,包括但不限于: 1. **界面...
压缩包内的"7-Zip_19.00_x86_x64_UnNSIS_Setup_Ha_Mod.exe"可能是汉化修改版的安装程序,可能包含了反编译NSIS脚本的功能。而"说明.txt"文件则可能包含了安装和使用该汉化修改版7-Zip以及NSIS脚本反编译工具的详细...
安装完成后,你会得到一个可执行文件`makensis.exe`,它是用来编译NSIS脚本的。 2. **学习NSIS语法**: NSIS脚本主要由指令、函数和变量组成,遵循特定的语法规则。例如,`Section`用于定义安装过程中的步骤,`File`...
【标题】:“NSIS脚本编写之Hello World 源代码包”介绍 【描述】:这个压缩包文件提供了一个NSIS(Nullsoft Scriptable Install System)脚本的实例,用于展示基础的安装程序创建过程。它包含了.NET Framework 2.0...
4. **注册表操作**:如何通过NSIS脚本修改或创建注册表项,这对于软件的配置和启动至关重要。 5. **插件和宏**:NSIS拥有丰富的插件库,可以扩展其功能,例如处理网络操作、数据库连接等。宏是预定义的代码块,可...
这个插件提供了在NSIS脚本中检查和结束进程的功能,使得安装脚本能够更加智能和自适应。在描述中提到的`example.nsi`是一个示例脚本,它展示了如何使用该插件实现这些功能。通过分析和学习这个示例,开发者可以了解...
7-Zip可以打开NSIS自解压文件,并从中提取出包含的NSIS脚本和相关资源。这为用户提供了对安装程序内部逻辑的洞察,特别是对于那些没有提供源代码的安装程序。 【压缩包子文件的文件名称列表】 1. 7z1505-src.7z: ...
9. **开源自由**:NSIS遵循ZLIB许可协议,是完全免费的,并且源代码开放,开发者可以根据需要进行修改和定制。 10. **社区活跃**:NSIS有一个活跃的开发者和用户社区,提供了大量的教程、示例脚本和问题解答,为...
NSIS(Nullsoft Scriptable Install System)是一种开源的Windows安装系统脚本语言,用于创建安装程序。然而,由于其灵活性和广泛的应用范围,NSIS也被黑客利用来编写恶意软件。这种恶意软件被称为“NSIS病毒”。 ...
NSIS(Nullsoft Scriptable Install System)是一款流行的开源安装制作工具,主要被用来创建...为了深入学习NSIS脚本,你可以研究这个示例,查看其中的指令、变量和函数用法,并尝试修改和扩展脚本来满足自己的需求。
在NSIS脚本中,可以通过调用`SendMessage`命令来发送一个消息,告诉Windows操作系统刷新环境变量,以便新的环境变量设置能够立即生效。 **示例代码**: ```nsi ; 修改环境变量 WriteRegExpandStr HKLM "SYSTEM\...
NISEdit是NSIS的集成开发环境,它为用户提供了可视化的编辑界面,使得创建和修改NSIS脚本变得更加直观和便捷。 在标题"nsis-3.03-setup+nisedit2.0.3"中,我们可以解读出两个主要组件:NSIS 3.03的安装程序和NIS...
在处理"pca"问题时,可以尝试先运行安装程序,观察具体错误信息,然后根据错误信息针对性地修改NSIS脚本或配置。同时,利用NSIS的社区资源和文档,可以找到许多已知问题的解决方案和最佳实践。 总的来说,NSIS在Win...
NSIS脚本语言是其核心,它允许用户通过编写简单的脚本来定义安装过程中的各种行为,如文件复制、注册表操作、自定义界面等。这种脚本语言易于理解和学习,对于初学者来说,只需要掌握基本语法就能制作出功能完善的...
在这个特定的场景中,我们关注的是"ShellExecAsUser.dll"插件,它扩展了NSIS脚本的功能,特别是在处理用户权限方面。 ShellExecAsUser.dll是一个动态链接库,它的主要作用是使NSIS脚本能够以当前活动用户的权限执行...
在提供的压缩包文件中,`makensis.exe`是NSIS的编译器,它用于将NSIS脚本转化为可执行的安装程序。开发者使用makensis.exe可以将安装逻辑和资源打包成一个独立的安装包,用户只需双击运行即可完成安装过程。 而`...
解包过程可以揭示隐藏的NSIS脚本,这些脚本定义了安装过程中的各种操作,如文件复制、注册表修改等。 UniExtract是常用的NSIS解包工具之一,正如描述中提到的,它是一个万能的解包工具,支持多种类型的文件打包格式...
NIS Edit是一款脚本编辑器,用于编写和编辑NSIS脚本,而Nullsoft Installation System则是实际的安装程序生成器。 创建NSIS安装包的基本步骤如下: 1. 安装NIS Edit和Nullsoft Installation System。 2. 启动NIS ...
- **脚本驱动**:NSIS基于脚本语言,用户可以通过编写简单的NSIS脚本来定义安装过程中的各种行为,如文件复制、注册表操作、设置快捷方式等。 - **跨平台编译器**:NSIS提供了编译器,可以将脚本转换为可执行的...
"makensis.exe"是NSIS的主要编译器,它将NSIS脚本转换为可执行的安装程序。在这个压缩包中,"makensis.exe"可能是经过修改的版本,具备了生成安装日志的能力。使用makensis,开发者可以编写自定义的NSIS脚本,结合...