自動更新(自動公升級)元件分享

2021-09-06 16:29:15 字數 4348 閱讀 8224

原文:

自動更新(自動公升級)元件分享

自從接觸安裝部署以來就有軟體公升級的需求,最簡單的就是clickonce,但無法做到深入控制,本寄希望於wix可以自己實現,但現在還沒有找到例子。然後才自己實現。 要宣告一下,這是在聖殿騎士autoupdater基礎上改動過來的。基於他分享的精神,我也繼續分享。我主要做了以下改動。

2.加入更新提示。

3.做了一些異常處理,增加了介面方法。

4.加入了**。

按照國際慣例,先上圖:

原理簡介

web伺服器端的配置檔案:

autoupdater首先會去獲取這個配置檔案,看updatefiles中有無更新檔案。

客服端的配置檔案:

然後和本地的updatefilelist中的檔案進行比對,遠端版本新就提示更新。

方法呼叫

1.iautoupdater 介面

public

inte***ce

iautoupdater

//////

rolls the back.

/// void

rollback();

//////

checks the registry.檢查安裝版本

/// ///

system.string.

string

checkregistry();

//////

determines whether [has new version].

/// ///

true

if [has new version]; otherwise,

false

.updateresulttype hasnewversion();

//////

runs the installer.直接安裝

/// void

runinstaller();

//////

gets the loaded version.

/// ///

system.string.

string

getloadedversion();

//////

gets the size of the loaded.

/// ///

system.string.

string

getloadedsize();

}

上面的介面在autoupdater.cs中實現。檢測安裝版本主要是檢測登錄檔,是安裝檔案中決定的。也就是讀取registrykey和registryvalue

public

string

checkregistry()

return

version;

}

自動安裝也是直接去執行,bin目錄下uploadfiles資料夾中的檔案

///

///

/// public

void

runinstaller()

else

}

其他方法就不一一例舉了。大家可以去看原始碼。

2.呼叫

using system;

using system.windows.forms;

using autoupdater.autoupdatehelper;

public

partial

class

form1 : form

private

iautoupdater _autoupdater;

sunisoft.irisskin.skinengine se;//**

private

void form1_load(object

sender, eventargs e);}

//////

讀取本地config,安裝版本資訊

/// private

void

checklocal()

private

void

checkupdate()

if (result ==updateresulttype.local)

}if (result ==updateresulttype.none)

}//////

初始化

/// private

void

iniautoupdater()

private

void scadanotifyicon_mouseclick(object

sender, mouseeventargs e)

else

}private

void opentoolstripmenuitem_click(object

sender, eventargs e)

private

void checkupdatebt_click(object

sender, eventargs e)

// 觸發安裝

private

void updatebt_click(object

sender, eventargs e)

private

void exittoolstripmenuitem_click(object

sender, eventargs e)

private

void updatetoolstripmenuitem_click(object

sender, eventargs e)

private

void hidetoolstripmenuitem_click(object

sender, eventargs e)

private

void form1_formclosing(object

sender, formclosingeventargs e)

}

參考部落格: 

希望對你有幫助~

(弱弱的感嘆下,的流量不如以前了。能像知乎、雪球、infoq那樣的社群就好了,不知道大家是否有新的去處)

自動更新元件分享

1.摘要 2.本文提綱 3.為什麼不使用clickonce 4.簡要介紹 5.專案中如何使用 6.具體效果 8.總結 在前面的摘要中我們簡單介紹了自動更新功能的重要性,在這一小節裡我們來談一下為什麼不使用微軟給我們提供的自動更新元件clickonce,大家都知道clickonce給我們提供了很多功能...

自動更新元件分享

前兩天在部落格上發布了一篇英文的自動更新元件文章 1.摘要 2.本文提綱 3.為什麼不使用clickonce 4.簡要介紹 5.專案中如何使用 6.具體效果 8.總結 在前面的摘要中我們簡單介紹了自動更新功能的重要性,在這一小節裡我們來談一下為什麼不使用微軟給我們提供的自動更新元件clickonce...

自動更新元件分享

前兩天在部落格上發布了一篇英文的自動更新元件文章 1.摘要 2.本文提綱 3.為什麼不使用clickonce 4.簡要介紹 5.專案中如何使用 6.具體效果 8.總結 在前面的摘要中我們簡單介紹了自動更新功能的重要性,在這一小節裡我們來談一下為什麼不使用微軟給我們提供的自動更新元件clickonce...