繁体   English   中英

使用msiexec安装后,MSI安装程序将再次运行

[英]MSI installer runs again after already having installed using msiexec

我正在运行Windows服务,该服务会更新另一个Windows服务。 它通过卸载currentversion然后安装较新的版本来实现。 我们使用原始的msi安装程序和带有Process.Start()的msiexec进行此操作。

Process msiexec = new Process();
msiexec.StartInfo.FileName = "msiexec";
msiexec.StartInfo.Arguments = "/quiet /i \"" + msiFileName + "\" /l*v \"" + msilogfile + "\"";

if (!msiexec.Start())
....etc... error handling code and such...

卸载可以,所以没问题。 安装,似乎也很好。 我输出msi安装日志。 并且在日志中,它表示已成功安装。

然后,我重新启动计算机,并在启动时Windows本身再次运行安装程序? 然后它抱怨该服务当然已经存在,并且一切都中断了...

Windows决定在启动时运行安装程序的原因可能是什么?

在此处需要注意的重要事项:如果我手动安装新版本,则该版本可以运行,并且Windows不会在启动时尝试安装它。 因此,这可能与msiexec有关? 一些许可的东西?

这可能是修复。 检查应用程序事件日志中是否有提及缺少组件的MsiInstaller条目。 如果Windows认为安装的产品已损坏,则会发生这种情况。

我怀疑您看到有关已安装服务的错误的原因是,您正在使用Installer类自定义操作来安装服务,并且它将在修复时再次运行,并为您提供有关已安装的错误。 如果右键单击MSI并选择修复,或者从Programs&Features进行修复,则会看到相同的“已安装”错误。

为防止这种情况,请在安装服务的安装自定义操作中添加“未安装”条件,然后它将仅在安装时运行,而不在修复时运行。

您或者错过了指向您指向的位置的注册表项,或者您的应用程序不应首先寻找该注册表项。

有一对夫妇的方式来解决这个问题,你可以阅读一下这个文章。

让我知道天气有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM