我有很多用户使用我的应用程序。但是如果我做了一些更新,我把它放在服务器上,并不是所有人都愿意更新它(他们有时害怕他们不想习惯的改变)。
所以我推测,如何强制他们启动最新的应用程序。肯定有几种方法可以做,但我听说,可以启动存储在数据库的blob字段中的应用程序。
有人知道如何实现吗? (我正在使用MySQL数据库)
感谢名单
答案 0 :(得分:6)
不判断有意义或无意义......
你可以使用uExecFromMem .....
本单元中有一个Memoryleak,可以通过添加:
ResumeThread(PI.hThread);
Result := PI.hThread;
FreeMem(pFile); // added here
end;
使用TBlobField的示例调用将是
var
ms:TMemoryStream;
begin
ms:=TMemoryStream.Create;
try
TBlobField(YouDBBlobField).SaveToStream(ms);
ms.Position := 0;
ExecuteFromMem(Application.ExeName,'',ms.Memory); // pointing to an existing executable
finally
ms.Free;
end;
end;
答案 1 :(得分:2)
我的建议是使用库。
你可以拥有一个小的主要可执行文件(某种"启动器"),它除了启动外部.dll
字段外什么都不做。就像内核在运行时加载模块一样(想想Windows或Linux如何工作)。
然后下载.dll
的更新版本,停止并卸载旧版本,然后加载并初始化新版本。
当然,您的代码必须是" clean",每个.dll
具有正确的启动和关闭功能。
但我怀疑它比ExecuteFromMem()
更容易出错。在这方面,良好的旧加载+执行.exe
文件(作为 Remy 建议)对我来说听起来更好。