【问题标题】:c# on windows updating a program while it's still runningc#在Windows上更新程序,而它仍在运行
【发布时间】:2012-02-17 13:25:54
【问题描述】:

我在自助服务终端上有一个程序,该程序具有相关服务,该服务通过定期在网络上检查是否有更新版本的 MSI 来更新程序。如果它找到一个,它将安装它,该程序可能仍在运行。

为了解决上述解决方案的 DLL 冲突,我将 MSI 中的程序集重命名为按版本,以便在旧版本运行时可以安装新版本。该应用程序将轮询安装目录以查找较新版本的程序集,如果它在不使用时立即重新启动。有没有更好的方法来做到这一点?

【问题讨论】:

  • restart-manager 支持是否不够(需要 Windows Vista 或更高版本),或者此信息亭是否在 Windows XP 上运行?自我更新是……挑剔的。
  • 嗨迈克尔 - 是的,它在 XP 上运行
  • 嗨,Richard,我现在在基于 WPF 的信息亭上面临同样的挑战。你最后做了什么?
  • @UriAbramson Cristophers 的解决方案是实现这种模式的好方法。

标签: c# .net windows-installer kiosk


【解决方案1】:

我以前做过这个故事。它的工作原理是这样的:

UI 以登录用户身份运行。

服务作为系统运行。该服务检查内容并将其下载到临时目录。然后它使用 /JM 命令通告 MSI。安装程序现在可以由非特权用户安装。

该服务向应用程序发送一条 IPC 消息,说明该安装了。应用程序启动安装程序,向它传递一个指示重新启动应用程序的标志。应用程序退出释放锁定的文件。

在安装程序结束时,该标志会导致安装程序重新启动应用程序。

还可以查看wuw4 library。它有助于创建很多这样的解决方案。

【讨论】:

    【解决方案2】:

    ClickOnce 不是更好的选择吗?

    http://msdn.microsoft.com/en-us/library/t71a733d.aspx

    【讨论】:

    • 我一开始尝试过oneclick,但遇到权限问题,该服务还需要配置打印机设置,而且一键安全锁定让这变得困难。
    • Kiosk 和打印机配置听起来像是一个单独的问题...您真正需要多久更改一次打印配置?
    • 每小时大约 5 次 - 这是一个特殊情况。
    • 我发现 ClickOnce 是一个非常有限的选项。您必须留在沙箱内才能使其正常工作,如果您有其他任何东西,您就会被冲洗掉。 MSI 是通用解决方案,只需进行一些设计工作、编码和测试即可实现绿色环保。
    猜你喜欢
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2017-08-31
    • 1970-01-01
    相关资源
    最近更新 更多