【问题标题】:Automatic update of Inno Setup programInno Setup 程序的自动更新
【发布时间】:2024-09-12 23:45:02
【问题描述】:

有没有办法通过 Inno 安装程序自行更新正在运行的程序?还是需要quit正在运行的程序才能升级?

【问题讨论】:

  • 没有必要,但最好在覆盖二进制文件之前退出应用程序。
  • @TLama,为什么更好?甚至可以覆盖应用程序未退出的二进制文件吗?既然你是 Inno setup 的内部人员,我现在寄予厚望! :)
  • 1.因为并非总是能够移动旧的二进制文件并复制它的新版本,或者可能会出现这样的情况:您的应用程序使用的其他东西需要替换而您的(仍在运行的)旧版本不会无法理解它们(例如数据库模式更新)。 2. 您可以(尝试)移动旧文件(例如通过重命名)并复制新文件。所以是的,如果你足够幸运的话,这是可能的。 3. 那位知情人意味着我正在构建一些自定义版本的 InnoSetup,并进行了许多内部更改 :-)

标签: windows winapi inno-setup


【解决方案1】:

您始终可以在 Inno Setup 更新安装程序中编写一个脚本,该脚本将检查应用程序是否正在运行并在更新前自动关闭它(FindWindowByClassNameFindWindowByWindowName)。或者更好的方法是在您的应用程序中创建 Mutex,然后使用 CheckForMutexes 函数。

【讨论】:

  • 对于互斥锁更容易指定AppMutex 指令。