【问题标题】:Embarcadero C++ : How to notify user if new update is available?Embarcadero C++:如果有新的更新可用,如何通知用户?
【发布时间】:2017-02-15 07:01:01
【问题描述】:

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

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

【问题讨论】:

  • This question 可能会有所帮助。
  • 请给我任何参考......或任何帮助我实现这一目标的组件,如 clickonce..等。对 Embarcadero 了解不多。

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


【解决方案1】:

这是我检查服务器上是否有新版本程序可用的方法,使用 Indy 客户端组件 TIdHTTP

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

20170215;程序名称 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    相关资源
    最近更新 更多