2011-09-19 34 views
1

我们正试图自动化部署我们创建的一些服务。我们不想将用户名和密码硬编码到应用程序安装程序中。不硬编码用户名和登录的问题是它会使发行版的自动化出现问题。在自动执行服务部署时,设置用户服务运行的最佳做法是什么?

你会如何在MSI封装Windows服务这样的:

  1. 该服务被安装到在一个特定的用户名来运行,这取决于环境的实例。即在生产环境中,它在DOMAIN_NAME \ ProductionServiceUser下运行,但如果我们将相同的服务部署到分段中,则该服务在DOMAIN_NAME \ StagingServiceUser下运行。

  2. 如果您通过“添加删除程序”卸载该服务,该服务将被删除。

回答

0

要自动安装和卸载,您可以使用Windows安装程序支持服务:

Visual Studio安装项目不支持该服务的表。因此,如果您正在使用它,则需要编写安装和卸载管理服务的自定义操作。其他设置创作工具提供对服务的直接支持。

要动态设置服务帐户,您可以使用自定义installer property,例如SERVICE_ACCOUNT。在安装期间,您可以将此属性设置为您想要的帐户。这可以通过多种方式完成:自定义操作,对话框控件,命令行等。

只有在为其设置了log on as a service policy(即使它是管理员帐户)时,服务才能在自定义用户帐户下运行。此政策可以在安装过程中使用ntrights.exe作为自定义操作进行设置。

+0

我应该更清楚。这是一个非托管C++服务。我想我们可以有一个C#库项目来执行服务安装,但是自定义操作有一些问题,因为MS由于某种原因认为自定义操作不能像正在执行的用户那样运行是一个好主意安装。 – bpeikes

+0

我不知道我明白这是如何违背我的建议。如果您想使用Visual Studio,唯一的解决方案是自定义操作。如果您不想使用自定义操作,则无法使用Visual Studio(您需要一个支持服务的不同安装创作工具)。 –

+0

自定义操作没问题,它们是我们正在使用的,但是我更多地询问如果您希望服务在特定用户帐户下运行,您将如何自动部署msi。 – bpeikes

相关问题