C#Winform程序發布與自動升級


================================發布===============================================

1、右鍵程序,選擇發布

 

 2、選擇要發布的位置,點擊下一步(發布的位置就是IIS里面網站指定的文件夾)

 3、選擇從網站-》點擊瀏覽-》選擇相應的url地址(如果沒有就自己手動填寫)-》填寫完點下一步

 

 網站與對應的文件夾位置

 4、選擇"是",然后點擊下一步

 

 5、點擊完成即可

 6、發布的時候顯示簽名錯誤

 

 解決方式就是把簽名關了就行

右鍵項目-》屬性-》簽名-》把"為clickOnce清單簽名"的√去掉即可。

 

 發布成功

 

 文件也生成成功

 

 而且瀏覽器會自動跳轉到頁面 http://172.60.65.82:8070/publish.htm 

 

 

 

============================安裝=====================================

1、然后點擊安裝,就會自動下載文件 setup.exe文件了

2、下載完之后點擊安裝即可。

3、安裝完成,直接點擊就能使用了

 

 

 

===============================自動更新===========================================

1、程序修改之后,重新發布。然后客戶端打開的時候,會自動校驗程序是否已更新,若已更新,則會提示程序已更新

 

 2、然后點擊確定,程序會自動下載並且自動安裝。這樣程序的更新就完成了

 

===========================================

文件安裝的地方是在 C:\Users\1812108004\AppData\Local\Apps\2.0\P3PB603D.EJN 這個地方。

至於配置文件等等的東西,能否正常讀取。我還沒驗證過

 

參考:https://www.cnblogs.com/bdqczhl/p/10191678.html

 

 

 

=====================2021-02-22添加=====================

自動更新,要引用類 System.Deployment.Application 直接貼代碼

using System;
using System.Deployment.Application;
using System.Threading;
using System.Windows.Forms;

namespace DoExcel
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();
            lb_tip.Text = "";
            timer1.Start();
        }
        
        /// <summary>
        /// 啟動
        /// </summary>
        private void timer1_Tick(object sender, EventArgs e)
        {
            Thread td = new Thread(checkVersion);
            td.Start();
        }

        /// <summary>
        /// 執行更新操作
        /// </summary>
        private void checkVersion()
        {
            try
            {
                if (ApplicationDeployment.IsNetworkDeployed)
                {
                    ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
                    UpdateCheckInfo info = ad.CheckForDetailedUpdate();
                    if (info.UpdateAvailable)
                    {
                        if (!info.IsUpdateRequired)
                        {
                            lb_tip.Text = "有新版本,點擊更新" + DateTime.Now.ToString();
                            lb_tip.Enabled = true;
                        }
                    }
                    else
                    {
                        lb_tip.Text = "";
                    }
                }
            }
            catch (Exception e)
            {
                lb_tip.Text = e.Message;
                lb_tip.Enabled = false;
            }
        }

        /// <summary>
        /// 更新
        /// </summary>
        private void lb_tip_Click(object sender, EventArgs e)
        {
            if (ApplicationDeployment.IsNetworkDeployed == true)
            {
                ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
                if (ad.CheckForUpdate() == true)
                {
                    if (MessageBox.Show("檢測到有新的版本可以進行更新,現在需要更新嗎?", "選擇是否要進行更新", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                    {
                        ad.Update();
                        Application.Restart();
                    }
                }
            }
        }

        public delegate void SetTextCallback(string text,Label label);
        public void setLabel(string text,Label label) {
            if (label.InvokeRequired)
            {
                SetTextCallback s = new SetTextCallback(setLabel);
                Invoke(s, new object[] { text, label });
            }
            else
            {
                label1.Text = text;
            }
        }

    }
}

 

如果想要每一次打開都不顯示更新的頁面,如下頁面,可以設置更新時間

把更新時間設置為52周,基本就相當於不更新了,這樣就不會每一次打開都顯示上面的頁面了

 

配置文件要自己生成,例如要在本地配置一些什么東西,只需程序運行額時候生成一個文件就行了,然后還需要讀取等等

例如:在安裝路徑下生成一個txt文件

        public void setFile() {
            try {
                using (FileStream fs = new FileStream(Environment.CurrentDirectory + "\\123.txt", FileMode.Append)) {
                    using (StreamWriter wr = new StreamWriter(fs)) {
                        wr.WriteLine(DateTime.Now.ToString());
                    }
                }             
            } catch (Exception) { }
        }

 

 然后寫一個頁面對這個文件進行操作即可。就可以代替配置文件config的作用了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM