首页 » Web前端 » tuphp技巧_TU适用于您项目的简单纯真更新库

tuphp技巧_TU适用于您项目的简单纯真更新库

访客 2024-10-23 0

扫一扫用手机浏览

文章目录 [+]

特色:

完全或差异更新

tuphp技巧_TU适用于您项目的简单纯真更新库

静默更新

tuphp技巧_TU适用于您项目的简单纯真更新库
(图片来自网络侵删)

每件压缩

分离的数据库

Web做事器准备

您须要一个不错的PHP版本。
我自己的做事器运行PHP7.3,但是该脚本将在旧版本中运行。
它利用SQLite3创建数据库,您可以对其进行编辑以支持MySql或其他任何办法。

编辑tu.php以变动数据库名称和默认的管理员用户名+密码。

将tu.php上传到您的做事器。

转到tu.php?admin。
有一个大略的管理面板,可用于管理项目。
要创建项目,请指定名称和上传密码。

创建后,管理面板会天生一个GUID,该GUID将放置在Windows运用程序中以引用该项目。

PHP管理面板

管理员面板显示:

真空数据库选项

拆分数据库的选项。
拆分数据库在其外部具有文件数据,因此SQLite3数据库不会增长。

如果拆分,则选择再次加入数据库。

项目列表,个中包含以下文件:

名称

ID

尺寸

直接链接

压缩/解压缩选项

直接下载次数

补丁数

支票数量

上载后将重置末了的统计信息。

Windows运用程序

包括tu.hpp

实例化TU::TU工具:

TU(const char prjg,const wchar_t host,const wchar_t path,bool SSL = false,unsigned short Port = 0,DWORD flg = 0,const wchar_t un = 0,const wchar_t pwd = 0,const wchar_t uploadpwd = 0)123复制代码类型:[cpp]

参数:

由tu.php管理面板创建的唯一项目GUID

主机名

PHP脚本的路径

SSL的true/false

可选端口(如果利用0、80或443)

InternetConnect()功能标志

做事器的可选用户名/密码

上载密码(如果您打算上载文件)

之后,利用AddFiles()member添加该库将引用的文件。
每个文件都有一个本地路径和一个远程ID(guid):

vector<tuple<wstring, string>> tux;auto a = L"m.docx";tux.emplace_back(make_tuple<wstring, string>(forward<wstring>(a), string("A44BC1B3-D919-4835-A7D8-FC633EB7B7EC")));auto b = L"m.pdf";tux.emplace_back(make_tuple<wstring, string>(forward<wstring>(b), string("A44BC1B3-D919-4835-A7D8-FC633EB7B7ED")));tu.AddFiles(tux);123456789复制代码类型:[cpp]

还AddSelf()可以自动添加您自己的可实行文件。

将更新上传到您的做事器

HRESULT Upload (std::function<HRESULT(size_t sent, size_t total, void)> func = nullptr,void lp = 0);HRESULT hr = tu.Upload();1234复制代码类型:[cpp]

它利用我不错的REST库与PHP脚本通信,并利用ZipUtils压缩要上传的数据,仅此而已。
常日,您不会从您的运用中调用此功能,由于它须要上传密码,并且您不肯望其他人通过嗅探连接来学习该密码。
常日,您将利用单独的“上载器”。
该函数将所有项目压缩到一个ZIP文件中,并将其发送到tu.php。

github仓库有一个示例“uploader”,它从XML配置上传项目。

该函数接管一个可选的回调,只要您正在上传文件,该回调便会重复调用。
E_FAIL从中返回以停滞上传。

查询更新

HRESULT Check();HRESULT hr = tu.Check();12复制代码类型:[cpp]

返回S_OK是否所有检讨的文件都是最新的,或者S_FALSE是否有任何文件须要更新。

更新中

HRESULT DownloadFull(std::function<HRESULT (unsigned long long, unsigned long long, void)> func = nullptr, void lp = 0);12复制代码类型:[cpp]

自动下载所有须要下载的文件并更新它们。
通过将当前文件移动到.OLD文件中,创建一个新目标,然后将OLD文件标记为要删除,此功能还可以与正在利用的文件(例如您自己的运用程序)一起利用。
这样,您可以用几行代码轻松地进行自我更新,而您的用户将永久不会把稳到它:下次启动运用程序时,更新将在那里。

差异检讨

常日,由于一个大略的缺点,您只须要重新编译即可,但是您的EXE已经是10MB。
当所有不同的只是文件的一小部分时,重新下载全体文件是否可惜?

在这里,我出色的DIFF库发挥了浸染。
实际上,TU::Upload()不仅将您的数据上传到做事器,而且还会为每个项目打算一个署名并上传。
现在您可以检讨:

HRESULT CheckWithSigs(std::function<HRESULT (unsigned long long, unsigned long long, void)> func = nullptr, void lp = 0);12复制代码类型:[cpp]

此功能类似于simpleCheck(),但它也下载须要更新的文件的署名。
返回此函数后S_FALSE,您就知道须要更新,请致电:

HRESULT DownloadDiff(std::function<HRESULT (unsigned long long, unsigned long long, void)> func = nullptr, void lp = 0);12复制代码类型:[cpp]

此函数的行为与完备相同Download(),但是它仅要求从做事器变动的部分,而不是全体下载。
因此,利用该DIFF库将更快地更新文件。
好是,它以差异办法而不是增量办法事情。
这意味着,无论本地项目有多旧,该函数都会打算它的不同部分并向做事器要求。
当然,如果本地项目不存在,该功能将完备重新下载它。

一次性

void OneOff(const char r,bool RunNow = false,HICON hIc = LoadIcon(0,IDI_INFORMATION),bool NoDiff = false);1复制代码类型:[cpp]

许可单个EXE在具有Icon支持和下载对话框的一行中检讨,下载和更新自身。
一行更新!

标签:

相关文章

PHP公函签报源码技巧_公函审核这样办

从一定意义上讲,公函质量的高低反响了一个单位的事情质量、水平和效率,代表了一个单位的形象。做好公函审核事情,必须立足实际、讲究“章...

Web前端 2024-12-09 阅读0 评论0

ajaxphp查询技巧_PHPAJAX 与 MySQL

AJAX 数据库实例下面的实例将演示网页如何通过 AJAX 从数据库读取信息:本教程利用到的 Websites 表 SQL 文件:...

Web前端 2024-12-09 阅读0 评论0