【发布时间】:2018-09-22 21:35:50
【问题描述】:
我对使用 WiX 工具集创建的 .msi 安装和启动的 Web 服务有疑问。
该服务可以在我测试的所有机器上安装和启动(显示为在服务管理器中运行),但在某些机器上它无法访问(例如通过浏览器)并且未显示在监听列表中该机器上的端口(显示为“netstat -a”)。
我正试图找出问题所在,但我对 Web 服务开发和配置并不十分熟悉。它是第三方服务,因此我不知道它在内部是如何工作的。 对我来说,一个很好的起点是找出在执行 .msi 文件期间安装和启动服务时究竟会发生什么。 或许我可以尝试在较低的层次上解决这个问题。
下面是我在 ServiceInstall-Element 中的代码:
<ServiceInstall
Id="ServiceID"
Type="ownProcess"
Vital="yes"
Name="ServiceName"
DisplayName="ServiceDisplayName"
Description="Lorem Ipsum"
Start="auto"
Account="LocalSystem"
ErrorControl="normal"
Interactive="no"
Arguments="action=run">
</ServiceInstall>
参数很重要 - 没有它,服务将无法启动或运行。 也许其他人遇到了相同或类似的问题,可以帮助我。
在此先感谢 - 每一个提示都表示赞赏。
编辑 I (15.04.18):
由于具体服务可能有问题,我将在此处添加一些进一步的信息:
这是一个名为 CryptoLicensing 的第三方软件: http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm
该软件的一部分是特定程序,它充当许可证服务器并进行许可证注册,例如在客户的网络中。 该服务可以作为 Windows 应用程序运行,也可以作为 Windows 服务安装和运行。在这两种情况下,它都应该在已安装机器上的(预)指定端口上进行侦听。 每当我将 .exe 作为应用程序启动时,一切都按预期工作。该服务是可访问的(例如使用浏览器),并且可以从网络中的其他机器访问。 当 .exe 作为服务安装并启动时,它不会在每台计算机上按预期工作。例如,如果我在笔记本电脑上安装并启动该服务,它在服务管理器中显示为正在运行,但在其分配的 URL 上无法访问(甚至在 localhost 上也无法访问),活动侦听端口中也没有显示特定端口,例如使用“netstat -a”。 服务本身在没有任何错误消息的情况下启动,并且不会记录任何错误或异常,因为它似乎运行时没有任何问题。
我联系了供应商,但有时他不会很快回复,而且他的回复也不是很具体。
在问这个问题之前,我认为这是 Windows 用户权限和 WiX 安装程序的问题,但在此处的讨论中,我觉得这可能是服务本身的问题。 我希望这条“新”信息有助于隔离和定位问题。
感谢迄今为止提供帮助的所有人!
【问题讨论】:
-
这不是直接的安装程序问题。您需要分析您的程序以了解它的依赖关系并查看这台机器上缺少什么。然后决定它是否是安装程序可以安装的东西,或者它是否是安装程序需要检测并在不存在时中止的东西。它也可能只是您的服务中的一个错误,由这台机器的配置暴露。
-
我也是这么想的。问题是,服务不是我的。我是从提供商(LogicNP、CryptoLicensing)那里购买的,无法访问源代码或内部流程的任何信息。因此我也无法真正调试服务。您认为编辑问题并添加该信息(因为它可能是与该特殊服务相关的问题)或因此而打开一个新问题可能会更好吗?
-
我花了数年时间做一些叫做“应用程序重新打包”的事情。这基本上意味着您使用一个疯狂的第三方安装程序并将其逆向工程为一个干净的 MSI。您不仅要确定他们的安装程序做了什么,还要确定它应该做什么。我已经分析了许多这样的服务,其中我没有源代码来预测丢失的内容。即使没有源也可以完成。这很痛苦,但使用 ProcessMonitor 之类的东西来寻找它试图访问和失败的东西。使用 Depends 或 .NET 反射器或其他工具尽可能多地了解它。
-
这个问题解决了吗?如果是这样,也许自己添加一个答案,因为其他人也可能面临这个特定问题?
-
不,恐怕 - 我仍在试图弄清楚,可能是什么问题。但是与开发人员的沟通需要相当长的时间。如果问题得到解决,我会添加答案。
标签: web-services service wix windows-installer cryptolicensing