// 写入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); }