【问题标题】:MSI Installation should wait while product is runningMSI 安装应在产品运行时等待
【发布时间】:2012-02-27 17:04:11
【问题描述】:

我有一个用于产品的 MSI 包,并进行了一些小修复,我不想通过关闭应用程序来分散用户的注意力。我想等待用户离开应用程序的那一刻。

我有一个在用户权限下运行的更新程序,它可以像这样在静默模式下执行

msiexec /i product.msi /quiet

但是当 msi 安装产品时,它会向它发送 WM_QUIT 并且程序关闭并且用户应该重新打开它。我怎样才能推迟执行这样的命令?我可以安排安装吗?

【问题讨论】:

  • 我需要更好地了解您的情况。您能否在应用程序中提示用户有可用的更新版本,并在他们关闭应用程序时启动它?
  • 您是否有运行该 msiexec 命令的提升权限?如果是这样,您可以查看 /jm (而不是 /i )命令来宣传(“祝福”)MSI,以便如果非 priv 用户启动 /i 它应该正确安装。 (假设它的设计正确。)
  • 1) 是的,我可以提示用户有更新的版本可用,但在这里我想在没有任何用户操作的情况下研究变体 2) 我在普通用户 priv(提升)下运行,我知道我可以创建服务(由管理员运行),可以在开机后和登录前进行安装,但也想避免它
  • 我不太了解您的要求,因此很难给您建议。但请注意,如果您静默启动 MSI 并在安装程序中放置一些内容以等待应用程序关闭,您将无法同时安装任何其他内容,因为 MSI 实现了一个系统范围的互斥锁,限制了一次运行安装一次。
  • Chrisopher 描述的哪一部分让您感到困惑?

标签: wix windows-installer


【解决方案1】:

解决方案是让您的应用程序知道“重启管理器”。

您注册的不是 WM_QUIT,而是重新启动管理器感知,Windows Installer 将发送 WM_QUERYENDSESSION/WM_ENDSESSION 消息。您准备应用程序以正常关闭,保存用户会话或根据需要阻止应用程序关闭,然后您的应用程序会自动重新启动。

重启管理器Guidelines for Applications 上的 MSDN 文档将帮助您入门。

【讨论】:

  • 谢谢,这个问题对我来说仍然是真实的,你给了我一个希望
  • 祝你好运!我认为微软在 Vista 发布时在 channel9 上有一个演示视频,演示了该功能,如果您需要其他帮助,Windows SDK 中可能还有一些示例代码。
猜你喜欢
  • 2021-02-28
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多