C# 从wix安装程序安装和注册外壳扩展上下文菜单
我创建了SharpShell扩展,用于使用.Net自定义windows的右键单击菜单上下文。该项目的结果是一个.dll。我尝试使用服务器管理器工具安装和注册它,该工具和sharp shell工具一起存在,并且成功运行。现在我需要从我的wix项目中安装并注册这个shell扩展,因为我需要用户安装我的应用程序,并在安装后获得自定义的windows右键单击上下文菜单C# 从wix安装程序安装和注册外壳扩展上下文菜单,c#,installation,wix,contextmenu,shell-extensions,C#,Installation,Wix,Contextmenu,Shell Extensions,我创建了SharpShell扩展,用于使用.Net自定义windows的右键单击菜单上下文。该项目的结果是一个.dll。我尝试使用服务器管理器工具安装和注册它,该工具和sharp shell工具一起存在,并且成功运行。现在我需要从我的wix项目中安装并注册这个shell扩展,因为我需要用户安装我的应用程序,并在安装后获得自定义的windows右键单击上下文菜单 我需要详细的步骤,因为我刚刚使用Wix安装程序。以下是如何从Wix注册扩展: 首先,您需要定义(在产品范围内)自定义操作以注册/注销扩展
我需要详细的步骤,因为我刚刚使用Wix安装程序。以下是如何从Wix注册扩展: 首先,您需要定义(在产品范围内)自定义操作以注册/注销扩展:
<Product>
<!-- ... -->
<CustomAction Id="InstallShell" FileKey="srm.exe" ExeCommand='install "[INSTALLFOLDER]\MyExtension.dll" -codebase' Execute="deferred" Return="check" Impersonate="no" />
<CustomAction Id="UninstallShell" FileKey="srm.exe" ExeCommand='uninstall "[INSTALLFOLDER]\MyExtension.dll"' Execute="deferred" Return="check" Impersonate="no" />
</Product>
然后,您需要自定义安装执行序列以启动这些自定义操作:
<Product>
<!-- ... -->
<InstallExecuteSequence>
<Custom Action="InstallShell" After="InstallFiles">NOT Installed</Custom>
<Custom Action="UninstallShell" Before="RemoveFiles">(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
</InstallExecuteSequence>
</Product>
未安装
(不升级ProductCode)和(REMOVE=“ALL”)
“MyExtension.dll”是wix项目中扩展dll资源的id:
<Component Guid="*">
<File Id="MyExtension.dll" KeyPath="yes" Source="bin\$(var.Configuration)\MyExtension.dll" />
</Component>
对于srm.exe也一样:
<Component Guid="*">
<File Id="srm.exe" Source="packages\SharpShellTools.2.2.0.0\lib\srm.exe" KeyPath="yes" />
</Component>
您需要检索与您使用的Sharpshell版本关联的srm.exe(我建议您使用nuget软件包)。您可以在此处找到有关此的信息:
希望它能帮助你;) 欢迎来到堆栈溢出。请乘飞机参观我们的饭店。您的问题缺乏详细信息,无法确定您在当前尝试中的困境。如果您还没有开始,恐怕我们无法帮助您,因为我们不太适合提供完整的教程。非常感谢您的详细帮助@rene而不是
[INSTALLFOLDER]
我不得不使用[INSTALLDIR]