首页 / 资讯中心 / 文章详情

Notepad++ 安装避坑:32/64 位、插件 DLL 与 Emmet 配置

Notepad++ 安装避坑:32/64 位、插件 DLL 与 Emmet 配置 ★ FEATURED ARTICLE
简介Notepad 安装包面向 Windows 平台上的程序员、Web 开发者以及需要轻量代码编辑工具的学习者提供可替代系统记事本的免费源代码编辑器安装文件重点满足多语言编辑、语法高亮与功能扩展等日常开发需求。压缩包为 zip 格式整体约 13.2MB内含 Notepad 7.5.8 安装程序并涉及插件管理器与 emeet 插件相关组件便于在部署编辑器时同步获得插件扩展能力。已有 1240 人学习下载说明该版本在中文开发者群体中仍有一定参考价值。读者可借助插件管理器按需管理增强语法高亮、代码折叠、代码自动完成等工具也能了解 emeet 插件在远程会议、屏幕共享或团队代码讨论等协作场景中的潜在用途。安装包版本明确、体积较小适合个人开发环境快速搭建也适合团队试用带插件管理能力的轻量协作编辑方案。1. 别急着双击32 位还是 64 位安装包拆错一步全白搭notepad 安装包大概是每台开发机上第一个被装上去的软件也正因如此它最容易被随手双击、一路下一步装完了事。我见过不止一次翻车机器是 64 位装的是 64 位包插件却从别处拷了一份 32 位的 DLL 进去菜单里干干净净什么都没有人对着屏幕找了两个小时最后发现是位数对不上。这类问题不报错、不弹窗纯粹是“装了但没生效”比直接崩溃更费时间。这套环境的门槛其实不高但涉及的东西不少安装包位数、安装版还是便携版、装到哪个目录、右键菜单和文件关联要不要接管、插件管理器拉不拉得到清单、Emmet 这类非官方插件的前置依赖。任何一环错位都会变成玄学问题。这篇记录面向刚拿到安装包、准备在一台干净的 Windows 机器上落地的开发者从选包一路写到怎么验证它真的跑通了。2. 装前的环境盘点位数、安装版和路径权限怎么定装 notepad 之前值得花五分钟做三件事确认系统位数、决定用安装版还是便携版、挑一个自己有权写入的目录。这三件事在装完之后改起来都麻烦尤其是目录位置后面插件目录、配置目录全都跟着它走。2.1 位数对照系统、安装包、插件 DLL 必须三边一致64 位 Windows 能跑 32 位的 notepad这一点没问题但一旦跑起来它只能加载 32 位插件。反过来说64 位包只能加载 64 位插件。插件和主程序位数不一致时notepad 启动时压根不会去加载那个 DLL也不会给你任何提示插件菜单项直接消失。这是插件“装了没反应”的头号原因。所以在拆包之前先确认两件事系统是 x64 还是 ARM64手上这份 notepad 安装包是 32 位还是 64 位。安装包文件名里通常带x64、x86或者32bit、64bit字样拿不准就直接读 PE 头比看文件名可靠。# 读取 exe 的 PE 头判断它到底是 32 位还是 64 位 $path D:\Tools\Notepad\notepad.exe $fs [System.IO.File]::OpenRead($path) $br New-Object System.IO.BinaryReader($fs) $fs.Position 0x3C # PE 头偏移量固定存在 0x3C 处 $peOffset $br.ReadInt32() $fs.Position $peOffset 4 # 跳过 4 字节签名 PE\0\0 $machine $br.ReadUInt16() # 机器类型字段 $br.Close(); $fs.Close() switch ($machine) { 0x8664 { x64 } # 64 位 0x014c { x86 } # 32 位 0xAA64 { ARM64 } # ARM 平台 default { unknown: 0x{0:X} -f $machine } }这段脚本读取的是文件里的实际字段不看文件名也不看安装位置用它来核对插件 DLL 一样有效。我一般在装完主程序、放插件之前各跑一次两次输出必须一致不一致就先别往下走。0x3C和4是 PE 格式的固定偏移不用记知道它们是“定位机器类型”的意思就够了。提示把插件 DLL 的路径填进同一个脚本里跑一遍就能确认它是不是给错位数了。这一步比重新下载一遍插件快得多。2.2 安装版和便携版zip 解压版怎么挑notepad 一般给两种形态带安装向导的 exe和直接解压就能用的 zip。两者的差别不在功能而在配置和插件的存放位置这一点决定了你后面备份、迁移、升级要怎么做。对比项安装版exe 向导便携版zip 解压程序目录默认在 Program Files 下你自己解压出来的任意目录配置文件位置%APPDATA%\Notepad默认同上放doLocalConf.xml后跟随程序目录插件目录安装目录\plugins解压目录\plugins升级方式覆盖安装需管理员权限解压覆盖不动配置就是无损右键菜单、文件关联向导里可勾选写注册表默认不写需要单独处理适合场景固定开发机、长期主力编辑器移动硬盘随身带、多机器同步、测试新版便携版有个细节值得说清解压出来的 zip 版默认仍然把配置写到%APPDATA%里想让配置跟着程序目录走需要在程序目录下放一个空的doLocalConf.xml文件。放完之后重启配置目录会变成程序目录下的config。这个开关很适合“一个 U 盘带走整套环境”的用法也很适合我这种喜欢把配置一起丢进网盘备份的人。# 便携版切换为本地配置目录在程序目录放一个空标记文件即可 $nppDir D:\Tools\Notepad New-Item -Path (Join-Path $nppDir doLocalConf.xml) -ItemType File -Force | Out-Null # 重启后配置会落在 D:\Tools\Notepad\config Get-ChildItem (Join-Path $nppDir config) | Select-Object Name, LengthdoLocalConf.xml的内容是什么不重要notepad 只判断这个文件存不存在空文件就行。切换之前如果已经有配置在%APPDATA%里记得手动拷过去否则会看到设置全变回默认又是一场虚惊。2.3 安装路径为什么我把它放在 D 盘的自建目录默认路径在C:\Program Files\Notepad能用但我一般改成D:\Tools\Notepad。原因有三个都是踩过之后才想明白的。第一是写权限。插件目录在安装目录下面手动放 DLL、改脚本、更新插件都要往这个目录写文件。放在 Program Files 下每次写都弹一次 UAC写脚本批量拷贝时更难受。第二是升级和回滚覆盖安装要管理员权限想退回旧版本还得先卸载放在自建目录里直接整个文件夹改名就能保留旧版。第三是路径本身插件里带脚本的比如 Python Script 那类对含空格和中文的路径解析偶尔会出问题D:\Tools\Notepad这种短路径最省心。目录建好之后我习惯把“程序”和“我的东西”分开程序目录只放安装出来的文件配置、备份、插件脚本另开一个目录存。这样升级时直接覆盖程序目录不用担心把配置压掉。3. 走一遍向导安装每一页的选项都对应后面一个坑安装向导一共没几页但其中两页的选择会在后面的日常使用里反复出现。这一章按向导顺序走一遍把每页的选项和它对应的后果讲清楚。3.1 组件页右键菜单、文件关联、语言包要不要勾向导走到“组件选择”那一页时会列出几组可勾选项常见的包括右键菜单项在资源管理器里对文件右键就能用 notepad 打开、文件关联把 .txt、.log、.ini 之类的扩展名直接绑到 notepad、自动更新组件、语言与主题等。右键菜单项我一般勾上它对排查日志、临时改配置很顺手。文件关联我一般不勾尤其是 .txt 和 .log——绑上去之后双击任何文本文件都会打开 notepad团队里其他人用你的机器会很不习惯卸载时还容易留下关联残留。真想用的时候可以临时从右键菜单进。自动更新组件建议勾上。notepad 的小版本更新比较频繁多数是插件兼容性修复装完就不管的话插件管理器里的清单和主程序版本对不上反而容易出问题。语言包在第一次启动后还能切向导里先选中文简体即可后面想换英文界面也不用重装。注意如果机器上已经装过一份 notepad向导会提示先卸载旧版再装。直接覆盖装到同一个目录里插件目录和配置目录可能出现两套文件混在一起之后排查问题会非常痛苦。3.2 首次启动更新提示、插件推荐和界面语言装完第一次启动notepad 一般会弹一次更新检查提示问你要不要看新版本。这一步按提示走完就行不做也行但建议至少让它跑一次确认联网和更新通道是通的否则后面插件管理器拉不到清单你还以为是装坏了。界面语言如果在向导里没选对可以在“设置 → 首选项 → 通用 → 本地化”里改改完要重启。深色主题在“设置 → 样式配置器”里选一个顺眼的配色方案就行这个纯属个人习惯不影响功能。启动之后先别急着配插件先确认主程序本身是好的新建一个文件、敲几行字、保存、关掉、再打开能正常读写就说明基础环境没问题。这一步花不了一分钟但能把“装是装上了但打不开文件”的问题挡在插件环节之前。3.3 装完立刻改的三个默认项备份、会话和新建文档编码这三项默认值不算错只是不适合大多数开发场景装完顺手改掉能省掉后面很多麻烦。第一项是备份。默认的简单备份只在文件被外部程序改动时留一份覆盖保存的中间状态是留不下来的。我习惯在“设置 → 首选项 → 备份”里打开详细备份并把备份目录指到程序目录之外的一个固定位置比如E:\Backup\npp。这样误覆盖、误删的情况还能捞回来算是给自己留了颗后悔药。第二项是会话。打开“记住上次打开的会话”之后重启编辑器会恢复上次的标签页对于同时开十几个日志和配置文件的场景很实用。但如果你经常在别人的机器或共享账号下用建议关掉免得把别人的路径带出来。第三项是新建文档的编码和换行符。“设置 → 首选项 → 新建文档”里可以指定默认编码UTF-8 或者 UTF-8 无 BOM和默认换行符。这一项对写脚本、写配置影响很大默认 UTF-8 无 BOM 是现在比较通行的做法交叉平台协作时不容易出乱码。配置改完之后配置文件落在%APPDATA%\Notepad\config.xml安装版或程序目录下的config\config.xml便携版开了本地配置。备份配置其实就是备份这个目录# 把 notepad 的配置目录镜像备份到 E 盘排除缓存和升级临时文件 $src $env:APPDATA\Notepad $dst E:\Backup\npp-config # /MIR 镜像同步/XD 排除缓存类目录/R:1 失败只重试一次避免卡住 robocopy $src $dst /MIR /XD cache updater backup /R:1 /W:1 /NFL /NDL # 备份完顺手看一眼最近改动的配置文件时间 Get-ChildItem $dst -Filter *.xml | Sort-Object LastWriteTime -Descending | Select-Object -First 5 Name, LastWriteTimerobocopy的/MIR是镜像会把目标目录里多余的文件删掉所以目标路径一定要指向专门的备份文件夹别指到别的项目里去。/XD cache updater backup排除的是缓存、升级临时文件和大体积的备份目录那几个动辄几百兆没必要跟着配置一起同步。备份完成之后看时间戳能确认这一轮真的写进去了而不是同步了个空目录。4. 插件管理器落地Plugins Admin、手动 DLL 和 Emmet 的前置条件notepad 的插件体系是它跟普通记事本拉开差距的地方也是最容易卡住的地方。新一点的版本内置了 Plugins Admin 作为插件管理器界面里勾选、下载、重启就能用老版本或者网络受限的情况下就得手动往目录里放 DLL。两条路都要会因为总有走不通的时候。4.1 Plugins Admin 的实际工作方式与联网失败时的退路Plugins Admin 从菜单“插件 → Plugins Admin”进入打开后是一个插件清单勾选需要的插件点安装它会自己下载并解压到plugins目录下然后提示重启。清单本身是联网拉取的所以第一次打开会有一个短暂的加载过程。它做的事其实很朴素下载压缩包、解压到安装目录\plugins\插件名\、重启加载。理解这一点之后很多问题就有了解法。比如清单一直转圈或者打开是空白的基本就是清单拉不下来跟主程序装没装好没关系这时候不用重装 notepad直接走手动 DLL 那条路。插件装完之后菜单项出现在“插件”菜单下有的还会在工具栏加图标。如果清单里显示已安装但菜单里没有先别急着卸载重装看下一节的目录结构。4.2 手动放 DLL目录结构、位数校验和重启顺序手动装插件的坑集中在目录结构上。notepad 从 7.6 之后的版本开始要求插件放在以插件名命名的子目录里也就是plugins\插件名\插件名.dll这样的两层结构。老教程里那种直接丢到plugins根目录的做法在新版本上是不生效的而它不生效的方式就是安静地什么都不做。正确的目录长这样D:\Tools\Notepad\ ├── notepad.exe ├── plugins\ │ ├── Converter\ │ │ └── Converter.dll - 插件名目录 同名 DLL │ ├── PythonScript\ │ │ ├── PythonScript.dll │ │ └── scripts\ - 脚本类插件的脚本放这里 │ └── Config\ - 插件自己的配置文件目录会自动生成 └── config\ - 便携版的配置目录放之前先用 2.1 的脚本核对一遍 DLL 位数和主程序是否一致放之后完全退出 notepad不是关窗口是从菜单退出或者确认任务管理器里没有残留进程再重新打开。notepad 是启动时扫描插件目录的运行期间往目录里塞文件不会被加载这一点很多人栽过。# 批量核对 plugins 目录下所有 DLL 的位数找出和主程序不一致的那个 $nppDir D:\Tools\Notepad function Get-PEMachine([string]$file) { $fs [System.IO.File]::OpenRead($file) $br New-Object System.IO.BinaryReader($fs) $fs.Position 0x3C $peOffset $br.ReadInt32() $fs.Position $peOffset 4 $machine $br.ReadUInt16() $br.Close(); $fs.Close() return $machine } $main Get-PEMachine (Join-Path $nppDir notepad.exe) Get-ChildItem (Join-Path $nppDir plugins) -Recurse -Filter *.dll | ForEach-Object { $m Get-PEMachine $_.FullName [PSCustomObject]{ Plugin $_.Name Machine 0x{0:X} -f $m Match ($m -eq $main) # False 就是位数不匹配要换包 } }Match这一列是False的就是那个“装了但没出现”的插件。这段脚本我在处理别人留下的半成品环境时用得最多比一个个右键属性看文件信息快太多。4.3 Emmet 插件为什么它要先把 Python Script 装上搜 Emmet 插件的人不少其中一部分拼成了 emeet 插件按这个词去插件管理器里翻翻到天荒地老也翻不到——它压根不是 notepad 官方插件清单里的东西。notepad 上的 Emmet 通常是社区方案实现方式是一个 Python 脚本跑在 Python Script 这个插件提供的解释环境里。所以安装顺序是固定的先装 Python Script 插件这个在 Plugins Admin 清单里有也可以手动放再把 Emmet 的脚本文件放进plugins\PythonScript\scripts\目录重启后在“插件 → Python Script → Scripts”里能看到它。D:\Tools\Notepad\plugins\PythonScript\ ├── PythonScript.dll ├── scripts\ │ ├── EmmetNPP.py - Emmet 主脚本 │ └── ... - 其它脚本不要混放 └── config\ └── PythonScript.ini - 快捷键等配置在这里放好之后建议在“插件 → Python Script → Configuration”里把脚本的启动方式设为ATSTARTUP让它在启动时自动加载否则每次都要手动跑一次。快捷键在 Python Script 的配置菜单里绑具体键位看脚本里怎么写的绑完记得先保存配置再重启。验证办法很简单新建一个 HTML 文件输入ulli*3把光标停在行尾按你绑的展开键能展开成三段li就说明整条链通了。展不开的话先确认 Python Script 的菜单里能不能看到脚本名看不到就是路径放错了看得到但按了没反应就是快捷键没绑或者脚本报错后者可以在 Python Script 的控制台里看到具体异常。5. 避坑排查装完打不开、插件不出现、中文乱码的五种情形5.1 安装阶段双击没反应和“装了两遍”现象一双击安装包进度条走完程序没起来任务管理器里也找不到进程。原因通常是两个一是安装被安全软件拦在了最后一步安装包解压出来的 exe 被隔离二是装的是 32 位包而系统上有一份 64 位版本已经在跑安装程序把旧版本的文件覆盖了一半就退出了。解决办法是先确认安装目录里notepad.exe的文件大小和修改时间是不是刚才那次安装产生的不是就说明安装没真正完成然后把安装包整个解压出来单独跑或者在安全软件里给安装目录加白名单。装之前务必从“控制面板 → 程序和功能”里确认旧版本已经卸干净别嫌麻烦。现象二机器上出现两份 notepad一份在 Program Files一份在你指定的 D 盘目录右键菜单有两项插件装到哪一份都不生效。原因是向导默认路径和自定义路径装了两次注册表里的右键菜单项被后装的那次覆盖但文件关联还指着旧路径。解决方式很简单卸载掉不要的那一份然后从注册表里清掉残留的右键菜单项用安装版自带的卸载程序一般会清干净把程序目录统一到一个位置之后再重新装一次插件。5.2 插件阶段清单空白和菜单里找不到现象三打开 Plugins Admin列表一直加载最后是空的。原因是插件清单需要联网拉取网络环境不通畅或者被中间设备拦了清单就下不来。这跟 notepad 装得好不好没关系换手动安装就行去插件的发行页下载对应的压缩包解压到plugins\插件名\注意位数匹配重启验证。这条路虽然土但在离线环境里是唯一可靠的办法。现象四插件目录里明明有 DLL插件菜单里却什么都没有。按概率从高到低排位数不匹配用 4.2 的脚本查、目录层级放错必须放在以插件名命名的子目录里不能直接扔plugins根目录、放完没有完全退出进程再打开、DLL 本身依赖的运行库缺失部分插件要额外的运行环境。四条按顺序排除基本能在五分钟内定位。5.3 编码与配置阶段乱码、换行符和升级丢配置现象五打开别人发来的日志或者配置文件中文全是乱码或者行尾多出一堆^M。中文乱码多半是编码判断错了从“编码”菜单里试一下 UTF-8 和 GB2312 之间的切换能正常显示就说明原文件是那个编码注意切换编码时不要直接保存先另存为副本。^M是 Windows 和 Unix 换行符不一致从“编辑 → EOL 转换”里选目标格式再保存但要注意这会影响整个文件团队协作时先跟对方确认用哪种。配置丢失则多发生在升级之后。覆盖安装时如果安装目录选错了比如原来在 D 盘这次用了默认的 Program Files新版本读的是新目录下的配置看起来就是所有设置归零。解决办法是升级前用 3.3 的脚本备份一遍配置目录升级之后再核对一次更稳的做法是用便携版整个目录改名保留一份旧版出问题直接切回去。6. 冒烟测试十分钟验证这套 notepad 真的跑通了装完不算完跑通才算完。我习惯用一份固定的小清单验一遍不依赖记忆也不用等到真出问题才发现哪一环是虚的。下面这段脚本把关键的几项串起来查输出一串布尔值全 True 才算这套环境立住了。# notepad 安装后冒烟测试主程序、位数、插件目录、配置目录、注册表菜单 $nppDir D:\Tools\Notepad $exe Join-Path $nppDir notepad.exe $plugins Join-Path $nppDir plugins $result [ordered]{} $result[主程序存在] Test-Path $exe $result[主程序可执行] (Test-Path $exe) -and ((Get-Item $exe).Length -gt 1MB) $result[插件目录存在] Test-Path $plugins $result[配置目录存在] Test-Path (Join-Path $nppDir config) # 插件 DLL 是否都放在同名子目录里7.6 的结构要求 $badLayout Get-ChildItem $plugins -Filter *.dll -File -ErrorAction SilentlyContinue $result[插件目录结构合规] ($null -eq $badLayout -or $badLayout.Count -eq 0) # 右键菜单项是否注册不同版本写入位置略有差异存在其一即可 $regPaths ( Registry::HKEY_CLASSES_ROOT\*\shell\Open with Notepad, Registry::HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\Notepad ) $result[右键菜单已注册] ($regPaths | Where-Object { Test-Path $_ }).Count -gt 0 $result.GetEnumerator() | ForEach-Object { {0,-16} {1} -f $_.Key, $_.Value }插件目录结构合规那一项查的是“有没有 DLL 直接躺在plugins根目录”有就说明有插件放错了层级大概率是那个插件不生效。注册表那项给了两个常见位置版本不同写入点不一样只要命中一个就算过。脚本跑完之后还有三件事是脚本查不到的得手动确认验证项操作通过标准读写与编码新建文件、输入中文、保存为 UTF-8、重开中文不乱码行尾无反斜杠错乱插件加载打开“插件”菜单已装的插件名都在菜单可点开Emmet 展开新建 html输入ulli*3后按快捷键展开成三段li标签命令行参数notepad.exe -n5 D:\test.log打开文件并跳到第 5 行命令行那一项很多人不知道notepad 支持-n跳行、-c强制新实例排查日志时从脚本里直接调很方便顺手验一下能确认 PATH 环境变量或者快捷方式没被搞坏。从那以后我每次装完 notepad不管多急都强制走一遍这套清单——主程序、位数、插件目录、配置备份四样各查一次比出问题后再去翻文档省事得多。装软件这件事验证的那十分钟永远比返工的那两小时便宜。这份安装包和配套的插件目录结构我都按 32 位、64 位分开放好了取的时候先看一眼自己机器是哪个位数别在第一步就把路走岔。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站