.net - 创建 .NET Windows 服务安装程序的最佳方法是什么?

标签 .net windows-services installation windows-installer

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

最佳答案

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

MyService.exe /i

在你的服务中,你检查这个参数,如果存在,让服务注册自己:
ManagedInstallerClass.InstallHelper(args);

my answerthis question更多细节。通过这种方式,您可以让用户通过命令行以简单的方式自行注册服务。

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

关于.net - 创建 .NET Windows 服务安装程序的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2241352/

相关文章:

c# - 重置 IE 个人设置可提高应用程序性能

.net - .Net Windows 服务中的 UnhandledException 处理程序

c# - 如何使用安装项目授予 Windows 服务访问 MSMQ 队列的权限?

c# - 以用户身份安装 Windows 服务

installation - 如何使用 Installshield 2011 更改安装程序的图标?

macos - 在 Mac 上运行 prolog

.net - Identity Server 4 和用于用户管理的 Web API

mysql - 德瓦特.Data.MySql : Concurrency violation: the UpdateCommand affected 0 of the expected 1 records

c# - Entity Framework 查询outofmemoryexception

mysql - MySQL .zip 和 .msi 下载的区别