Esempio n. 1
0
        // 写入XML文件
        // return:
        //      -1  error, install faild
        //      0   succeed
        //      1   suceed, but some config ignored
        int WriteXmlFile(out string strError)
        {
            strError = "";

            // Debug.Assert(false, "");

            string strDirectory = Environment.SystemDirectory;

            strDirectory = PathUtil.MergePath(strDirectory, "dp2zserver");


            string strXmlFileName       = PathUtil.MergePath(strDirectory, "dp2zserver.xml");
            string strOriginXmlFileName = PathUtil.MergePath(strDirectory, "~dp2zserver.xml");

            bool bExist = true;

            string strTemp = "";

            XmlDocument dom = new XmlDocument();

            if (File.Exists(strXmlFileName) == true)
            {
                strTemp = strXmlFileName;
                try
                {
                    dom.Load(strXmlFileName);
                }
                catch (FileNotFoundException)
                {
                    dom.LoadXml("<root><libraryserver /></root>");
                    bExist = false;
                }
                catch (Exception ex)
                {
                    strError = "XML文件 " + strXmlFileName + " 装载到XMLDOM时发生错误: " + ex.Message + "。安装的最后配置无法完成。";
                    return(-1);
                }
            }
            else
            {
                strTemp = strOriginXmlFileName;

                bExist = false;

                try
                {
                    dom.Load(strOriginXmlFileName);
                }
                catch (FileNotFoundException)
                {
                    dom.LoadXml("<root><libraryserver /></root>");
                }
                catch (Exception ex)
                {
                    strError = "XML文件 " + strOriginXmlFileName + " 装载到XMLDOM时发生错误: " + ex.Message + "。安装的最后配置无法完成。";
                    return(-1);
                }
            }


            XmlNode node = dom.DocumentElement.SelectSingleNode("libraryserver");

            // 万一已经存在的文件是不正确的?
            if (node == null)
            {
                strError = "安装前已经存在的文件 " + strTemp + " 格式不正确。";
                return(-1);

                /*
                 * dom.LoadXml("<root><libraryserver /></root>");
                 * bExist = false;
                 * XmlNode node = dom.DocumentElement.SelectSingleNode("libraryserver");
                 * */
            }

            Debug.Assert(node != null, "");

            string strUserName = DomUtil.GetAttr(node, "username");
            string strPassword = DomUtil.GetAttr(node, "password");

            strPassword = DecryptPasssword(strPassword);

            string strAnonymousUserName = DomUtil.GetAttr(node, "anonymousUserName");
            string strAnonymousPassword = DomUtil.GetAttr(node, "anonymousPassword");

            strAnonymousPassword = DecryptPasssword(strAnonymousPassword);

            string strUrl = DomUtil.GetAttr(node, "url");

            InstallParamDlg dlg = new InstallParamDlg();

            InstallHelper.AutoSetDefaultFont(dlg);
            dlg.UserName          = strUserName;
            dlg.Password          = strPassword;
            dlg.AnonymousUserName = strAnonymousUserName;
            dlg.AnonymousPassword = strAnonymousPassword;

            if (String.IsNullOrEmpty(strUrl) == false)
            {
                dlg.LibraryWsUrl = strUrl;
            }

            dlg.ShowDialog(ForegroundWindow.Instance);

            if (dlg.DialogResult == DialogResult.Cancel)
            {
                if (bExist == true)
                {
                    return(1);
                }

                strError = "您放弃了指定 dp2library 管理帐户 和 匿名登录帐户。安装完成后您需要手动设置 " + strXmlFileName + " 配置文件,否则系统可能无法正常运行";
                return(-1);
            }

            DomUtil.SetAttr(node, "url", dlg.LibraryWsUrl);

            DomUtil.SetAttr(node, "username", dlg.UserName);
            DomUtil.SetAttr(node, "password", EncryptPassword(dlg.Password));

            DomUtil.SetAttr(node, "anonymousUserName",
                            String.IsNullOrEmpty(dlg.AnonymousUserName) == true ? null : dlg.AnonymousUserName);

            if (String.IsNullOrEmpty(dlg.AnonymousUserName) == true)
            {
                DomUtil.SetAttr(node, "anonymousPassword", null);
            }
            else
            {
                DomUtil.SetAttr(node, "anonymousPassword", EncryptPassword(dlg.AnonymousPassword));
            }

            try
            {
                dom.Save(strXmlFileName);
            }
            catch (Exception ex)
            {
                strError = "XML文件 " + strXmlFileName + " 保存时发生错误: " + ex.Message + "。安装的最后配置无法完成。";
                return(-1);
            }

            return(0);
        }