小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

TU:適用于您項(xiàng)目的簡易更新庫

 碼農(nóng)9527 2021-05-11

  我討厭那些不會自動更新的應(yīng)用程序。真的。這是一個(gè)可以自動為您完成所有工作的庫。您需要一個(gè)能夠運(yùn)行PHP的Web服務(wù)器來存儲更新,僅此而已!

web

    特征:

    完整或差異更新

    靜默更新

    每件壓縮

    分離的數(shù)據(jù)庫

    Web服務(wù)器準(zhǔn)備

    您需要一個(gè)不錯(cuò)的PHP版本。我自己的服務(wù)器運(yùn)行PHP7.3,但是該腳本將在舊版本中運(yùn)行。它使用SQLite3創(chuàng)建數(shù)據(jù)庫,您可以對其進(jìn)行編輯以支持MySql或其他任何方式。

    編輯tu.php以更改數(shù)據(jù)庫名稱和默認(rèn)的管理員用戶名+密碼。

    將tu.php上傳到您的服務(wù)器。

    轉(zhuǎn)到tu.php?admin。有一個(gè)簡單的管理面板,可用于管理項(xiàng)目。要創(chuàng)建項(xiàng)目,請指定名稱和上傳密碼。

    創(chuàng)建后,管理面板會生成一個(gè)GUID,該GUID將放置在Windows應(yīng)用程序中以引用該項(xiàng)目。

    PHP管理面板

    管理員面板顯示:

    真空數(shù)據(jù)庫選項(xiàng)

    拆分?jǐn)?shù)據(jù)庫的選項(xiàng)。拆分?jǐn)?shù)據(jù)庫在其外部具有文件數(shù)據(jù),因此SQLite3數(shù)據(jù)庫不會增長。

    如果拆分,則選擇再次加入數(shù)據(jù)庫。

    項(xiàng)目列表,其中包含以下文件:

    名稱

    ID

    尺寸

    直接鏈接

    壓縮/解壓縮選項(xiàng)

    直接下載次數(shù)

    補(bǔ)丁數(shù)

    支票數(shù)量

    上載后將重置最后的統(tǒng)計(jì)信息。

    Windows應(yīng)用程序

    包括tu.hpp

    實(shí)例化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復(fù)制代碼類型:[cpp]

    參數(shù):

    由tu.php管理面板創(chuàng)建的唯一項(xiàng)目GUID

    主機(jī)名

    PHP腳本的路徑

    SSL的true/false

    可選端口(如果使用0、80或443)

    InternetConnect()功能標(biāo)志

    服務(wù)器的可選用戶名/密碼

    上載密碼(如果您打算上載文件)

    之后,使用AddFiles()member添加該庫將引用的文件。每個(gè)文件都有一個(gè)本地路徑和一個(gè)遠(yuǎn)程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復(fù)制代碼類型:[cpp]

    還AddSelf()可以自動添加您自己的可執(zhí)行文件。

    將更新上傳到您的服務(wù)器

HRESULT Upload
  (std::function<HRESULT(size_t sent, size_t total, void*)> func = nullptr,void* lp = 0);

HRESULT hr = tu.Upload();1234復(fù)制代碼類型:[cpp]

    它使用我不錯(cuò)的REST庫與PHP腳本通信,并使用ZipUtils壓縮要上傳的數(shù)據(jù),僅此而已。通常,您不會從您的應(yīng)用中調(diào)用此功能,因?yàn)樗枰蟼髅艽a,并且您不希望其他人通過嗅探連接來學(xué)習(xí)該密碼。通常,您將使用單獨(dú)的“上載器”。該函數(shù)將所有項(xiàng)目壓縮到一個(gè)ZIP文件中,并將其發(fā)送到tu.php。

    github倉庫有一個(gè)示例“uploader”,它從XML配置上傳項(xiàng)目。

    該函數(shù)接受一個(gè)可選的回調(diào),只要您正在上傳文件,該回調(diào)便會重復(fù)調(diào)用。E_FAIL從中返回以停止上傳。

    查詢更新

HRESULT Check();
HRESULT hr = tu.Check();12復(fù)制代碼類型:[cpp]

    返回S_OK是否所有檢查的文件都是最新的,或者S_FALSE是否有任何文件需要更新。

    更新中

HRESULT DownloadFull(std::function<HRESULT
  (unsigned long long, unsigned long long, void*)> func = nullptr, void* lp = 0);12復(fù)制代碼類型:[cpp]

    自動下載所有需要下載的文件并更新它們。通過將當(dāng)前文件移動到.OLD文件中,創(chuàng)建一個(gè)新目標(biāo),然后將OLD文件標(biāo)記為要刪除,此功能還可以與正在使用的文件(例如您自己的應(yīng)用程序)一起使用。這樣,您可以用幾行代碼輕松地進(jìn)行自我更新,而您的用戶將永遠(yuǎn)不會注意到它:下次啟動應(yīng)用程序時(shí),更新將在那里。

    差異檢查

    通常,由于一個(gè)簡單的錯(cuò)誤,您只需要重新編譯即可,但是您的EXE已經(jīng)是10MB。當(dāng)所有不同的只是文件的一小部分時(shí),重新下載整個(gè)文件是否可惜?

    在這里,我出色的DIFF庫發(fā)揮了作用。實(shí)際上,TU::Upload()不僅將您的數(shù)據(jù)上傳到服務(wù)器,而且還會為每個(gè)項(xiàng)目計(jì)算一個(gè)簽名并上傳。現(xiàn)在您可以檢查:

HRESULT CheckWithSigs(std::function<HRESULT
  (unsigned long long, unsigned long long, void*)> func = nullptr, void* lp = 0);12復(fù)制代碼類型:[cpp]

    此功能類似于simpleCheck(),但它也下載需要更新的文件的簽名。返回此函數(shù)后S_FALSE,您就知道需要更新,請致電:

HRESULT DownloadDiff(std::function<HRESULT
  (unsigned long long, unsigned long long, void*)> func = nullptr, void* lp = 0);12復(fù)制代碼類型:[cpp]

    此函數(shù)的行為與完全相同Download(),但是它僅請求從服務(wù)器更改的部分,而不是整個(gè)下載。因此,使用該DIFF庫將更快地更新文件。好消息是,它以差異方式而不是增量方式工作。這意味著,無論本地項(xiàng)目有多舊,該函數(shù)都會計(jì)算它的不同部分并向服務(wù)器請求。當(dāng)然,如果本地項(xiàng)目不存在,該功能將完全重新下載它。

    一次性

void OneOff(const char* r,bool RunNow = false,HICON hIc = LoadIcon(0,IDI_INFORMATION),bool NoDiff = false);1復(fù)制代碼類型:[cpp]

    允許單個(gè)EXE在具有Icon支持和下載對話框的一行中檢查,下載和更新自身。一行更新!

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多