【问题标题】:MSI - How to know when a particular MSI is runningMSI - 如何知道特定 MSI 何时运行
【发布时间】:2011-11-23 02:41:57
【问题描述】:

是否有一种简单的方法可以知道 msi 何时运行? (在静音或非静音模式下。)也许使用和 MSI API?从某处读取?...

我需要这个以避免启动用 C++ 编码的程序。

感谢您的帮助。

【问题讨论】:

  • 是你的程序吗?您升级的是您的程序吗?

标签: windows-installer upgrade


【解决方案1】:

没有任何 API 可用于检测正在运行的安装程序。此外,MSI 安装有两个序列:

InstallUISequence 使用在当前用户帐户下运行的进程。 InstallExecuteSequence 使用 Windows Installer 服务的子进程。

因此,检测正在运行的安装并不容易。我能想到的唯一解决方案是枚举所有打开的窗口并尝试按名称查找安装对话框。

【讨论】:

  • 感谢您的回答 Cosmin。我无法忍受安装程序如何处理这种情况。例如,就我而言,我必须进行升级,因此,在升级过程中,我有可能运行主应用程序(当然正在更新)...
  • @Santiago 是安装程序在升级期间启动您的应用程序吗?我认为这里没有问题:升级完成后您可以启动已安装的应用程序。
  • @AlexeyIvanov 我正在使用 策略(取自msdn.microsoft.com/library/aa371197.aspx)所以,这里的关键是我正在升级我的产品并且在中间我将双击我的应用程序并打开的过程(我只是在想,如果正在升级该可执行文件,是否会出现问题。)谢谢!
  • 这是一个非常不可能的情况。更简单的方法是在安装开始时关闭应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多