Closed Li-meng-meng closed 4 months ago
1.是否加载可以查看任务管理器,切换到进程详细,打开命令行列,过滤dllhost.exe,然后右键的时候,查看是否有uuid()一致的新进程..
2.使用debugview,然后c++打印日志查看,是否加载可以先查看GetState 方法
另外 uuid在xml与CustomExplorerCommand.h中的要一致.. 我项目中的CustomExplorerCommand.h支持多个uuid,你可以删除,只保留最后一个
如上图,我的是__declspec(uuid("62213977-E22F-49D5-B4DB-29E72E6A5D37")),然后可以看到右键的时候,其加载了
谢谢解答,尝试查看任务管理器,没有发现对应的uuid,服务没有启动
有尝试UWP应用只安装不启动程序是不会启动服务,是不是外部包需要运行一下,但是我不知外部包如何运行,或者是否有其他的方法,再次感谢您耐心解答
CustomExplorerCommand.h中的uuid是有调整一致
这部分没看到问题,建议先参照微软的例子试试
我参照这个,尝试了一下,没有问题 ,我修改后的源码在最下面 https://github.com/microsoft/AppModelSamples/tree/master/Samples/SparsePackages https://learn.microsoft.com/zh-cn/windows/apps/desktop/modernize/grant-identity-to-nonpackaged-apps\
1.打包
Samples\SparsePackages>MakeAppx.exe pack /d PhotoStoreDemoPkg /p \test.msix /nv
2.签名 推荐使用https://learn.microsoft.com/en-us/windows/msix/packaging-tool/package-editor
3.参阅 StartUp.cs 修改包位置
string sparsePkgPath = @"F:\PhotoStoreDemo_1.0.4.0_x86__8yektv5z29sbg.msix";
4.其它配置 c#项目中 PhotoStoreDemo.exe.manifest 必须与 AppxManifest.xml 还有签名一致 参照这里: https://learn.microsoft.com/zh-cn/windows/apps/desktop/modernize/grant-identity-to-nonpackaged-apps (为具有外部位置的包创建程序包清单)
启动项目, StartUp.cs中会注册msix, 代码可以debug看到注册结果,也可以使用命令查看
get-appxpackage -name PhotoStoreDemo
Name : PhotoStoreDemo
Publisher : CN=ikas-mc-dev
Architecture : Neutral
ResourceId :
Version : 1.0.4.0
PackageFullName : PhotoStoreDemo_1.0.4.0_neutral__8yektv5z29sbg
InstallLocation : C:\Program Files\WindowsApps\PhotoStoreDemo_1.0.4.0_neutral__8yektv5z29sbg
IsFramework : False
PackageFamilyName : PhotoStoreDemo_8yektv5z29sbg
PublisherId : 8yektv5z29sbg
IsResourcePackage : False
IsBundle : False
IsDevelopmentMode : False
NonRemovable : False
IsPartiallyStaged : False
SignatureKind : Developer
Status : Ok
使用 get-appxpackage -name PhotoStoreDemo | remove-appxpackage 可以卸载msix
msix包: PhotoStoreDemo_1.0.4.0_x86__8yektv5z29sbg.zip 这个包使用这个项目一样的证书
有尝试他的方法,不知道是我漏了那一步,这个的写的demo,如果有空的话是否可以把我看看,这个问题我先关闭了,我可能需要仔细看看 https://github.com/Li-meng-meng/SoftwareMenu.git
谢谢您的耐心解答
代码看不到...是不是私有的?
抱歉忘记改权限了,已经调成公有了
@Li-meng-meng 测试了下,可以显示
string externalLocation = @"C:\Users\xxxx\source\repos\SoftwareMenu\SoftwareMenu\bin\Debug\SoftwareMenu.exe";
=>
string externalLocation = @"F:\x\SoftwareMenu\SoftwareMenu\bin\Debug";
应该是这个地址的问题, 这个地址是dll,exe所在的文件夹
另外菜单配置文件放到这个目录下,菜单配置要使用v3.5版本的配置,或者我主分支的sample C:\Users\user\AppData\Local\Packages\SoftwareMenuexeapp_8yektv5z29sbg\LocalState\custom_commands 我看你c++中的uuid与我的应用一致,如果安装了我的应用,需要卸载
#检查是否安装
get-appxpackage -name SoftwareMenuexeapp
Name : SoftwareMenuexeapp
Publisher : CN=ikas-mc-dev
Architecture : Neutral
ResourceId :
Version : 1.2.1.0
PackageFullName : SoftwareMenuexeapp_1.2.1.0_neutral__8yektv5z29sbg
InstallLocation : C:\Program Files\WindowsApps\SoftwareMenuexeapp_1.2.1.0_neutral__8yektv5z29sbg
IsFramework : False
PackageFamilyName : SoftwareMenuexeapp_8yektv5z29sbg
PublisherId : 8yektv5z29sbg
IsResourcePackage : False
IsBundle : False
IsDevelopmentMode : False
NonRemovable : False
IsPartiallyStaged : False
SignatureKind : Developer
Status : Ok
# 卸载,如果有问题,需要先卸载,在打开
get-appxpackage -name SoftwareMenuexeapp | remove-appxpackage
谢谢,尝试修改,现在正常显示
我现在用这个方法:https://github.com/notepad-plus-plus/nppShell 和您这个方法结合,把ContextMenuCustomHost文件中CustomExplorerCommand.cpp::ReadCommands函数修改了路径,把这个ContextMenuCustomHost库加到了外部包中,我的扩展包安装没问题了,注册表也有对应的信息了,我在custom_commands也添加了一个Json文件,但是还是没有右击菜单,有什么办法知道我哪里了出错了嘛,或者是不是这个方案不可以这样结合。