Windows installer 如何在安装期间使用InstallShield将已安装的windows服务启动类型配置为自动

Windows installer 如何在安装期间使用InstallShield将已安装的windows服务启动类型配置为自动,windows-installer,installshield,Windows Installer,Installshield,我对安装Shield完全是个新手。我正在尝试为我的项目创建一个安装程序,其中我必须安装Wildfly 11作为服务。Wildfly 11有一个文件服务.bat,非常适合我的需要。我面临着一些需要帮助的问题 1) 当我尝试在InstallShield中通过选择System Configuration->service创建服务时,它会告诉我在组件中添加与服务相关的文件,并将要运行的文件作为密钥文件。这里的问题是,由于我要运行的密钥文件是.bat文件,服务无法识别它,因为它需要一个.exe文件来运行

我对安装Shield完全是个新手。我正在尝试为我的项目创建一个安装程序,其中我必须安装Wildfly 11作为服务。Wildfly 11有一个文件服务.bat,非常适合我的需要。我面临着一些需要帮助的问题

1) 当我尝试在InstallShield中通过选择
System Configuration->service
创建服务时,它会告诉我在组件中添加与服务相关的文件,并将要运行的文件作为密钥文件。这里的问题是,由于我要运行的密钥文件是.bat文件,服务无法识别它,因为它需要一个.exe文件来运行

2) 我还介绍了如何创建一个自定义操作,该操作运行我的.bat文件来启动服务,并且运行良好。现在InstallShield中有没有一种方法可以将服务启动类型更改为自动

即使我解决了我的第一个问题,我仍然在这里提到它,因为我想知道这是一种理想的方式,还是我太天真了,不知道理想的方式

关于您的信息,我正在使用InstallShiled 2014 Premier版本,我正在使用BasicMSI项目类型


提前感谢您的帮助。

我不熟悉将bat文件作为服务运行。如果您试图以正确的方式在MSI中进行设置,那么您在系统配置->服务下的位置是正确的。bat文件应通过组件安装。创建组件时,请确保将bat文件设置为密钥名。配置后,您应该能够设置启动类型

我不建议使用自定义操作执行此操作,因为您必须考虑升级和卸载。我猜你还没有考虑这个

如果要在自定义操作中继续执行此操作,则应使用命令行sc.exe命令或其相应的API,无论您使用何种语言编写自定义操作。添加用于在自定义操作中更改启动类型的代码。

服务安装:批处理文件不作为服务()运行,但在某些情况下,它们用于以EXE格式安装服务文件。通常,这是由开发人员在开发过程中完成的,或者在有限数量的计算机上手动安装服务。有些人还使用在系统启动时运行这些批处理文件。我不推荐这种方法

对于更大规模的发行版,可以使用适当的包进行部署。MSI就是这样一种格式。当您使用MSI时,不应安装带有批处理文件的服务。相反,您应该通过适当的MSI表注册和配置服务,以利用内置的服务配置功能。实际上,您编写和表是为了分别安装和控制相关服务

使用这种内置方法比使用自定义操作可靠得多。关于为什么只应在需要时使用自定义操作的一些上下文:

使用适当的MSI功能进行服务配置和控制,您将有更多的时间升级和维护您的软件包


安装屏蔽程序

服务安装批处理文件通常令人望而生畏,但当您分析它们时,它们实际上可能做不了什么。在某些情况下,其中很大一部分与解析命令行和处理错误条件有关

通常可以从这些脚本中提取所需的信息—它往往以查找服务是否有任何登录凭据为中心,并复制批处理文件复制到MSI中的所有文件的安装—因此MSI完全取代BAT文件作为部署解决方案

  • 在编辑器中打开批处理文件并找到它安装的EXE文件
  • 此EXE文件将是真正的Windows服务文件。可能有几种版本,例如32位和64位版本
  • 将适当的EXE文件添加到MSI文件/Installshield项目中
  • 添加服务运行所需的任何支持文件。如果发现问题,您可以使用依赖项漫游器和进程监视器对此进行分析
  • 我没有最新版本的Installshield可供测试。在旧版本中,您打开了组件视图并找到了其中包含服务的组件。您打开它,进入高级设置,并配置了安装NT服务和控制NT服务条目
  • 您可以为服务设置多个设置,包括启动类型(例如,自动)和登录凭据(如果需要)
  • 您提到您的Installshield版本具有视图
    系统配置=>服务
    。通过文件或组件视图添加服务EXE文件后,使用此视图
  • 我通常将服务设置为在安装期间启动和停止,在卸载时停止和删除。 如果服务需要凭据才能运行,则需要从BAT文件中提取该信息,并将as属性添加到服务控制项中

我也试过你说的大卫。我的服务已安装,但当我尝试启动服务时,出现错误1053。我为整个Wildfly服务器文件夹创建了一个包含动态链接文件的组件,并排除了要作为密钥文件生成的.bat文件。又创建了一个组件,添加了.bat文件,并将其设置为密钥文件。然后创建了一个服务,该服务包含一个.bat文件的组件。但我在尝试启动服务时出错。我错过了什么。任何帮助都会很好。同样,当bat以任何方式运行时,我如何将参数传递给该bat。我将进一步调查您的服务失败的原因。安装服务的“最佳实践”方式是usi