主要參考Win11 Context Menu Demo
此工程是vs2022編譯,vs2019先修改下 base.h 方可編譯過
編譯好dll以后 拷貝至SparsePackage目錄下
生成稀疏包msix
就拿他工程里面的改,編輯AppxManifest.xml,配置都要對,一個不對可能都失敗,尤其是發布者證書,這里我們用自簽證書,還有<Resources>? ? <Resource Language="en-us" />? </Resources> 這個也要加上,Demo里面沒有,不加會報錯
cd C:\Program Files (x86)\Windows Kits\10\bin\x64>
makeappx.exe pack /d "C:\code\Win32Foundation\Other\Win11ContextMenuDemo-main\SparsePackage" /p "C:\code\Win32Foundation\Other\Win11ContextMenuDemo-main\SparsePackage\Win11ContextMenuDemo.msix"
生成證書
powershell執行,記得公司名要和AppxManifest.xml發布者一致
New-SelfSignedCertificate -Type Custom -Subject "CN=我的公司" -KeyUsage DigitalSignature -FriendlyName "MyTest" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
導出證書
$password = ConvertTo-SecureString -String 12345678 -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\D06B365B3DDDB477B45A21B049CA2ADBFB3667A3" -FilePath "C:\code\Win32Foundation\Other\Win11ContextMenuDemo-main\SparsePackage\Win11ContextMenuDemo.pfx" -Password $password
簽名
signtool sign /a /fd SHA256 /f "C:\code\Win32Foundation\Other\Win11ContextMenuDemo-main\SparsePackage\Win11ContextMenuDemo.pfx" /p 12345678 "C:\code\Win32Foundation\Other\Win11ContextMenuDemo-main\SparsePackage\Win11ContextMenuDemo.msix"
拷貝到win11的機器上,記得安裝Win11ContextMenuDemo.pfx
選擇受信任的根證書
以非管理員權限運行install腳本,管理員權限會保存,可能需要重啟電腦
總結
AppxManifest.xml 參數必須對,錯一個都不行,少了也不行?
Executable="PhotoStoreDemo.exe" 看起來不是必須的
AppxManifest.xml中的公司名和生成的證書的公司名必須一致
regsvr32.exe 命令dll中必須實現相關邏輯
STDAPI DllRegisterServer()
STDAPI DllUnregisterServer()
Win11ContextMenuDemo::InstallContextMenu::InstallContextMenu()
HRESULT Win11ContextMenuDemo::InstallContextMenu::UnInstallContextMenu()
參考文章
Windows 11 - 自定義右鍵選單
Win11 自定義右鍵菜單
微軟Demo
右鍵菜單稀疏包說明