public override void Install(IDictionary stateSaver)
        {
            try
            {
                base.Install(stateSaver);

                string dir = this.Context.Parameters["dir"];
                Directory.SetCurrentDirectory(dir);
                string formType = this.Context.Parameters["formType"]; //类型1为计量站,2为验票站
                string systemName = this.Context.Parameters["systemName"]; //系统名称
                string customerName = this.Context.Parameters["customerName"];//打印报表时前面的名称
                string taxObject = this.Context.Parameters["tax"];//规费计算
                if (taxObject != "2")
                {
                    taxObject = "1";
                }
                string ip = this.Context.Parameters["ip"];//消息队列服务器IP
                RWini rw = new RWini();

                rw.inipath = dir + "\\Settings.ini";
                bool r = rw.ExistINIFile();
                rw.IniWriteValue("SysInfo", "FormType",formType);
                rw.IniWriteValue("SysInfo", "SystemName",systemName);
                rw.IniWriteValue("SysInfo", "CustomerName",customerName);

                //System.Diagnostics.Debugger.Launch();

                XmlDocument doc = new XmlDocument();
                doc.Load(dir + "\\CoalTraffic.exe.config");
                foreach (System.Xml.XmlNode node in doc["configuration"]["appSettings"])
                {
                    if (node.Name == "add")
                    {
                        if (node.Attributes.GetNamedItem("key").Value == "TaxObject")
                        {
                            node.Attributes.GetNamedItem("value").Value = taxObject;
                        }
                    }
                }
                foreach (System.Xml.XmlNode node in doc["configuration"]["system.serviceModel"]["client"])
                {
                    if (node.Name == "endpoint")
                    {
                        node.Attributes.GetNamedItem("address").Value = "net.msmq://" + ip + "/private/CTOSMessagingQueue";
                    }
                }
                doc.Save(dir + "\\CoalTraffic.exe.config");
            }
            catch(Exception ex)
            {
                Log.WriteLog(ex);
            }
        }
        private void FM_UserLogin_Load(object sender, EventArgs e)
        {
            string strIp;
            RWini ini = new RWini();
            string ip = ini.IniReadValue("Connection", "SServer");
            if (GetCmdPingResult(ip) == "1")
            {
                strIp = ini.IniReadValue("Connection", "isConnection");
                if (strIp == "1")
                {
                    ini.IniWriteValue("Connection", "isConnection", CommonMethod.ToDBC("0"));
                }
            }
            else
            {
                #region 是否开启断网过磅
                string isONNet = ini.IniReadValue("Connection", "isOnNetWorkDisconnection");
                if (isONNet != "0")
                {
                    MessageBox.Show("本系统未开启断网过磅功能,请联系中心机房管理员", "天大天科", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    Application.ExitThread();
                    Application.Exit();
                }
                #endregion

                strIp = ini.IniReadValue("Connection", "isConnection");
                if (strIp == "0")
                {
                    ini.IniWriteValue("Connection", "isConnection", CommonMethod.ToDBC("1"));
                    MessageBox.Show("由于网络原因本系统与服务器断开连接", "天大天科", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Application.ExitThread();
                    Application.Exit();
                }
            }
            //IC和ID卡相关信息。
            #region IC卡和ID卡相关信息
            StaticParameter.BaudRate = ini.IniReadValue("IcCard", "BoudRate");
            StaticParameter.DateBits = ini.IniReadValue("IcCard", "DataBits");
            StaticParameter.StopBits = ini.IniReadValue("IcCard", "StopBits");
            StaticParameter.Parity = ini.IniReadValue("IcCard", "Parity");
            StaticParameter.PortName = ini.IniReadValue("IcCard", "PortName");
            #endregion
            //磅房类型
            #region 磅房类型
            string strFormType = ini.IniReadValue("SysInfo", "FormType");
            if (strFormType == "1")
            {
                StaticParameter.FormType = strFormType;
            }
            else
            {
                StaticParameter.FormType = "2";
            }
            #endregion

            //磅房相关信息。
            #region 磅房相关信息
            StaticParameter.BangBaudRate = ini.IniReadValue("BcComSetting", "BoudRate");
            StaticParameter.BangDateBits = ini.IniReadValue("BcComSetting", "DataBits");
            StaticParameter.BangStopBits = ini.IniReadValue("BcComSetting", "StopBits");
            StaticParameter.BangParity = ini.IniReadValue("BcComSetting", "Parity");
            StaticParameter.BangPortName = ini.IniReadValue("BcComSetting", "PortName");
            #endregion

            //卡片类型
            #region 卡片类型
            if (ini.IniReadValue("RoomSetting", "CardType") == "ID")
            {
                StaticParameter.CardType = "ID";
            }
            else
            {
                StaticParameter.CardType = "IC";
            }
            #endregion

            #region 卡片长度
            int INavicertCardLength, IMarkedCardLength;
            if (int.TryParse(ini.IniReadValue("CardLength", "NavicertLength"), out INavicertCardLength))
            {
                StaticParameter.NavicertLength = INavicertCardLength;
            }
            else
            {
                StaticParameter.NavicertLength = 10;
            }
            if (int.TryParse(ini.IniReadValue("CardLength", "MarkedCardLength"), out IMarkedCardLength))
            {
                StaticParameter.MarkedCardLength = IMarkedCardLength;
            }
            else
            {
                StaticParameter.MarkedCardLength = 10;
            }
            #endregion

            //是否有视频
            #region 是否有视频
            if (ini.IniReadValue("VideoSetting", "IsVideo") == "1")
            {
                StaticParameter.IsVideo = "1";
            }
            else
            {
                StaticParameter.IsVideo = "0";
            }
            #endregion

            //是否有车牌识别器
            #region 是否有车牌识别器
            if (ini.IniReadValue("CarNoSetting", "IsCarNo") == "1")
            {
                StaticParameter.IsCarNo = "1";
            }
            else
            {
                StaticParameter.IsCarNo = "0";
            }
            #endregion

            //是否有标识卡
            #region 是否有标识卡
            if (ini.IniReadValue("RoomSetting", "IsHaveMarkedCard") == "1")
            {
                StaticParameter.IsHaveMarkedCard = "1";
            }
            else
            {
                StaticParameter.IsHaveMarkedCard = "0";
            }
            #endregion

            //是否有电子标签
            #region 是否有电子标签
            if (ini.IniReadValue("RoomSetting", "RemoteReader") == "1")
            {
                StaticParameter.IsRemoteReader = "1";
            }
            else
            {
                StaticParameter.IsRemoteReader = "0";
            }
            #endregion

            //超重吨位阈值
            #region 超重阀值
            decimal dWeightThreshold;
            if (decimal.TryParse(ini.IniReadValue("RoomSetting", "WeightThreshold"), out dWeightThreshold))
            {
                StaticParameter.WeightThreshold = dWeightThreshold;
            }
            else
            {
                StaticParameter.WeightThreshold = 0.00m;
            }
            #endregion

            //是否需要多次空车过磅
            #region 是否需要多次空车过磅
            if (ini.IniReadValue("RoomSetting", "IsEmpty") == "1")
            {
                StaticParameter.IsEmpty = "1";
            }
            else
            {
                StaticParameter.IsEmpty = "0";
            }
            #endregion

            //图片是否只上传到服务器
            #region 图片是否只上传服务器
            if (ini.IniReadValue("SysInfo", "IsSendPicToRoom") == "0")
            {
                StaticParameter.IsSendPicToRoom = "0";
            }
            else
            {
                StaticParameter.IsSendPicToRoom = "1";
            }

            #endregion

            #region 视频放大倍数
            int iAmplify;
            if (int.TryParse(CommonMethod.ToDBC(ini.IniReadValue("VideoSetting", "Amplify")), out iAmplify))
            {
                if (iAmplify > 5)
                {
                    StaticParameter.Amplify = "5";
                }
                else
                {
                    StaticParameter.Amplify = ini.IniReadValue("VideoSetting", "Amplify");
                }
            }
            else
            {
                StaticParameter.Amplify = "3";
            }
            #endregion

            #region 报表文件夹
            if (ini.IniReadValue("SysInfo", "ReportFile") != "")
            {
                StaticParameter.ReportFile = ini.IniReadValue("SysInfo", "ReportFile") + ".";
            }
            #endregion

            #region 皮肤
            string strSkin = ini.IniReadValue("SysInfo", "Skin");
            string strPath = Directory.GetCurrentDirectory();
            StaticParameter.Skin = strPath + "\\Skin\\" + strSkin + "\\";
            #endregion

            #region 加载窗体背景
            string strbg = string.Empty;
            string strLoadBg = string.Empty;
            if (strFormType == "1")
            {
                strbg = "rlg.jpg";
                strLoadBg = "rbg.jpg";
            }
            else
            {
                strbg = "clg.jpg";
                strLoadBg = "cbg.jpg";
            }

            this.BackgroundImage = Image.FromFile(StaticParameter.Skin + strbg);
            this.BackgroundImageLayout = ImageLayout.Stretch;

            panLoad.BackgroundImage = Image.FromFile(StaticParameter.Skin + strLoadBg);
            panLoad.BackgroundImageLayout = ImageLayout.Stretch;
            #endregion

            BgWorker.RunWorkerAsync();
        }
        private void btnLogin_Click(object sender, EventArgs e)
        {
            RWini ini = new RWini();
            string ip = ini.IniReadValue("Connection", "SServer");
            string strIp;

            #region 网络判断处理
            if (GetCmdPingResult(ip) == "1")
            {
                strIp = ini.IniReadValue("Connection", "isConnection");
                if (strIp != "0")
                {
                    ini.IniWriteValue("Connection", "isConnection", CommonMethod.ToDBC("0"));
                }
            }
            else
            {
                strIp = ini.IniReadValue("Connection", "isConnection");
                if (strIp == "0")
                {
                    ini.IniWriteValue("Connection", "isConnection", CommonMethod.ToDBC("1"));
                    MessageBox.Show("由于网络原因本系统与中心机房断开连接,请联系中心机房管理员!");
                    Application.ExitThread();
                    Application.Exit();
                }
            }
            #endregion

            if (cbxUserName.SelectedValue != null && txbPassWord.Text.Trim() != "")
            {
                string strUserCode = cbxUserName.SelectedValue.ToString();
                string password = CommonMethod.MD5Crypt(txbPassWord.Text.Trim());

                if (operbll.IsLoginInfo(strUserCode, password) > 0)//验证帐号密码
                {

                    #region 插入登录日志到数据库
                    StaticParameter.UserCode = strUserCode;
                    StaticParameter.UserName = cbxUserName.Text;
                    string strLogType = "登录";
                    string strUserTable = "Sys_Operator";
                    string strUserIP = System.Net.Dns.Resolve(System.Net.Dns.GetHostName()).AddressList[0].ToString();
                    strUserCode = this.cbxUserName.SelectedValue.ToString();
                    string strUserDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    string strRemark = "登录CS调运系统";
                    string strSysCode = "s2000";
                    string strRelationID = strUserCode;
                    StringBuilder sbsql = new StringBuilder();
                    sbsql.Append("insert into Sys_OperateLog (LogType,OperateTable,Operator,OperateDate,OperateIP,Remark,SysCode,RelationID)");
                    sbsql.Append(" values('" + strLogType + "','" + strUserTable + "','" + StaticParameter.UserName + "','" + strUserDate + "','" + strUserIP + "','" + strRemark + "','" + strSysCode + "','" + strRelationID + "')");
                    DbHelperSQL.ExecuteSql(sbsql.ToString());

                    #region 当联网的时:插入同步sql语句到服务器,sql语句本地执行
                    if (strIp == "0")//当联网的时候将给本地数据库也插入数据
                   {
                      string sqlInsert = "insert [NetWorkDisconnectionLog] (ID, SQLcontext, datetime, IP) values (@ID,@SQLcontext,@datetime,@IP)";
                       SqlParameter[] sqlpars = new SqlParameter[]
                        {
                            new SqlParameter("@ID",DateTime.Now.ToString("yyyyMMddHHmmss")),
                            new SqlParameter("@SQLcontext",sbsql.ToString()),
                            new SqlParameter("@datetime",DateTime.Now.ToString()),
                            new SqlParameter("@IP",ini.IniReadValue("Connection","LServer"))
                        };
                       DbHelperSQL.ExecuteSql(sqlInsert,sqlpars); //插入同步sql语句
                       DbHelperSQL.ExecuteSql2(sbsql.ToString(), "1");//sql语句本地执行
                   }
                   #endregion
                    #endregion

                    #region 当断网时,添加断网过磅的登录日志sql语句
                    if (strIp == "1")
                    {
                        string id = DateTime.Now.ToString("yyyyMMddHHmmss");
                        StringBuilder sbsqlcontext = new StringBuilder();
                        sbsqlcontext.Append("insert into NetWorkDisconnection (ID, SQLcontext, DateTime) values(@id,@sqlcontext,@datetime)");
                        SqlParameter[] parameters = new SqlParameter[] {
                         new SqlParameter("@id",id),
                         new SqlParameter("@sqlcontext",sbsql.ToString()),
                         new SqlParameter("@datetime",DateTime.Now)
                         };
                        DbHelperSQL.ExecuteSql(sbsqlcontext.ToString(), parameters);
                    }
                    #endregion

                    if (_isFirst == "0")
                    {
                        this.Hide();

                        #region 登录成功之后选择系统
                        if (StaticParameter.UserCode != "0")
                        {
                            #region 非超级管理员登录

                            if (StaticParameter.FormType == "1")
                            {
                                new RMainForm(strUserCode).ShowDialog();
                            }
                            else
                            {
                                new CMainForm(strUserCode).ShowDialog();
                            }
                            #endregion
                        }
                        else
                        {
                            #region 超级管理员登录
                            if (StaticParameter.FormType == "2")
                            {
                                new CMainForm(strUserCode).ShowDialog();
                            }

                            if (StaticParameter.FormType == "1")
                            {
                                new RMainForm(strUserCode).ShowDialog();
                            }
                            #endregion
                        }
                        #endregion
                    }
                    else
                    {
                        this.DialogResult = DialogResult.OK;
                        this.Close();
                    }
                }
                else
                {
                    MessageBox.Show("登录验证失败,请检查用户名或密码是否正确!", "天大天科调运系统", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    txbPassWord.Text = "";
                    return;
                }
            }
            else
            {
                MessageBox.Show("请检查用户名和密码后重新输入!", "天大天科调运系统", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        }
        /// <summary>
        /// ping 网络
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void PingIP(object sender, EventArgs e)
        {
            RWini ini = new RWini();
            string ip = ini.IniReadValue("Connection", "SServer");
            if (GetCmdPingResult(ip) == "1")
            {

                timer.Interval = 60000;
                string strIp = ini.IniReadValue("Connection", "isConnection");
                if (strIp != "0")
                {
                    ini.IniWriteValue("Connection", "isConnection", CommonMethod.ToDBC("0"));
                    //从新添加
                    MessageBox.Show("本系统与服务器已连接,点击确定后,请从新登录!");
                    Application.ExitThread();
                    Application.Exit();
                }
            }
            else
            {
                timer.Interval = 20000;
                string strIp = ini.IniReadValue("Connection", "isConnection");
                if (strIp == "0")
                {
                    ini.IniWriteValue("Connection", "isConnection", CommonMethod.ToDBC("1"));
                    MessageBox.Show("本系统与服务器断开连接,不能过磅,请联系中心机房!");
                    Application.ExitThread();
                    Application.Exit();

                }
            }
        }
        private void btnLogin_Click(object sender, EventArgs e)
        {
            RWini ini = new RWini();
            string ip = ini.IniReadValue("Connection", "SServer");
            string strIp;
            if (GetCmdPingResult(ip) == "1")
            {
                strIp = ini.IniReadValue("Connection", "isConnection");
                if (strIp != "0")
                {
                    ini.IniWriteValue("Connection", "isConnection", CommonMethod.ToDBC("0"));
                }
            }
            else
            {
                strIp = ini.IniReadValue("Connection", "isConnection");
                if (strIp == "0")
                {
                    //ini.IniWriteValue("Connection", "isConnection", CommonMethod.ToDBC("1"));
                    //MessageBox.Show("系统与服务器断开连接,请重新登陆系统!");
                    MessageBox.Show("系统与服务器断开连接,请联系中心机房!");
                    Application.ExitThread();
                    Application.Exit();
                }
            }
            MC = new MSMQClient();
            if (cbxUserName.SelectedValue != null && txbPassWord.Text.Trim() != "")
            {
                string strUserCode = cbxUserName.SelectedValue.ToString();
                string password = CommonMethod.MD5Crypt(txbPassWord.Text.Trim());

                if (operbll.IsLoginInfo(strUserCode, password) > 0)
                {

                    StaticParameter.UserCode = strUserCode;
                    StaticParameter.UserName = cbxUserName.Text;
                    string strLogType = "登录";
                    string strUserTable = "Sys_Operator";
                    string strUserIP = System.Net.Dns.Resolve(System.Net.Dns.GetHostName()).AddressList[0].ToString();
                    strUserCode = this.cbxUserName.SelectedValue.ToString();
                    string strUserDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    string strRemark = "登录CS调运系统";
                    string strSysCode = "s2000";
                    string strRelationID = strUserCode;
                    StringBuilder sbsql = new StringBuilder();
                    sbsql.Append("insert into Sys_OperateLog (LogType,OperateTable,Operator,OperateDate,OperateIP,Remark,SysCode,RelationID)");
                    sbsql.Append(" values('" + strLogType + "','" + strUserTable + "','" + StaticParameter.UserName + "','" + strUserDate + "','" + strUserIP + "','" + strRemark + "','" + strSysCode + "','" + strRelationID + "')");
                    DbHelperSQL.ExecuteSql(sbsql.ToString());
                    //登陆日志上传到服务器
                    if (strIp == "0")
                    {
                        //MsmqManageServer mqServer = new MsmqManageServer();
                        MSMQserver mqServer = new MSMQserver();
                        mqServer.AddMsmq(MC.ServerStation + MC.Prefix + "Sys_OperateLog" + MC.Prefix + MC.AddFlg + MC.Prefix + DateTime.Now.ToString("yyyy-MM-dd hh:mm;ss") + MC.Prefix + sbsql.ToString());
                    }
                    else
                    {
                        MC.AddNewSqlText(MC.ServerStation + MC.Prefix + "Sys_OperateLog" + MC.Prefix + MC.AddFlg + MC.Prefix + DateTime.Now.ToString("yyyy-MM-dd hh:mm;ss") + MC.Prefix + sbsql.ToString());
                    }
                    if (_isFirst == "0")
                    {
                        this.Hide();

                        #region 登录成功之后选择系统
                        if (StaticParameter.UserCode != "0")
                        {
                            #region 非超级管理员登录

                            if (StaticParameter.FormType == "1")
                            {
                                new RMainForm(strUserCode).ShowDialog();
                            }
                            else
                            {
                                new CMainForm(strUserCode).ShowDialog();
                            }
                            #endregion
                        }
                        else
                        {
                            #region 超级管理员登录
                            if (StaticParameter.FormType == "2")
                            {
                                new CMainForm(strUserCode).ShowDialog();
                            }

                            if (StaticParameter.FormType == "1")
                            {
                                new RMainForm(strUserCode).ShowDialog();
                            }
                            #endregion
                        }
                        #endregion
                    }
                    else
                    {
                        this.DialogResult = DialogResult.OK;
                        this.Close();
                    }
                }
                else
                {
                    MessageBox.Show("登录验证失败,请检查用户名和密码后重新输入!", "天大天科调运系统", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    txbPassWord.Text = "";
                }
            }
            else
            {
                MessageBox.Show("请检查用户名和密码后重新输入!", "天大天科调运系统", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }