使用SharpShell简化Windows Shell扩展部署

在过去的几个月里,一直在努力开发SharpShell项目。这是一个允许使用.NET Framework快速构建Windows Shell扩展的项目。用户面临的一个难题是,要部署一个用.NET编写的Shell扩展,必须使用regasm工具,这个工具通常只安装在开发机器上。

有了SharpShell 2.0,引入了一个服务器注册管理器工具,使得部署SharpShell服务器变得轻而易举。

本文是'.NET Shell Extensions'系列文章的一部分,包括:

  • .NET Shell Extensions - Shell Context Menus
  • .NET Shell Extensions - Shell Icon Handlers
  • .NET Shell Extensions - Shell Info Tip Handlers
  • .NET Shell Extensions - Shell Drop Handlers
  • .NET Shell Extensions - Shell Preview Handlers
  • .NET Shell Extensions - Shell Icon Overlay Handlers
  • .NET Shell Extensions - Shell Thumbnail Handlers
  • .NET Shell Extensions - Shell Property Sheets
  • .NET Shell Extensions - Deploying SharpShell Servers

什么是SharpShell?

SharpShell是一个非常轻量级的类库,它允许使用.NET Framework构建Windows Shell扩展。正如从上面的链接中看到的,支持很多不同类型的服务器。可以在GitHub页面上找到一个良好的介绍,以及每种类型服务器的示例:

部署Shell扩展

用C或C++编写的Shell扩展部署通常是直接的,因为Windows中包含的regsvr32工具可以使用。然而,要部署一个托管的Shell扩展,必须使用regasm工具,这个工具默认不包含在Windows中。在SharpShell中添加了'Server Registration Manager'工具(srm.exe),使得安装和卸载服务器变得非常容易。

从命令行安装服务器

从本文下载SharpShell工具二进制文件,或从获取最新版本。使用这个工具,可以像这样安装服务器:

srm install server.dll -codebase

简单吧!可以像这样卸载同一个服务器:

srm uninstall server.dll

这是本文的关键要点。srm工具可以安装和卸载服务器——所有其他机制(如Windows安装程序)将简单地在幕后使用这个工具。

为SharpShell服务器创建安装程序

在这个例子中,将使用Visual Studio 2010为'Count Lines'扩展创建一个安装程序,该扩展是在第一篇文章中编写的。

提示:也可以使用WiX——只需创建一个自定义动作来运行上面显示的命令!

在Visual Studio 2010中创建一个新的'Setup and Deployment'项目。现在将SharpShell服务器和srm.exe工具添加到应用程序文件夹中,如下所示:

现在导航到安装程序的'Custom Actions'部分。创建一个新的'Install'自定义动作,从应用程序文件夹中执行srm.exe工具:

可以点击这个动作来设置属性。需要传递参数'install',服务器的路径,以及'-codebase'标志(告诉它直接安装服务器,而不是使用对GAC的引用)。

确保'InstallerClass'属性设置为False,否则安装程序将尝试从EXE加载一个Installer Class对象,而它并不包含。

现在为Uninstall创建一个类似的动作——这次,需要在命令行上使用'uninstall'命令,服务器路径与之前相同,没有-codebase标志。这是在这个例子中使用的命令行:

uninstall "[TARGETDIR]\CountLinesExtension.dll"

就是这样!现在可以运行安装程序来安装SharpShell服务器了!

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485