NotepadNext 如何在 Windows 上用 winget 安装带自动更新的安装包并启用右键菜单集成
【免费下载链接】NotepadNextA cross-platform, reimplementation of Notepad++项目地址: https://gitcode.com/GitHub_Trending/no/NotepadNext
在 Windows 上安装 NotepadNext 时,分发方式决定了你能拿到哪些组件。README.md 中明确:Windows 包有安装包(installer)和独立 zip 两种形式,只有安装包附带 auto-updater 和 Windows context menu integration 这两个额外组件;通过 Winget 安装走的就是安装包渠道。本文完成的任务是:用一条 winget 命令安装,然后核对"Edit with Notepad Next"右键菜单项和自动更新开关确实生效。
开始前需要知道的一条限制:README 声明应用整体稳定可用,但"should not be considered safe for critically important work",正式使用请自行评估。
前置条件
- Windows 系统,且系统中可用
winget。README 只给出 winget 命令本身,不覆盖 winget 自身的安装问题。 - 如果你只需要编辑功能,zip 版本就够;需要自动更新和右键菜单时,必须使用安装包(即本文的 winget 路径)。
执行安装
在 PowerShell 或命令提示符中运行:
winget install dail8859.NotepadNext安装包基于 NSIS 构建,脚本见 installer/installer.nsi。与本文两个目标直接相关的配置:
- 安装器为 64 位、基于 NsisMultiUser 的多用户安装,默认安装模式为 all users(
MULTIUSER_INSTALLMODE_DEFAULT_ALLUSERS 1),并允许 UAC 提权。默认情况下注册表项写入 HKLM。 - 安装向导的 Components 页面提供四个可选项:
Desktop Shortcut、Start Menu Shortcut、Context Menu、Auto Updater。要完成标题中的任务,需要确保Context Menu与Auto Updater被勾选。winget 通常以非交互方式驱动安装器,README 未说明 winget 具体以何种模式启动安装器,因此不要假定界面上的勾选一定发生过,以下面的注册表核对为准。 - 安装完成后,向导的 Finish 页默认会尝试启动
NotepadNext.exe(MUI_FINISHPAGE_RUN)。 - 如果安装目录已存在且非空,安装器会弹出警告并询问是否清空该目录后再安装;与上一版本位于同一目录时不受影响。
验证右键菜单集成
安装器在Context Menu组件中写入以下注册表项(installer.nsi 第 226-232 行):
; 键:Software\Classes\*\shell\NotepadNext ; (默认值) = "Edit with Notepad Next" ; icon = "$INSTDIR\NotepadNext.exe" ; ; 键:Software\Classes\*\shell\NotepadNext\command ; (默认值) = "$\"$INSTDIR\NotepadNext.exe$\" $\"%1$\""其中$INSTDIR是安装目录,安装完成后替换为实际路径。默认 all users 模式下这些键位于 HKLM。
功能验证:在资源管理器中对任意文件点右键,应看到 "Edit with Notepad Next" 菜单项;点击后 NotepadNext 以该文件作为参数启动(command 值中的%1即被右键的文件)。
验证自动更新组件
Auto Updater组件做两件事(installer.nsi 第 242-256 行):
- 将
libcrypto-1_1-x64.dll与libssl-1_1-x64.dll拷贝到安装目录; - 写入注册表
Software\NotepadNext\NotepadNext\AutoUpdate(DWORD,值为 1)。卸载该组件时会把该值写回 0。
应用侧对应逻辑在 src/dialogs/MainWindow.cpp 的initUpdateCheck():
- Windows 上启动时读取注册表值
AutoUpdate。值为 1 时,"Check for Updates" 菜单项可用,并且启动约 15 秒后检查设置项App/LastUpdateCheck——如果距上次检查已超过 7 天,则自动执行一次静默更新检查; - 值为 0 时,"Check for Updates" 菜单项被禁用并隐藏;
- 手动触发检查且当前没有可用更新时,会弹出消息 "No updates are available at this time.",这可以作为"更新检查链路已打通"的直接观察结果。
因此核对顺序为:注册表中AutoUpdate = 1→ 应用内 "Check for Updates" 菜单项可见 → 手动触发一次检查,确认出现"无可用更新"提示或更新提示。
卸载与回滚
- 卸载器会删除
Software\Classes\*\shell\NotepadNext右键菜单注册项,以及应用注册相关键(App Paths\NotepadNext.exe、Applications\NotepadNext.exe下的 shell verbs、SystemFileAssociations\text\OpenWithList\NotepadNext.exe); - 仅取消
Auto Updater组件时,安装器把AutoUpdate写为 0,不删除已拷贝的 DLL(脚本注释中说明 DLL 可能残留但无碍)。
以上注册表路径与行为均来自安装脚本和源码,可作为安装后逐项核对的依据。
【免费下载链接】NotepadNextA cross-platform, reimplementation of Notepad++项目地址: https://gitcode.com/GitHub_Trending/no/NotepadNext
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考