Embarcadero C ++:如果有新的更新,如何通知用户?

时间:2017-02-15 07:01:01

标签: updates c++builder vcl vcl-styles

我是Embarcadero C ++的初学者,如果我的应用程序是在Embarcadero C ++中开发并安装在客户端机器中那么我的应用程序如何通知用户是否有新的更新?如果用户单击是按钮,则它将首先下载应用程序然后安装它。

如果有人有任何想法,请告诉我。

1 个答案:

答案 0 :(得分:1)

以下是我如何检查服务器上是否有新版本的程序使用 Indy客户端组件 TIdHTTP

我们假设您上传了新版本的应用程序。除了包含您的应用程序的安装或zip文件外,还上传一行文本文件(applicationBuildData.txt),其中包含构建值(整数),分隔符(;)以及可选的其他一些数据(版本号,程序名等)。例如:

20170215; ProgamName rel。 1.2。

这是applicationBuildData.txt文件中唯一的一行。这是代码示例(我已经修改了我的原始代码):

void __fastcall TfrmDialog::Button1Click(TObject *Sender)
{
TIdHTTP *IdHTTP1 = new TIdHTTP(this);
// let's say this is current app build (on user's side)  
int currAppBuild = 20170101;
int prodBuildNew = 0;
UnicodeString prodVersionNew;
UnicodeString version_str;
  try {
      // get content of applicationBuildData.txt into string  
       version_str = IdHTTP1->Get("http://www.your-site.com/applicationBuildData.txt");
       prodBuildNew = StrToInt(version_str.SubString(1, version_str.Pos(";") - 1).Trim());
       prodVersionNew = version_str.SubString(version_str.Pos(";") + 1, 100).Trim();
       }
   catch (...)
       {
       prodBuildNew = 0;
       prodVersionNew = "???";
       }
   if (prodBuildNew == 0) {
       // ...faild to get data from server...
       // display message  
       }
   else if (prodBuildNew > currAppBuild) {
       // new version is available
       // display message       
       } 
   else {
       // application version is up to date
       // display message
     }
delete IdHTTP1;     
 }

在此示例中,当前内部版本号小于上载的内部版本号,它将指示用户新版本可用。

注意:currAppBuild通常是一些全局常量或呈现构建版本的全局变量。检测到服务器上的新版本后,您可以下载安装/ zip或只显示消息,让用户转到您的站点并手动下载新版本。

编辑:如何使用 TIdHTTP 组件将文件下载到本地磁盘,请查看以下视频:

https://www.youtube.com/watch?v=fcN8K3R4iZE