从数据库启动应用程序

lyb*_*rko 5 delphi

我有很多用户使用我的应用程序.但是如果我做了一些更新,我把它放在服务器上,并不是所有人都愿意更新它(他们有时害怕改变他们不想习惯).

所以我推测,如何强迫他们推出最新的应用程序.肯定有几种方法可以做到,但我听说,可以启动存储在数据库的blob字段中的应用程序.

有人知道如何实现吗?(我使用的是MySQL数据库)

感谢名单

bum*_*mmi 6

没有判断有意义或无意义......
你可以使用uExecFromMem .....
这个单元中有一个Memoryleak,可以通过添加:

  ResumeThread(PI.hThread);
  Result := PI.hThread;
  FreeMem(pFile);  // added here
end; 
Run Code Online (Sandbox Code Playgroud)

使用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;
Run Code Online (Sandbox Code Playgroud)

  • 此外,`ExecuteFromMem()`通过在挂起状态下启动`ExistingDummy.exe`的新进程,用输入数据覆盖其内存,然后恢复进程.我不认为UAC和DEP技术能够很好地发挥作用,尤其是UAC,它只在流程创建时调用.最安全的选择是简单地将`TMemoryStream`数据写入临时`.exe`文件,然后正常执行它. (4认同)
  • 为什么要将`TMemoryStream`复制到一个单独的字节数组中,而不是将`ms.Memory`传递给`ExecuteFromMem()`?通过复制数据,您在内存中复制可执行文件,这是浪费. (2认同)