亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

c#制作類似qq安裝程序一樣的單文件程序安裝包

2020-01-24 02:55:38
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Xml;
using System.IO;
using System.IO.Compression;
using System.Resources;
using System.Net;
using System.Web.Services.Description;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace MON.Client
{
    public partial class MainForm : Form
    {
        bool testFlag = false;
        Dictionary<string, string> dic;
        Thread t;
        public MainForm()
        {

            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            dic = new Dictionary<string, string>();
            groupBox1.Visible = true;
            groupBox2.Visible = false;
        }

        /// <summary>
        /// 安裝路徑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void InstallPathBTN_Click(object sender, EventArgs e)
        {
            DialogResult dr = FolerBrowserCreator.ShowDialog();
            if (DialogResult.OK == dr)
            {
                InstallPathTB.Text = FolerBrowserCreator.SelectedPath;
                if (dic.ContainsKey("installPath"))
                {
                    dic["installPath"] = InstallPathTB.Text;                   
                }
                else
                {
                    dic.Add("installPath", InstallPathTB.Text);
                }
                if (string.IsNullOrEmpty(LogInstallPahtTB.Text))
                {
                    LogInstallPahtTB.Text = Path.Combine(InstallPathTB.Text, "log");
                    if (dic.ContainsKey("logPath"))
                    {
                        dic["logPath"] = LogInstallPahtTB.Text;                       
                    }
                    else
                    {
                        dic.Add("logPath", LogInstallPahtTB.Text);
                    }
                }
            }
        }
        /// <summary>
        /// 日志路徑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void LogPathBrowseBtn_Click(object sender, EventArgs e)
        {
            DialogResult dr = FolerBrowserCreator.ShowDialog();
            if (DialogResult.OK == dr)
            {
                LogInstallPahtTB.Text = FolerBrowserCreator.SelectedPath;
                if (dic.ContainsKey("logPath"))
                {
                    dic["logPath"] = LogInstallPahtTB.Text;                   
                }
                else
                {
                    dic.Add("logPath", LogInstallPahtTB.Text);
                }
            }
        }
        /// <summary>
        /// 測試webservice;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void testWebServiceBTN_Click(object sender, EventArgs e)
        {
            testWebServiceBTN.Enabled = false;
            TestService();
            if (testFlag)
            {
                MessageBox.Show("測試通過", "系統提示", MessageBoxButtons.OK);
            }
            else
            {
                MessageBox.Show("網站地址有誤", "系統提示", MessageBoxButtons.OK);
            }
            testWebServiceBTN.Enabled = true;
        }
        /// <summary>
        /// 測試webservice
        /// </summary>
        void TestService()
        {
            WebClient wc = new WebClient();
            Stream stream1 = null;
            Stream stream2 = null;
            try
            {
                var url = WebSiteTB.Text.Trim().ToUpper();
                if (!url.EndsWith("/MON/MONSERVICE.ASMX"))
                {
                    url = url.TrimEnd('/') + "/MON/MONSERVICE.ASMX";
                }
                if (dic.ContainsKey("webService"))
                {
                    dic["webService"] = url;
                }
                else
                {
                    dic.Add("webService", url);
                }
                stream1 = wc.OpenRead(url + "?op=GetMachineConfig");
                stream2 = wc.OpenRead(url + "?op=UpdateServerStatus");
                if (stream1.CanRead && stream2.CanRead)
                {
                    testFlag = true;
                }
            }
            catch
            {
                testFlag = false;
            }
            finally
            {
                wc.Dispose();
                if (stream1 != null)
                {
                    stream1.Close();
                }
                if (stream2 != null)
                {
                    stream2.Close();
                }

            }
        }
        /// <summary>
        /// 開始安裝
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void StartBtn_Click(object sender, EventArgs e)
        {
            if (!Directory.Exists(InstallPathTB.Text.Trim()))
            {
                MessageBox.Show("安裝路徑有誤", "系統提示", MessageBoxButtons.OK);
                return;
            }

            if (LogInstallPahtTB.Text.Trim().StartsWith(InstallPathTB.Text.Trim()))
            {
                if (!Directory.Exists(LogInstallPahtTB.Text.Trim()))
                {
                    Directory.CreateDirectory(LogInstallPahtTB.Text.Trim());
                }
            }
            else
            {
                if (!Directory.Exists(LogInstallPahtTB.Text.Trim()))
                {
                    MessageBox.Show("日志路徑有誤", "系統提示", MessageBoxButtons.OK);
                    return;
                }
            }
            if (testFlag == false)
            {
                TestService();//test過就不用再test一次了
            }
            if (testFlag == false)
            {
                MessageBox.Show("網站地址有誤", "系統提示", MessageBoxButtons.OK);
                return;
            }
            try
            {
                int days = Convert.ToInt32(DaysTB.Text.Trim());
                if (days < 1)
                {
                    throw new Exception();
                }
            }
            catch
            {
                MessageBox.Show("日志保存天數有誤", "系統提示", MessageBoxButtons.OK);
                return;
            }
            dic.Add("logDays", DaysTB.Text.Trim());
            groupBox1.Visible = false;
            groupBox2.Visible = true;
            InstallInfoTB.Text = "開始安裝";
            t = new Thread(new ThreadStart(InstallJob));
            t.Start();
        }
        /// <summary>
        /// 安裝線程
        /// </summary>
        void InstallJob()
        {
            WriteLine("準備安裝環境...");
            var configPath = Path.Combine(dic["installPath"], "MON.WS.exe.config");
            var exePath = configPath.TrimEnd(".config".ToCharArray());
            var args = new List<string>();

            args.Add(@"net stop 服務器性能監控UTRY");
            args.Add(@"%SystemRoot%/Microsoft.NET/Framework/v2.0.50727/InstallUtil.exe /u " + exePath);
            args.Add("exit");
            if (!cmdCommand(args))
            {
                WriteLine("在卸載原有服務時出現異常");
                WriteLine("安裝失敗");
                return;
            }

            WriteLine("釋放配置文件...");
            if (!releaseConfig(dic, configPath))
            {
                WriteLine("釋放配置文件過程中出現異常");
                WriteLine("安裝失敗");
                return;
            }
            WriteLine("配置文件釋放完畢...");

            WriteLine("釋放可執行文件...");
            if (!releaseExe(exePath))
            {
                WriteLine("釋放可執行文件時出現異常");
                WriteLine("安裝失敗");
                return;
            }
            WriteLine("可執行文件釋放完畢...");

            WriteLine("開始安裝服務...");
            args.Clear();
            args.Add(@"%SystemRoot%/Microsoft.NET/Framework/v2.0.50727/InstallUtil.exe " + exePath);
            args.Add(@"net start 服務器性能監控UTRY");
            args.Add("exit");
            if (!cmdCommand(args))
            {
                WriteLine("在安裝和啟動服務時出現異常");
                WriteLine("安裝失敗");
                return;
            }
            WriteLine("服務安裝成功");
            WriteLine("安裝成功");
        }
        /// <summary>
        /// 釋放exe
        /// </summary>
        /// <param name="exePath"></param>
        bool releaseExe(string exePath)
        {
            try
            {
                var data = Properties.Resources.MON_WS;
                if (File.Exists(exePath))
                {
                    File.Delete(exePath);
                }
                var f = new FileStream(exePath, FileMode.Create);
                f.Write(data, 0, data.Length);
                f.Close();
                return true;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 釋放Config
        /// </summary>
        /// <param name="dic"></param>
        /// <param name="configPath"></param>
        bool releaseConfig(Dictionary<string, string> dic, string configPath)
        {
            try
            {
                var configStr = Properties.Resources.MON_WS_exe;
                WriteLine("配置相關信息...");
                configStr = configStr.Replace("#WebServiceUrl#", dic["webService"]);
                configStr = configStr.Replace("#LogSavePath#", dic["logPath"]);
                configStr = configStr.Replace("#LogSaveDays#", dic["logDays"]);
                if (File.Exists(configPath))
                {
                    File.Delete(configPath);
                }
                StreamWriter sw = File.AppendText(configPath);
                sw.Write(configStr);
                sw.Flush();
                sw.Close();
                return true;
            }
            catch
            {
                return false;
            }
        }
        /// <summary>
        /// 執行CMD命令
        /// </summary>
        /// <param name="args"></param>
        bool cmdCommand(List<string> args)
        {
            try
            {
                var process = new Process();
                process.StartInfo.FileName = "cmd";
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardInput = true;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.CreateNoWindow = true;
                process.Start();
                foreach (var arg in args)
                {
                    process.StandardInput.WriteLine(arg);
                }
                process.WaitForExit();
                //var result = process.StandardOutput.ReadToEnd();
                process.Close();
                return true;
            }
            catch
            {
                return false;
            }
        }
        delegate void mydele(string text);
        /// <summary>
        /// 更新安裝信息
        /// </summary>
        /// <param name="text"></param>
        void WriteLine(string text)
        {
            if (InstallInfoTB.InvokeRequired)
            {
                mydele dd = new mydele(WriteLine);
                InstallInfoTB.BeginInvoke(dd, new object[] { text });
            }
            else
            {
                InstallInfoTB.Text = InstallInfoTB.Text + Environment.NewLine + text;
                if (text == "安裝成功"||text == "安裝失敗")
                {
                    CompleteBTN.Enabled = true;
                }
            }
        }
        /// <summary>
        /// 取消
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CancelBTN_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        /// <summary>
        /// 完成
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CompleteBTN_Click(object sender, EventArgs e)
        {
            if (t != null)
            {
                t.Abort();
                t.Join();
            }
            this.Close();
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美华人在线视频| 91久久国产综合久久91精品网站| 色悠久久久久综合先锋影音下载| 最新中文字幕亚洲| 一区二区三区回区在观看免费视频| 久久久久久伊人| 亚洲国产欧美日韩精品| 97av在线影院| 亚州av一区二区| 欧美激情中文字幕乱码免费| www.欧美精品一二三区| 成人欧美一区二区三区在线湿哒哒| 亚洲国产一区二区三区在线观看| 91久久精品视频| 国产精品久久国产精品99gif| 国产啪精品视频| 久久久久久久久久国产| 国产成人精品久久亚洲高清不卡| 神马国产精品影院av| 91在线视频精品| 国产精品尤物福利片在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 欧美一级免费视频| 国产美女扒开尿口久久久| 亚洲福利视频在线| 国产精品一区二区三| 在线观看国产精品日韩av| yw.139尤物在线精品视频| 国产精品第2页| 日产精品久久久一区二区福利| 欧美亚洲国产日本| 伊人男人综合视频网| 国产精品久久久久久久久久久久久久| 美女av一区二区三区| 亚洲精品电影在线| 国产精品极品美女粉嫩高清在线| 性欧美xxxx视频在线观看| 亚洲2020天天堂在线观看| 亚洲成人教育av| 欧美成人国产va精品日本一级| 国产精国产精品| 久久国产天堂福利天堂| 久久久久在线观看| 91伊人影院在线播放| 亚洲新声在线观看| 欧美老妇交乱视频| 久久久亚洲网站| 久久99久久99精品中文字幕| 黄色精品一区二区| 91社影院在线观看| 欧美视频不卡中文| 精品国偷自产在线视频| 日日骚久久av| 热久久美女精品天天吊色| 久久久女人电视剧免费播放下载| 亚洲国产精品久久久久| 国产日韩欧美中文在线播放| 亚洲美女福利视频网站| 欧美激情一级欧美精品| 午夜精品一区二区三区在线播放| 欧美一区二区三区四区在线| 69精品小视频| 欧美在线视频一区二区| 狠狠做深爱婷婷久久综合一区| 日韩激情片免费| 精品国产户外野外| 国产精品视频不卡| 亚洲老头同性xxxxx| 中文字幕一区日韩电影| 亚洲国产精品免费| 日韩理论片久久| 国产亚洲精品高潮| 日韩国产精品一区| 国产综合香蕉五月婷在线| 日韩av片永久免费网站| 91亚洲人电影| 欧美极品在线播放| 日韩av在线直播| 国产精品久久久久久久久久| 欧美激情第三页| 国产成人小视频在线观看| 欧美最顶级丰满的aⅴ艳星| 亚洲美女性视频| 国产不卡视频在线| 色综合91久久精品中文字幕| 亚洲va码欧洲m码| 国产91精品久久久久久| 亚洲免费电影在线观看| 国产日产欧美a一级在线| 国产成人+综合亚洲+天堂| 伊人久久大香线蕉av一区二区| 亚洲精品第一国产综合精品| 欧美日韩亚洲一区二| 国产精品jvid在线观看蜜臀| 日韩av在线一区| 久久久久中文字幕| 欧美巨大黑人极品精男| 亚洲国产精品成人精品| 成人久久18免费网站图片| 亚洲成人激情在线观看| 亚洲第一级黄色片| 欧美国产日产韩国视频| 久久精品国产亚洲精品| 亚洲美腿欧美激情另类| 538国产精品一区二区免费视频| 久久久亚洲国产天美传媒修理工| 免费不卡欧美自拍视频| 亚洲电影免费观看高清完整版在线观看| 97香蕉久久超级碰碰高清版| 国产一区二区三区直播精品电影| 欧美日本高清视频| 黄色精品一区二区| 国产视频精品免费播放| 国产精品久久久久久av福利| 国产在线观看一区二区三区| 久久69精品久久久久久国产越南| 在线中文字幕日韩| 中日韩美女免费视频网址在线观看| 亚洲国产精品人人爽夜夜爽| 国产精品第1页| 欧美日韩国产丝袜另类| 亚洲一级免费视频| 91免费欧美精品| 青青草国产精品一区二区| 久久久免费观看视频| 亚洲免费高清视频| 亚洲热线99精品视频| 国产精品91在线观看| 2019中文字幕在线免费观看| 精品magnet| 久久视频在线播放| 欧美日韩亚洲天堂| 久久精品国产69国产精品亚洲| 国产精品久久久久久一区二区| 97超视频免费观看| 成人精品福利视频| 国产精品极品尤物在线观看| 2018国产精品视频| 亚洲精品一区久久久久久| 欧美一级成年大片在线观看| 亚洲男人天堂古典| 日韩动漫免费观看电视剧高清| 欧美一区二区三区艳史| 成人444kkkk在线观看| 国产日韩在线精品av| 国产亚洲免费的视频看| 久久精品国产欧美激情| 久久久精品国产| 日韩av大片免费看| 亚洲一区二区中文| 久久国产精品久久精品| 久久免费在线观看| 成人网页在线免费观看| 欧美日韩中文字幕综合视频| 国产成人欧美在线观看| 亚洲色图25p| 国内成人精品一区| 国产精品天天狠天天看| 韩国国内大量揄拍精品视频| 国产激情视频一区| 日本精品视频在线播放| 国产精品7m视频| 国产99视频在线观看| 国产视频观看一区|