我正在尝试为我的应用程序创建一个MSI安装程序,这是一个定制的elasticsearch。我需要在安装过程中从cmd运行elasticsearch-service.bat install
命令。但是无论我做什么,都不会成功执行。
<CustomAction Id="InstallService" Directory="elasticsearch" Execute="deferred" Impersonate="no" ExeCommand='[SystemFolder] cmd.exe /c "bin\elasticsearch-service.bat install"' Return="check" />
<InstallExecuteSequence>
<Custom Action="InstallService" After="InstallFiles" />
</InstallExecuteSequence>
1721和1722错误含糊不清,不包含任何其他信息。这些错误的原因是什么?我怀疑这些错误是由于缺乏管理员权限引起的。但是我在包元素中添加了InstallPrivileges=elevated
和InstallScope=perMachine
并仍然遇到相同的错误。
答案 0 :(得分:0)
我同意Stein的观点,即您应该使用MSI / WiX的内置工具来安装服务,即<ServiceInstall>
和<ServiceConfig>
元素。
话虽如此,这些是您当前解决方案的错误:
[SystemFolder]
和cmd.exe
之间的空格。可能的解决方案:
<CustomAction Id="InstallService" Directory="elasticsearch" Execute="deferred" Impersonate="no" ExeCommand='"[elasticsearch]bin\elasticsearch-service.bat" install' Return="check" />
您可以直接调用批处理文件,而无需将其传递到cmd.exe
。