【发布时间】:2017-08-31 14:56:48
【问题描述】:
我在 DotNet Core 中构建了一个 Windows 服务,该服务与 Peter Kottas WindowsServer nuget (https://github.com/PeterKottas/DotNetCore.WindowsService) 一起安装。为了安装服务,您必须发布代码,将其部署在任何地方,以管理员权限运行 cmd 提示符,将目录移动到部署的代码并执行以下行:“MyService action:install”
<CustomAction Id="CallCmd" Value="[SystemFolder]cmd.exe" Directory="MYSERVICE" />
<CustomAction Id="MoveDirectory" Directory="MYSERVICE" ExeCommand="cd C:\Program Files (x86)\MYCOMPANY\MYSERVICE"/>
<CustomAction Id="CA_InstallMyService" Directory="MYSERVICE" ExeCommand="MyService action:install" />
<InstallExecuteSequence>
<Custom Action="CallCmd" After="PublishProduct" />
<Custom Action="MoveDirectory" After="CallCmd" />
<Custom Action="CA_InstallMyService" After="MoveDirectory" />
</InstallExecuteSequence>
在 Orca 中查看它的顺序似乎是正确的,因为这些说明在创建之前无法浏览到该文件夹。
但是,在执行 MSI 并单击“安装”后,它会运行到一半,失败并在安装过程中向后运行。 (我已尝试查看“Program Files (x86)”目录,甚至没有看到我的 Product.wxs 中正在创建的目录文件夹结构。
在事件查看器中稍作挖掘会显示此错误:
错误 1721。此 Windows 安装程序包有问题。一种 无法运行完成此安装所需的程序。 请联系您的支持人员或软件包供应商。行动: MoveDirectory,位置:C:\WINDOWS\SysWOW64\cmd.exe\,命令:cd C:\Program Files (x86)\MYCOMPANY\MYSERVICE
【问题讨论】:
-
您可以删除 CallCmd 和 MoveDirectory 自定义操作,改为使用
cmd.exe /c "C:\Program Files (x86)\MYCOMPANY\MYSERVICE" action:install -
谢谢菲尔,这正是我所需要的,经过一些 cmd 谷歌搜索并将其从安装程序上的最终自定义操作中运行
标签: windows service wix windows-installer