在开发期间安装/卸载Windows服务

时间:2011-02-21 18:35:11

标签: c# windows-services windows-installer setup-deployment

我想知道是否有更简单的方法在不创建安装程序包的情况下在开发或测试环境中安装或卸载Windows服务?我有时会在卸载Visual Studio软件包时出现问题(即使在卸载之前停止服务并关闭服务管理控制台,也不能强制我重新启动计算机)。使用InstallShield或WIX等工具创建安装程序包可以克服这个问题,但在开发期间,如果我可以在开发或测试环境中安装服务(以及所有相关文件)而不创建安装程序包,将会更容易。< / p>

4 个答案:

答案 0 :(得分:2)

使用installutil,它是.net框架的一部分。现在,您仍然需要将bin目录复制到所需的计算机,并在使用任何COM对象时注册它们。

答案 1 :(得分:1)

如果记得正确,(此刻无法访问我的开发机器)。停止服务 - 并替换exes和dll)重新启动服务。你可以编写脚本。您需要进行初始安装,或使用installutil.exe

我发现安装和卸载都比这更容易。

答案 2 :(得分:1)

我发现SC.EXE命令在开发过程中很容易使用。将其打入NAnt / BuildBuild / Perl / BAT文件并实现即时轻量化自动化。

答案 3 :(得分:0)

我知道这是一个老问题,但我觉得这些信息与任何在这个问题上挣扎的人都非常相关:

问题来自Visual Studio中包含的安装程序的更改。我认为VS2005和VS2008之间发生了变化。无论如何,在更改之后,要使更新安装程序正常工作而不卸载以前的产品,建议在安装,提交和回滚阶段通过自定义操作安装服务,而不是卸载阶段。我相信这是因为更改导致在安装新版本后发生卸载操作,在更新时卸载服务。 &#34;不是PREVIOUSVERSIONSINSTALLED&#34;放在3个自定义操作上,并且检查以前的版本必须为TRUE。这导致与将文件复制到旧文件上的结果基本相同(但也保留了任何其他安装活动,如注册对象等)。

这一切都适用于更新;新版本将安装在现有版本上,该服务仍然注册,一切都很好。但是,如果您卸载,您的服务将保持注册状态,全新安装将尝试再次注册,导致1001错误。我在卸载时使用SC.EXE手动删除服务以避免这种情况。您可以进行干净的卸载,但它会破坏您选择的更新安装。