【问题标题】:What's the best way to create .NET Windows service installer?创建 .NET Windows 服务安装程序的最佳方法是什么?
【发布时间】:2011-01-15 12:41:43
【问题描述】:

我刚刚创建了一个简单的 .NET Windows 服务。我的用户应该从我的站点下载它并将其安装在他们的计算机上。所以,从各种论坛帖子(包括这个网站)我知道,为了做到这一点,我需要一个安装程序。或者我可以只给他们服务文件并指导如何安装它。我开始创建一个安装项目,并能够编译我自己的 .msi 安装程序。但是一位用户抱怨他现在无法卸载它。我对其进行了研究,发现 .msi 格式存在一些问题,主要与它在 GAC 中计算引用的方式有关。不过,帮他修电脑很容易。从我与用户的对话中,我知道训练他们使用 sc.exe 或 installutil.exe 几乎是不可能的。我还在http://installer.codeeffects.com 找到了一项服务,它可以为我的服务构建安装程序,无需任何代码,但我不确定我的安装程序应该是 msi 还是 exe。所以,很明显我在这里很困惑:)请帮助大家,任何一般或详细的建议都将受到高度赞赏。

【问题讨论】:

标签: .net windows-services installation windows-installer


【解决方案1】:

我认为您可能希望将服务与应用程序分离。让服务调用具有实际应用程序逻辑的可执行文件,您可以多次维护可执行文件重新安装它,而无需卸载/重新安装应用程序的服务部分。

这来自一个厌倦了与微软安装程序打交道的人。您可能会从经验丰富的安装大师那里得到更好的答案。我不确定我在等它。我遇到了类似的问题,这很可能是我的方法related question

【讨论】:

  • 这患有鸡和蛋综合症。为了获得从不要求更新服务,仍然必须至少安装一次,而这通常需要安装程序
  • @Micky,当您在生产中拥有无法安装或卸载的服务时,就像发生在我身上一样。您希望可执行文件首先被分离。如果您有时间花时间学习服务安装程序过程的所有怪癖,那么它可能会很好。当然,对这些建议和所有建议持保留态度。
【解决方案2】:

这是一个非常酷的分步指南,介绍如何使用 Visual Studio 2005 创建服务安装程序。(在 Visual Studio 2008 中几乎相同)。

http://aspalliance.com/1316_Working_with_Windows_Service_Using_Visual_Studio_2005.all

这对我帮助很大:D

【讨论】:

    【解决方案3】:

    让您的服务接受将自己注册为服务的参数:

    MyService.exe /i
    

    在您的服务中,您检查此参数,如果存在,则让服务自行注册:

    ManagedInstallerClass.InstallHelper(args);
    

    有关详细信息,请参阅 my answerthis question。这样,您可以让用户通过命令行以简单的方式自己注册服务。

    如果这对您的用户来说仍然太复杂,您可以使用Environment.UserInteractive 来检查用户是否双击了该服务。如果是这样,请安装/卸载该服务。如果没有,则启动服务(这将是服务通过服务小程序启动时和机器启动时采用的路由)。

    【讨论】:

      【解决方案4】:

      为什么不使用 VS 内置安装程序?多年来我一直在使用它。

      问题(以及您可能认为它不起作用的原因)是,对于 Windows 服务,您必须添加一些自定义操作才能注册服务。

      看看这个,到向设置项目添加自定义操作部分:

      http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

      【讨论】:

      • 虽然当时是一个很好的答案,但在撰写本文时,“安装项目”模板已在 VS2012 中删除,在 VS2013 中仍然不存在。
      【解决方案5】:

      我的建议是 MSI 将文件安装在所需位置,包括执行 installutil.exe 的批处理文件。然后发布执行批处理文件的安装步骤。

      对于卸载,同样的方法 - 批处理文件作为预卸载步骤执行,然后卸载。我以前必须做类似的事情。我知道这很痛苦。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 2010-10-23
        • 2015-03-21
        相关资源
        最近更新 更多