重命名正在运行的应用程序-危险
本文关键字:应用程序 危险 运行 重命名 | 更新日期: 2023-09-27 17:53:24
我正在编写一个小实用程序来更新我们的应用程序。
为了更新更新实用程序,我希望它在运行时重命名自己,并从远程源复制新版本。所以下次你启动更新程序时,你就有了一个新版本。
你知道使用这种机制可能会出现什么问题吗?
实际上我很惊讶它是可能重命名一个正在运行的程序(丢失了一个蛋糕…),而删除是不允许的。
谢谢你的提示
您可以重命名—因为它只更改元数据,但实际的文件分配链未被修改,这意味着它们可以在使用它的进程中保持内存映射。
当安装程序必须升级"实时"运行的二进制文件时,这是一个普遍存在的技巧。
如果应用程序稍后尝试从原始文件规范重新打开,则可能会导致问题。可执行文件或dll通常不会发生这种情况,不过您应该注意可能会进行一些自我认证(许可证检查)的嵌入式资源和程序。通常最好尽早重新启动相应的应用程序,就像windows会在系统更新重命名一个。exe通常没有任何问题-重命名。dll的是完全另一个故事。
我建议使用子目录(标记日期或版本号),并创建一个小的启动程序(与您的"真正的"应用程序具有相同的名称和图标),从文本文件中读取当前版本并启动它。
。
updater.exe (the launcher)
updater.config (containing /updater_v_02/updater.exe)
/updater_v_01/updater.exe (the real app, v 01)
/updater_v_02/updater.exe (the real app, v 02)
这样,你就可以
- 在 周围保留多个版本的应用程序
- 测试新版本(通过直接从子目录启动它),而用户继续使用旧版本
- 切换dll等,没有任何麻烦