Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从wix安装程序安装和注册外壳扩展上下文菜单_C#_Installation_Wix_Contextmenu_Shell Extensions - Fatal编程技术网

C# 从wix安装程序安装和注册外壳扩展上下文菜单

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注册扩展: 首先,您需要定义(在产品范围内)自定义操作以注册/注销扩展

我创建了SharpShell扩展,用于使用.Net自定义windows的右键单击菜单上下文。该项目的结果是一个.dll。我尝试使用服务器管理器工具安装和注册它,该工具和sharp shell工具一起存在,并且成功运行。现在我需要从我的wix项目中安装并注册这个shell扩展,因为我需要用户安装我的应用程序,并在安装后获得自定义的windows右键单击上下文菜单


我需要详细的步骤,因为我刚刚使用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]