WIX CustomAction以错误1721或1722终止

时间:2019-01-16 07:28:27

标签: wix windows-installer msiexec

我正在尝试为我的应用程序创建一个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=elevatedInstallScope=perMachine并仍然遇到相同的错误。

1 个答案:

答案 0 :(得分:0)

我同意Stein的观点,即您应该使用MSI / WiX的内置工具来安装服务,即<ServiceInstall><ServiceConfig>元素。

话虽如此,这些是您当前解决方案的错误:

  • [SystemFolder]cmd.exe之间的空格。
  • 未引用可执行路径。
  • .bat文件的相对路径。非常脆弱。

可能的解决方案:

<CustomAction Id="InstallService" Directory="elasticsearch" Execute="deferred" Impersonate="no" ExeCommand='"[elasticsearch]bin\elasticsearch-service.bat" install' Return="check" />

您可以直接调用批处理文件,而无需将其传递到cmd.exe