我有一个内部网应用程序作为 exe 文件(win32,用 Delphi 编写)。
我会定期更新它的新功能和补丁。
许多人正在访问同一个 exe(通过远程桌面使用它)。
在 Windows Server 2003 中替换文件我只需要:
重命名旧文件,复制新文件。
在 2008 年,这种情况已不再可能,因为由于相同的缓存,新文件无法工作。它可以运行,但会出现问题(可能与 Delphi 使用 exe 资源的方式有关)。唯一的方法是关闭所有用户会话并替换文件。
您能建议一种可行的方法吗?如果可能的话,简单一点?是否可以禁用此缓存?或者任何其他允许我替换文件的技巧(无需更改完整路径)。
答案1
另外,您可以创建一个永不改变的新启动器。它将读取要启动的可执行文件的版本,并启动更新后的版本。
因此,如果最终用户的快捷方式指向 filename.exe,那么这就是您命名启动器的名称,启动器可能会读取文件 filename.versions,然后执行 filename.version.exe。
答案2
安排维护时段并在没有用户使用该文件时替换该文件。仅仅因为 Server 2003 允许您以错误的方式做某事而不被惩罚,并不意味着 2008 也应该如此。
您提到这一点的部分:
唯一的方法是关闭所有用户会话并替换该文件。
是正确的做法。
答案3
我猜如果你使用 UPX 压缩器,你将能够删除可执行文件。一旦 .exe 在内存上解压。