我們希望向我們的產品(C++)添加自動更新或更新通知。如何添加軟件更新訂閱
更新應基於訂閱的是:當訂閱過期,沒有更多的可用更新
- 用戶購買訂閱1年更新
- 的。
有人可以建議軟件或提供商實施這樣的服務嗎?
我發現了幾個自動更新的例子,但它們都是無限的。
此服務必須限制在每個用戶的基礎上並允許擴展。
我們希望向我們的產品(C++)添加自動更新或更新通知。如何添加軟件更新訂閱
更新應基於訂閱的是:當訂閱過期,沒有更多的可用更新
有人可以建議軟件或提供商實施這樣的服務嗎?
我發現了幾個自動更新的例子,但它們都是無限的。
此服務必須限制在每個用戶的基礎上並允許擴展。
你需要什麼,在配料方面,應該是:
我的建議是使用一個嵌入式HTTP客戶端,如(無恥插頭)Arachnida,用一個簡單的API定義通過HTTP服務的簡單的XML - 是這樣的:
class UpdateAgent
{
/* boilerplate */
public :
/* set the key to use. Throws an InvalidKey exception if not valid
* validity is checked locally - no HTTP queries are used.
* Key may have been invalidated on the server without notification
* at this point */
void setKey(const std::string &key);
// Get the key currently set
std::string getKey() const;
/* using a synchronous HTTPS query, check with the server if updates are
* available for the current key. Throws on error: one of the QueryError
* subclasses if there has been a query error, or InvalidKey is the
* key is either not set or is not valid (i.e. invalidated server-side) */
bool isUpdateAvailable() const;
/* etc. */
};
如上所述,它們的關鍵字本身是一個字符串,通過它的編碼,在某種信息的有效性 - 例如某種類型的CRC來知道輸入的字符串是否有效。其餘的密鑰 - 包括其到期日期 - 可以在服務器端進行管理,儘管過期信息也可以在密鑰本身編碼(但這意味着如果用戶擴展許可證則更改密鑰)。
至於服務器端,當用鑰匙和更新的請求提交,服務器會
如果下載失敗,則可以重新啓動或再次請求。如果你想爲個人下載收費,你需要在客戶端確認下載成功 - 或者失敗報告錯誤 - 所以你不要指望個人下載兩次。
當然,這一切都是從我的頭頂 - 可能有一些細節我都沒有想到在這裏。每種成分都很容易來。蛛形綱的一個開源版本是available on SourceForge,我有一些代碼,如果你需要它(用它爲我的另外一個產品)來編碼的許可證密鑰,但我敢肯定,你可以寫,如果你不想用我的。
你可能要考慮的幾件事情是你的客戶安全認證 - 所以他們不同意許可證密鑰 - 保護您的HTTP連接,所以你最終不會發布您更新到全球,無論是等由於大多數構建塊已經存在,因此服務器和客戶端都不需要執行起來非常複雜。
HTH
RLC
什麼平臺(我猜的Windows,因爲用戶需要支付的更新,但我可能是錯的),並且你要什麼許可證?而且,這很容易實現。 – 2011-03-23 20:05:28
對不起,我沒有提及 - 這是Windows操作系統。我正在尋找示例實現。 – 2011-03-23 20:43:29