主要参考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
右键菜单稀疏包说明