部署没有Installshield的Windows服务

时间:2014-10-05 09:05:22

标签: visual-studio-2012 windows-services installshield

是否可以在不通过Installshield的情况下部署Windows服务?我有一个非常基本的服务,只是探测数据库,并希望将其部署在服务器上。

我尝试使用Installsheild LE,但在安装时遇到错误1001,这很难排除故障,无论如何Installshield在这种情况下感觉有点过分......有没有办法可以直接通过命令行或其他方法安装服务?

4 个答案:

答案 0 :(得分:3)

但是,从最好到最差都有选择:

  1. 还有其他用于编写安装程序的工具。例如。完整版本的安装Shield或WiX(MS创建,用于Visual Studio安装程序)。

  2. 您可以使用installUtil在程序集中包含从ServiceInstaller派生的类型。 (参见 How to: Install and Uninstall Service 。)

  3. 您可以手动编辑注册表。

  4. #3非常容易搞砸,并且不会帮助你应该包括的事件记录和性能计数器。 1 #2是最好的开发,并将设置还要记录事件日志和性能计数器(记住,您需要提升安装内容,并在作为服务运行时将调试器附加到服务中)。

    使用真正的安装程序(#1)最适合测试(分段)和生产环境。


    1 当你被问到为什么它不起作用时,你会希望能够弄清楚(或不是)正在进行的事情。

答案 1 :(得分:1)

是的,如果您的服务有Installer类,则可以使用installutil.exe

从命令行安装它
using System.ComponentModel;
using System.Configuration.Install;
using System.ServiceProcess;

    [RunInstaller(true)]
    public class ServiceInstaller : Installer
    {
        public ServiceInstaller()
        {
            ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller();
            ServiceInstaller serviceInstaller = new ServiceInstaller();

            //# Service Account Information
            serviceProcessInstaller.Account = ServiceAccount.User;
            serviceProcessInstaller.Username = "";
            serviceProcessInstaller.Password = "";

            //# Service Information
            serviceInstaller.DisplayName = "Service name"
            serviceInstaller.Description = "Service description"
            serviceInstaller.StartType = ServiceStartMode.Automatic;

            //# This must be identical to the WindowsService.ServiceBase name
            //# set in the constructor of WindowsService.cs
            serviceInstaller.ServiceName = "Service Name";

            this.Installers.Add(serviceProcessInstaller);
            this.Installers.Add(serviceInstaller);
        }
    }

答案 2 :(得分:0)

Building and Deploying a Windows Service using IsWiX

以上是我制作的简短视频,展示了如何使用WiX / IsWiX生成非常干净的MSI来安装服务。它真的很容易,快速,优雅和自由。

答案 3 :(得分:0)

您可以使用命令行工具 sc.exe 来创建和配置Windows服务(基本上将配置插入到注册表中),假设您已经将内置的.exe部署到磁盘上的某个位置服务器。

http://support2.microsoft.com/kb/251192