首页
加群
推荐
用户手册
搜集网
轻狂志
简单导航
ChatGPT
Search
1
NSIS错误(NSIS Error)的原因和解决方法总结
9,075 阅读
2
NSIS把程序快捷方式钉到最新版WIN10的任务栏
8,288 阅读
3
NSIS v2.51 集成增强版 - 20200301
4,271 阅读
4
NSIS 安装程序的界面结构
3,513 阅读
5
NSIS 源代码地址及新编译版本,防解包。
2,093 阅读
下载
教程
插件
登录
/
注册
Search
标签搜索
路径
PinToTaskbar
WIN10
任务栏
界面
窗口
NSIS Error
NSIS错误
源码
防解包
NSIS增强
完成页面
定制
释放文件
日志
卸载
时间戳
FILETIME
空格
中文
NSISFANS
累计撰写
33
篇文章
累计收到
276
条评论
首页
栏目
下载
教程
插件
页面
加群
推荐
用户手册
搜集网
轻狂志
简单导航
ChatGPT
搜索到
20
篇与
教程
的结果
2023-04-27
NSIS 查找目录下的所有文件夹
有时我们可能需要查找某个目录下所有文件夹,以便进行后续处理,这里可以用Locate,可以查找文件,文件夹目录,空文件夹。!include "FileFunc.nsh" Section "MainSection" SEC01 ${Locate} "$INSTDIR" "/L=D" "FolderPro" SectionEnd Function FolderPro MessageBox MB_OK '$R7' push $0 FunctionEnd{Locate}指令每找到一个文件夹就会调用一次函数“FolderPro”。
2023年04月27日
24 阅读
0 评论
0 点赞
2023-01-25
关于NSIS操作JSON文件的一点实践
今天在打包一个软件的时候,需要修改其JSON配置文件,于是用nsJSON插件试了一下。主要用了以下几个功能。读取json配置文件 nsJSON::Set /file "$APPDATA\config_v2.json"读取指定节点 nsJSON::Get "setting" "download.savePath" /end Pop $R0格式化路径 ${WordReplace} "$DOCUMENTS" "\" "\\" "+*" $R0更新字符串 nsJSON::Set "setting" "download.savePath" /value '"$R0"' nsJSON::Get "setting" "download.savePath" /end写入文件 nsJSON::Serialize /format /file "$APPDATA\config_v2.json"结束。
2023年01月25日
127 阅读
0 评论
1 点赞
2023-01-09
NSIS删除安装程序自身
把自己删除了,有点狠哈Unicode false !include "MUI2.nsh" !include "FileFunc.nsh" !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "SimpChinese" Name "DELETEEXEPATH" OutFile "DELETEEXEPATH.exe" InstallDir "$TEMP" Section Main DetailPrint "正在安装..." Sleep 100 Sleep 100 SectionEnd Function .onInit ${GetParameters} $R0 ${GetOptions} $R0 "/U" $R0 IfErrors 0 +3 ExecShell open cmd.exe '/C CALL "$EXEPATH" /U&DEL "$EXEPATH"&RD "$EXEDIR"' SW_HIDE Abort FunctionEnd Function .onInstSuccess StrCpy $0 "$SYSDIR\cmd.exe" IfFileExists $0 +3 ReadEnvStr $0 ComSpec StrCmp $0 "" +3 ExecShell open $0 '/C FOR /L %I IN (0,1,9999) DO DEL "$EXEPATH"&RD "$EXEDIR"&IF NOT EXIST "$EXEPATH" EXIT' SW_HIDE Goto +3 MessageBox MB_ICONINFORMATION|MB_OK "请在本程序结束后手动清理安装目录!" Exec 'Explorer /select,"$EXEPATH"' FunctionEnd
2023年01月09日
61 阅读
0 评论
0 点赞
2022-03-23
NSIS检测注册表键是否存在
一定要定义注册表主键,否则检测无效。Name "检测注册表键是否存在" OutFile "检测注册表键是否存在.exe" ;定义注册表主键 !define HKEY_CLASSES_ROOT 0x80000000 !define HKEY_CURRENT_USER 0x80000001 !define HKEY_LOCAL_MACHINE 0x80000002 !define HKEY_USERS 0x80000003 Section Pop $R1 Pop $R0 System::Call "*(i 0) i .R0" ;为键的句柄创建一个缓存 Push "Software\Daum\PotPlayerMini64\Positions" ;将要检测的键放入内存中 system::call 'Advapi32::RegOpenKey(i ${HKEY_CURRENT_USER}, t s, i R0) .iR1' ;调用API进行检查,返回值在$R1中 system::call 'Advapi32::RegCloseKey(i R0)' ;关闭该键的句柄 system::free ;释放内存 ;返回值: ;0代表键存在 ;2代表键不存在 ;其它值表示出错 MessageBox MB_OK "$R1" SectionEnd
2022年03月23日
329 阅读
1 评论
0 点赞
2022-03-21
NSIS检测http默认打开程序并终止其进程
有人问相关问题,写着玩的。发出来可能对新手有帮助。代码来自:少轻狂Name http OutFile http.exe !include "FileFunc.nsh" !include "WordFunc.nsh" Section ReadRegStr $R1 HKCR "http\shell\open\command" "" MessageBox MB_OK "$R1" ${GetFileName} "$R1" $R2 ${WordFind} "$R2" ".exe" "+1" $R3 KillerHTTP: killer::KillProcess "$R3.exe" killer::IsProcessRunning "$R3.exe" Pop $R0 StrCmp $R0 1 KillerHTTP NextHTTP NextHTTP: SectionEnd
2022年03月21日
236 阅读
0 评论
1 点赞
2022-03-21
NSIS比较版本号
代码来自:少轻狂Name ver OutFile ver.exe !include "MUI2.nsh" !include "WordFunc.nsh" Section - "比较版本号" ReadRegStr $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion MessageBox MB_OK "$R1" ${VersionCompare} "6.1" "$R1" $R2 ${If} $R2 == 0 MessageBox MB_OK "版本相同($R1)" ${ElseIf} $R2 == 1 MessageBox MB_OK "已安装版本低($R1)" ${ElseIf} $R2 == 2 MessageBox MB_OK "已安装版本高($R1)" ${EndIf} SectionEnd
2022年03月21日
381 阅读
0 评论
0 点赞
2022-03-21
NSIS检测当前默认浏览器
通过读注册表检测当前默认浏览器,读取路径及浏览器名称并判断是否运行调用杀掉进程。测试环境:WInXP、WIn7、Win10 (IE、360、谷歌、QQ、搜狗、火狐)浏览器都读取有效。其它浏览器未测试。代码来自:星空不寂寞XPStyle on Page instfiles OutFile "Progid.exe" Name "Progid" Section ReadRegStr $R0 HKCU "Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice" "Progid" ReadRegStr $R2 HKLM "SOFTWARE\Classes\$R0\shell\open\command" "" System::Call `shlwapi::PathRemoveArgs(tR2R2)` System::Call "shlwapi::PathUnquoteSpaces(tR2R2)" System::Call "shlwapi::PathRemoveFileSpec(tR2R3)" System::Call "shlwapi::PathStripPath(tR2R2)" MessageBox MB_ICONINFORMATION "当前默认浏览器名称:$R2 $\n$\n安装路径为:$R3" killer::IsProcessRunning "$R2" Pop $0 IntCmp $0 1 0 No MessageBox MB_YESNO|MB_ICONQUESTION "检查到浏览器正在运行是否关闭进程?" IDNO +2 killer::KillProcess $0 No: SectionEnd
2022年03月21日
146 阅读
0 评论
0 点赞
2022-01-29
NSIS增加关于按钮示例
如果是使用Unicode版的NSIS,请将此文件转为Unicode编码。!ifdef NSIS_UNICODE !AddPluginDir Plugins\Unicode !else !AddPluginDir Plugins !endif !AddIncludeDir Include !include "MUI2.nsh" !include "dialog.nsh" Name "About Button Example" OutFile AboutButton.exe InstallDir $TEMP RequestExecutionLevel User !define IDC_ABOUT 1300 !define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "SimpChinese" LangString TEXT_BTN ${LANG_ENGLISH} "&About" LangString TEXT_MSG ${LANG_ENGLISH} "This is the About Button example script!" LangString TEXT_BTN ${LANG_SIMPCHINESE} "关于(&A)" LangString TEXT_MSG ${LANG_SIMPCHINESE} "这是关于按钮示例脚本!" Section Install Sleep 250 Sleep 250 Sleep 250 Sleep 250 Sleep 250 Sleep 250 Sleep 250 Sleep 250 Sleep 250 Sleep 250 SectionEnd Function onGUIInit System::Call `user32::SendMessage(i$HWNDPARENT,i${WM_GETFONT},i0,i0)i.s` System::Call `kernel32::GetModuleHandle(in)i.s` System::Call `*(i8,i201,i50,i14)i.R0` System::Call `user32::MapDialogRect(i$HWNDPARENT,iR0)` System::Call `*$R0(i.s,i.s,i.s,i.s)` System::Call `kernel32::GlobalFree(iR0)` System::Call `user32::CreateWindowEx(i,ts,ts,i${BS_PUSHBUTTON}|${WS_CHILD}|${WS_VISIBLE}|${WS_TABSTOP},is,is,is,is,i$HWNDPARENT,i${IDC_ABOUT},is,i)i.s` `Button` `$(TEXT_BTN)` System::Call `user32::SendMessage(is,i${WM_SETFONT},is,i0)` GetFunctionAddress $R0 FuncAbout ButtonEvent::AddEventHandler /NOUNLOAD ${IDC_ABOUT} $R0 FunctionEnd Function FuncAbout DialogBox::Init 220 90 "关于本程序..." Pop $0 ${If} $0 != error ${DB_AddLabel} 10 5 100 8 "这是关于按钮示例脚本!" Pop $1 DialogBox::Show ${EndIf} FunctionEnd Function .onGUIEnd ButtonEvent::Unload FunctionEnd相关插件{anote icon="fa-mouse-pointer" href="https://www.nsisfans.com/DialogBox.html" type="secondary" content="DialogBox"/}
2022年01月29日
467 阅读
0 评论
1 点赞
2022-01-29
NSIS改变界面字体大小
;NSIS Modern User Interface ;Multilingual Example Script ;Written by Joost Verburg ;-------------------------------- ;Include Modern UI !include "MUI.nsh" ;-------------------------------- ;General ;Name and file Name "Modern UI Test" OutFile "MultiLanguage.exe" ;Default installation folder InstallDir "$PROGRAMFILES\Modern UI Test" ;Get installation folder from registry if available InstallDirRegKey HKCU "Software\Modern UI Test" "" ;-------------------------------- ;Interface Settings !define MUI_ABORTWARNING ;-------------------------------- ;Language Selection Dialog Settings ;Remember the installer language !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" !define MUI_LANGDLL_REGISTRY_KEY "Software\Modern UI Test" !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" ;-------------------------------- ;Pages !define MUI_PAGE_CUSTOMFUNCTION_SHOW ChangeMainFont !insertmacro MUI_PAGE_LICENSE $(MUILicense) !define MUI_PAGE_CUSTOMFUNCTION_SHOW ChangeFont2 !insertmacro MUI_PAGE_COMPONENTS !define MUI_PAGE_CUSTOMFUNCTION_SHOW ChangeFont !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "English" # first language is the default language !insertmacro MUI_LANGUAGE "SimpChinese" !insertmacro MUI_LANGUAGE "TradChinese" ;-------------------------------- ;License Language String LicenseLangString MUILicense ${LANG_ENGLISH} "${NSISDIR}\Docs\Modern UI\License.txt" LicenseLangString MUILicense ${LANG_SIMPCHINESE} "${NSISDIR}\Docs\Modern UI\License.txt" LicenseLangString MUILicense ${LANG_TRADCHINESE} "${NSISDIR}\Docs\Modern UI\License.txt" ;-------------------------------- ;Reserve Files ;These files should be inserted before other files in the data block ;Keep these lines before any File command ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA) !insertmacro MUI_RESERVEFILE_LANGDLL ;-------------------------------- ;Installer Sections Section "Dummy Section" SecDummy SetOutPath "$INSTDIR" ;ADD YOUR OWN FILES HERE... ;Store installation folder WriteRegStr HKCU "Software\Modern UI Test" "" $INSTDIR ;Create uninstaller WriteUninstaller "$INSTDIR\Uninstall.exe" SectionEnd ;-------------------------------- ;Installer Functions Function .onInit !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd ;-------------------------------- ;Descriptions ;USE A LANGUAGE STRING IF YOU WANT YOUR DESCRIPTIONS TO BE LANGAUGE SPECIFIC ;Assign descriptions to sections !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} "A test section." !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- ;Uninstaller Section Section "Uninstall" ;ADD YOUR OWN FILES HERE... Delete "$INSTDIR\Uninstall.exe" RMDir "$INSTDIR" DeleteRegKey /ifempty HKCU "Software\Modern UI Test" SectionEnd ;-------------------------------- ;Uninstaller Functions Function un.onInit !insertmacro MUI_UNGETLANGUAGE FunctionEnd Function ChangeFont FindWindow $0 "#32770" "" $HWNDPARENT ;$0 保存主窗口句柄 GetDlgItem $R0 $0 1001 CreateFont $R1 "宋体" 9 0 ;浏览按钮字体 SendMessage $R0 ${WM_SETFONT} $R1 0 GetDlgItem $R0 $0 1006 CreateFont $R1 "宋体" 15 0 ;安装目录选择页面 字体 SendMessage $R0 ${WM_SETFONT} $R1 0 FunctionEnd Function ChangeFont2 FindWindow $5 "#32770" "" $HWNDPARENT GetDlgItem $R5 $5 1032 CreateFont $R2 "宋体" 11 0 ;组件选择名称字体 SendMessage $R5 ${WM_SETFONT} $R2 0 GetDlgItem $R5 $5 1042 SendMessage $R5 ${WM_SETFONT} $R2 0 FunctionEnd Function ChangeMainFont FindWindow $2 "#32770" "" $HWNDPARENT CreateFont $R2 "宋体" 104 0 GetDlgItem $R5 $2 1 SendMessage $R5 ${WM_SETFONT} $R2 0 GetDlgItem $R6 $2 2 SendMessage $R6 ${WM_SETFONT} $R2 0 GetDlgItem $R6 $2 3 SendMessage $R6 ${WM_SETFONT} $R2 0 FunctionEnd
2022年01月29日
329 阅读
0 评论
0 点赞
2022-01-26
NSIS清理系统通知区域无用图标
第一步,删除图标注册表键值第二步,重启Explorer进程# NSIFFANS.COM # 第一步,删除图标注册表键值 # 第二步,重启Explorer进程 Name "清理通知区域无用图标" OutFile "清理通知区域无用图标.exe" Section DeleteRegValue HKCR "Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" "IconStreams" DeleteRegValue HKCR "Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" "PastIconsStream" DeleteRegValue HKCU "Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" "IconStreams" DeleteRegValue HKCU "Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" "PastIconsStream" FindWindow $0 "Progman" "Program Manager" System::Call User32::GetWindowThreadProcessId(ir0,*i.r0) System::Call Kernel32::OpenProcess(i0x0001,i,ir0)i.r0 System::Call Kernel32::TerminateProcess(ir0,i0) System::Call Kernel32::CloseHandle(ir0) SectionEnd
2022年01月26日
119 阅读
0 评论
0 点赞
2022-01-21
NSIS在欢迎页面和完成页面添加文字、超链接
在欢迎页面和完成页面添加文字、超链接。代码来自:贾可!include MUI2.nsh Name "Example" InstallDir $TEMP OutFile Example.exe !define MUI_LANGDLL_ALWAYSSHOW # 始终显示语言选择对话框 !define MUI_LANGDLL_ALLLANGUAGES # 始终显示所有可用语言 # 如果是单语言,也可以将 $(Welcome.Page.Extra) 和 $(Finish.Page.Link) 直接替换成你需要的文字。 !define MUI_WELCOMEPAGE_TEXT "$(MUI_TEXT_WELCOME_INFO_TEXT)$\r$\n$\r$\n$\r$\n$\r$\n$\r$\n$\r$\n$\r$\n$\r$\n$(Welcome.Page.Extra)" !define MUI_FINISHPAGE_LINK "$(Finish.Page.Link)" !define MUI_FINISHPAGE_LINK_LOCATION "https://jq.qq.com/?_wv=1027&k=QFymvYMY" !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE SimpChinese !insertmacro MUI_LANGUAGE English LangString Welcome.Page.Extra ${LANG_SimpChinese} "本程序由 NSIS 技术交流群出品" LangString Welcome.Page.Extra ${LANG_English} "Produced by Tech-Exchange of NSIS" LangString Finish.Page.Link ${LANG_SimpChinese} "加入 NSIS 技术交流群" LangString Finish.Page.Link ${LANG_English} "Join Tech-Exchange of NSIS" ShowInstDetails show Section - SetDetailsPrint textonly DetailPrint "Please wait while installing..." SetDetailsPrint listonly Sleep 200 Sleep 200 Sleep 200 Sleep 200 Sleep 200 Sleep 200 Sleep 200 Sleep 200 Sleep 200 Sleep 200 SectionEnd Function .onInit # 显示语言选择对话框 !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd
2022年01月21日
164 阅读
0 评论
0 点赞
2022-01-15
NSIS多语言安装或升级示例
#Unicode true #By:贾可 !include MUI2.nsh Name "Example" Caption "Example" OutFile "Example.exe" InstallDir $TEMP !define MUI_LANGDLL_ALWAYSSHOW !define MUI_LANGDLL_ALLLANGUAGES !define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit !define MUI_PAGE_CUSTOMFUNCTION_PRE VerifyUpdateMode !insertmacro MUI_PAGE_WELCOME !define MUI_PAGE_CUSTOMFUNCTION_PRE VerifyUpdateMode !insertmacro MUI_PAGE_DIRECTORY Var Instfiles.Header.Text Var Instfiles.Header.SubText Var Instfiles.Finish.Text Var Instfiles.Finish.SubText Var Instfiles.Abort.Text Var Instfiles.Abort.SubText Var Instfiles.Mode !define MUI_PAGE_HEADER_TEXT "$Instfiles.Header.Text" !define MUI_PAGE_HEADER_SUBTEXT "$Instfiles.Header.SubText" !define MUI_INSTFILESPAGE_FINISHHEADER_TEXT "$Instfiles.Finish.Text" !define MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT "$Instfiles.Finish.SubText" !define MUI_INSTFILESPAGE_ABORTHEADER_TEXT "$Instfiles.Abort.Text" !define MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT "$Instfiles.Abort.SubText" !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE SimpChinese !insertmacro MUI_LANGUAGE English LangString Update.Prompt.Text ${LANG_SimpChinese} "点击“是”执行初次安装操作,点击“否”执行覆盖升级操作。" LangString Update.Header.Text ${LANG_SimpChinese} "正在升级" LangString Update.Header.SubText ${LANG_SimpChinese} "$(^NameDA) 正在升级,请稍候。" LangString Update.Finish.Text ${LANG_SimpChinese} "升级完成" LangString Update.Finish.SubText ${LANG_SimpChinese} "升级程序已成功地运行完成。" LangString Update.Abort.Text ${LANG_SimpChinese} "升级己中止" LangString Update.Abort.SubText ${LANG_SimpChinese} "升级程序未成功地运行完成。" LangString Update.Prompt.Text ${LANG_English} "Please click $\"Yes$\" to perform installation, or $\"No$\" to perform update." LangString Update.Header.Text ${LANG_English} "Updating" LangString Update.Header.SubText ${LANG_English} "Please wait while $(^NameDA) is being updated." LangString Update.Finish.Text ${LANG_English} "Update Complete" LangString Update.Finish.SubText ${LANG_English} "Setup was completed successfully." LangString Update.Abort.Text ${LANG_English} "Update Aborted" LangString Update.Abort.SubText ${LANG_English} "Setup was not completed successfully." ShowInstDetails show Section "-Install" Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 Sleep 100 SectionEnd Function .onInit !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd Function onGUIInit ${If} ${Cmd} `MessageBox MB_ICONINFORMATION|MB_YESNO "$(Update.Prompt.Text)" /SD IDYES IDNO` StrCpy $Instfiles.Header.Text "$(Update.Header.Text)" StrCpy $Instfiles.Header.SubText "$(Update.Header.SubText)" StrCpy $Instfiles.Finish.Text "$(Update.Finish.Text)" StrCpy $Instfiles.Finish.SubText "$(Update.Finish.SubText)" StrCpy $Instfiles.Abort.Text "$(Update.Abort.Text)" StrCpy $Instfiles.Abort.SubText "$(Update.Abort.SubText)" StrCpy $Instfiles.Mode 1 ${Else} StrCpy $Instfiles.Header.Text "$(MUI_TEXT_INSTALLING_TITLE)" StrCpy $Instfiles.Header.SubText "$(MUI_TEXT_INSTALLING_SUBTITLE)" StrCpy $Instfiles.Finish.Text "$(MUI_TEXT_FINISH_TITLE)" StrCpy $Instfiles.Finish.SubText "$(MUI_TEXT_FINISH_SUBTITLE)" StrCpy $Instfiles.Abort.Text "$(MUI_TEXT_ABORT_TITLE)" StrCpy $Instfiles.Abort.SubText "$(MUI_TEXT_ABORT_SUBTITLE)" ${EndIf} FunctionEnd Function VerifyUpdateMode ${If} $Instfiles.Mode <> 0 Abort ${EndIf} FunctionEnd
2022年01月15日
187 阅读
1 评论
0 点赞
1
2