當你把一個專案寫好之後,要透過 ClickOnce 發行,步驟很簡單。
程序:
對著專案按右鍵→
對著專案按右鍵→
發行→
指定要發行此應用程式的位置(就是把發行檔案放到一個目錄底下,之後再把這個檔案搬到IIS 網站底下)→
使用者要如何安裝應用程式(我希望是從網頁上安裝,所以選第一個從網站)→
是否可以在離線時使用應用程式(選是,畢竟能不能連線,看個人需求)。
1.對著專案按右鍵→發行
2.指定要發行此應用程式的位置(就是把發行檔案放到一個目錄底下,之後再把這個檔案搬到IIS 網站底下)
3.使用者要如何安裝應用程式(我希望是從網頁上安裝,所以選第一個從網站)
4.是否可以在離線時使用應用程式(選是,看個人需求)。
流程:對著專案按右鍵→屬性→發行→選項→資訊清單→建立桌面捷徑 打勾
1.對著專案按右鍵→屬性
2.左邊選”發行”頁,在按下“選項”的按鈕
3.左邊選”資訊清單”頁,把“建立桌面捷徑” 打勾即可
需求2:程式啟動時ClickOnce 強迫更新,不能允許使用舊程式
流程:對著專案按右鍵→屬性→發行→更新→指定此應用程式的最小必要版本 打勾
1.點選更新
2.指定此應用程式的最小必要版本 打勾,並確認發行版本是否一致
需求3:程式執行時,版本有更新,要強迫使用者更新並自動重啟
要寫程式碼
private void 檢查ClickOnce版本是否最新()
{
try
{
//先確認是不是 ClickOnce的程式,避免程式出錯
if (!(ApplicationDeployment.IsNetworkDeployed))
{
return;
}
//程式執行過程中,有版本更新 ,自動更新。
System.Deployment.Application.ApplicationDeployment obj = ApplicationDeployment.CurrentDeployment;//取得目前使用者的版本資訊
if (ApplicationDeployment.CurrentDeployment.CheckForUpdate())//比對伺服器上的版本
{
obj.UpdateCompleted += new AsyncCompletedEventHandler(obj_UpdateCompleted);
obj.UpdateAsync();
}
else
{
MessageBox.Show("版本沒有新的");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void obj_UpdateCompleted(object sender, AsyncCompletedEventArgs e)
{
Application.Restart();
}
//呼叫網址:http://網址/TestClickOnce/TestClickOnce.application?A=1&B=2&C=3
private NameValueCollection 取得ClickOnce的Get參數()
{
string QueryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
NameValueCollection Get參數集合 = new NameValueCollection();
Get參數集合 = System.Web.HttpUtility.ParseQueryString(QueryString);
List<Get參數> ListGet參數 = new List<Get參數>();
foreach (String s in Get參數集合.AllKeys)
{
Get參數 item = new Get參數();
item.QueryStringKey = s;
item.QueryStringValue = Get參數集合[s];
ListGet參數.Add(item);
}
return Get參數集合;
}
public class Get參數
{
public string QueryStringKey { get; set; }
public string QueryStringValue { get; set; }
}
private NameValueCollection 取得ClickOnce的Get參數()
{
string QueryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
NameValueCollection Get參數集合 = new NameValueCollection();
Get參數集合 = System.Web.HttpUtility.ParseQueryString(QueryString);
List<Get參數> ListGet參數 = new List<Get參數>();
foreach (String s in Get參數集合.AllKeys)
{
Get參數 item = new Get參數();
item.QueryStringKey = s;
item.QueryStringValue = Get參數集合[s];
ListGet參數.Add(item);
}
return Get參數集合;
}
public class Get參數
{
public string QueryStringKey { get; set; }
public string QueryStringValue { get; set; }
}
沒有留言:
張貼留言