NotepadNext 如何在 Windows 上用 winget 安装带自动更新的安装包并启用右键菜单集成
2026/9/15 14:19:07 网站建设 项目流程

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 ShortcutStart Menu ShortcutContext MenuAuto Updater。要完成标题中的任务,需要确保Context MenuAuto Updater被勾选。winget 通常以非交互方式驱动安装器,README 未说明 winget 具体以何种模式启动安装器,因此不要假定界面上的勾选一定发生过,以下面的注册表核对为准。
  • 安装完成后,向导的 Finish 页默认会尝试启动NotepadNext.exeMUI_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 行):

  1. libcrypto-1_1-x64.dlllibssl-1_1-x64.dll拷贝到安装目录;
  2. 写入注册表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.exeApplications\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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询