【问题标题】:MSI installer runs again after already having installed using msiexecMSI 安装程序在使用 msiexec 安装后再次运行
【发布时间】:2015-08-05 08:24:37
【问题描述】:

我有一个正在运行的 Windows 服务更新另一个 Windows 服务。它通过卸载当前版本然后安装较新的版本来做到这一点。我们使用原始的 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 有关?一些许可的事情?

【问题讨论】:

  • 下次测试后检查HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager键下的PendingFileRenameOperations值,看看是否有任何条目。我怀疑在使用该服务时没有完成整个安装,因此在重新启动后操作系统会再次访问 MSI 以完成工作。
  • 好的,我检查过了,但是密钥是空的。第二次重新启动后,它再次启动,这一次并抱怨该服务已经存在。它还给出了无法再找到 .InstallState 文件的错误。但我想这超出了范围,因为它现在有点乱了。
  • 您在事件查看器中看到了什么?关于丢失的任何信息?另外,是否可以将您的安装日志上传到某个地方?
  • 安装的时候,eventviewer里面没有什么奇怪的。但是,在启动时,在 windows 再次运行 msiinstaller 之前。我看到这些警告:检测产品“{347C9271-FA9D-4FA5-B447-776D168BB9D6}”,功能“DefaultFeature”在请求组件“{2BC8DA2C-6B6B-0B04-54F1-7BBD6C587269}”时失败检测产品“{347C9271 -FA9D-4FA5-B447-776D168BB9D6}',功能'DefaultFeature',组件'{605E6584-610F-4DAE-4C09-BD9495105253}'失败。资源“HKEY_CURRENT_USER\Software\MyCompany\MyProduct\Something\events”不存在。
  • 对不起,我不知道如何在评论框中添加换行符。这些警告是否会导致 Windows 决定运行安装程序?

标签: c# windows-installer


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您要么错过了它指向的位置的注册表项,要么您的应用程序不应该首先查找该注册表项。

    有几种方法可以解决此问题,您可以在this 文章中了解它。

    告诉我天气有帮助!

    【讨论】:

      猜你喜欢
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 2010-12-12
      • 2011-06-04
      相关资源
      最近更新 更多