我运行的Windows服务更新了另一个Windows服务。它通过卸载currentversion然后安装新版本来实现。我们使用原始的msi安装程序和带有Process.Start()的msiexec。
/path/test-*.jar
卸载顺利,所以没问题。 安装,似乎也很好。我输出msi安装日志。在日志中,它表示已成功安装。
然后我重新启动计算机,在启动时,Windows本身再次运行安装程序?然后它抱怨说服务已经存在,而且一切都破了......
Windows决定在启动时运行安装程序的原因是什么?
重要的是要注意:如果我手动安装新版本,它可以工作,Windows不会尝试在启动时安装它。那么它可能与msiexec有关吗?一些许可的事情?
答案 0 :(得分:1)
这可能是修理。检查应用程序事件日志中是否有提及缺少组件的MsiInstaller条目。如果Windows认为已安装的产品已损坏,则会发生这种情况。
我怀疑您看到有关已安装服务的错误的原因是您使用安装程序类自定义操作来安装该服务,它将在修复时再次运行并提供有关已安装的错误。你会看到相同的"已安装"如果您右键单击MSI并选择修复,或者从“程序和功能”中进行了修复,则会出现错误。
要防止这种情况,请将“未安装”条件添加到安装该服务的安装自定义操作,然后它将仅在安装时运行,而不在修复时运行。