最近把 Zed 換成社群漢化版 zed-i18n 之後,發現一個很煩人的小問題:檔案總管右鍵選單裡完全找不到「Open with Zed」,重裝好幾次都一樣。這篇記錄一下整個排查過程,跟最後真正解決問題的方法。
問題現象
裝好 zed-i18n 之後,去檔案總管對任何檔案或資料夾按右鍵,選單裡就是沒有「使用 Zed 開啟」這個選項。重新安裝了好幾次,甚至換了不同的下載來源,狀況都一樣。
第一輪排查:以為是安裝程式沒寫入登錄檔
一開始的假設很直覺:zed-i18n 是社群自製的版本,可能沒有像官方安裝程式一樣,在安裝過程中去寫入 Windows 的右鍵選單登錄檔。所以先試了手動加登錄檔的做法:
[HKEY_CLASSES_ROOT\*\shell\Open with Zed]
@="Open with Zed"
"Icon"="D:\\Programs\\Zed\\Zed.exe"
[HKEY_CLASSES_ROOT\*\shell\Open with Zed\command]
@="\"D:\\Programs\\Zed\\Zed.exe\" \"%1\""加完之後右鍵選單裡確實出現了,但要點「顯示其他選項」才看得到,跟 Windows 11 精簡選單的行為不太一樣,用起來很麻煩。
這條路是死路
後來發現這個方向從一開始就錯了——傳統 registry shell 項目本來就只會出現在 Windows 11 的「顯示其他選項」次選單裡,除非全域改回 Windows 10 舊版選單樣式。但這不是根本原因,真正的問題出在別的地方。
關鍵線索:官方 Zed 用的是 Appx,不是傳統 Registry
回頭查了 Zed 的 Windows 安裝腳本原始碼(crates/zed/resources/windows/zed.iss)才發現,官方版本其實會判斷系統是不是 Windows 11:
- Windows 11:安裝一個叫
explorer_command_injector的 Appx 套件去註冊右鍵選單,這樣選單項目才會直接顯示在第一層,不用點「顯示其他選項」 - 非 Windows 11:才會走傳統的
HKCU\Software\Classes\*\shell\...登錄檔路徑
也就是說,同事的 Zed(官方版)在 Windows 11 上能正常顯示右鍵選單,靠的就是這個 appx 機制,跟我一開始猜的登錄檔完全無關。
第二輪排查:appx 缺少數位簽章
既然知道機制了,下一步就是去確認 zed-i18n 資料夾裡有沒有這個 appx 檔案:
D:\Programs\Zed\appx\zed_explorer_command_injector.appx檔案確實存在,先清掉之前手動加的舊版登錄檔(避免跟新機制打架),再用系統管理員 PowerShell 手動註冊:
Add-AppxPackage -Path "D:\Programs\Zed\appx\zed_explorer_command_injector.appx" -ExternalLocation "D:\Programs\Zed\appx"結果噴了這個錯誤:
Add-AppxPackage: Deployment failed with HRESULT: 0x800B0100, 主體中目前沒有任何簽章。
錯誤 0x800B0100: 必須為應用程式套件加上數位簽章,應用程式才能通過簽章驗證。真相大白:zed-i18n 打包出來的 appx 沒有做數位簽章,Windows 預設拒絕安裝未簽章的 appx 套件。這才是右鍵選單一直不出現的根本原因。
解法:借用官方已簽章的 appx
explorer_command_injector.appx 這個套件的功能很單純——注入右鍵選單、呼叫同資料夾底下的 zed.exe,跟語言版本完全無關。所以最簡單的解法就是拿官方安裝版裡已經簽好章的 appx 來用:
- 到 Zed 官方 GitHub Releases 下載
Zed-x86_64.exe - 用 7-Zip 試著直接開啟這個 exe,結果只翻得到
.rsrc資源區,appx 是安裝過程動態解壓的,翻不到 - 改用備案:把官方安裝程式裝到一個乾淨的臨時資料夾(例如
C:\Temp\ZedOfficial),裝的時候記得勾選右鍵選單相關選項 - 從臨時資料夾裡把已簽章的 appx 挖出來:
text
C:\Temp\ZedOfficial\appx\zed_explorer_command_injector.appx - 覆蓋到 zed-i18n 的資料夾:
text
D:\Programs\Zed\appx\zed_explorer_command_injector.appx - 再跑一次註冊指令:
powershell
Add-AppxPackage -Path "D:\Programs\Zed\appx\zed_explorer_command_injector.appx" -ExternalLocation "D:\Programs\Zed\appx"
這次順利成功,右鍵選單正常出現「Open with Zed」,不用再點「顯示其他選項」。臨時安裝的官方版之後可以直接刪掉,appx 已經獨立註冊進系統,不會受影響。
小提醒:升級後可能要重做一次
如果之後升級 zed-i18n(直接覆蓋安裝資料夾),appx 有可能被新版本覆蓋回沒簽章的版本,右鍵選單可能又會消失。建議把已簽章的 appx 另外備份一份,下次升級後只要重複「覆蓋 + 執行 Add-AppxPackage」這兩步就好,不用每次都重新跑一次官方安裝程式。
總結
問題不是安裝程式沒寫登錄檔,也不是要不要改 Windows 11 精簡選單樣式,而是社群打包的 appx 缺少數位簽章。用官方已簽章的 appx 替換掉,就能讓漢化版也享有原生的 Windows 11 右鍵選單體驗。