示例#1
0
        // 从 dp2003.com 安装全部方案
        void InstallStatisProjects()
        {
            string strError      = "";
            int    nRet          = -1;
            int    nInstallCount = 0;

            bool bDebugger = false;

            if (Control.ModifierKeys == Keys.Control)
            {
                bDebugger = true;
            }

            // 下载projects.xml文件
            string strLocalFileName = PathUtil.MergePath(this.DataDir, "~temp_projects.xml");
            string strTempFileName  = PathUtil.MergePath(this.DataDir, "~temp_download_projects.xml");

            try
            {
                File.Delete(strLocalFileName);
            }
            catch
            {
            }
            try
            {
                File.Delete(strTempFileName);
            }
            catch
            {
            }

            nRet = WebFileDownloadDialog.DownloadWebFile(
                this,
                "http://dp2003.com/dp2circulation/projects/projects.xml",
                strLocalFileName,
                strTempFileName,
                out strError);
            if (nRet == -1)
            {
                goto ERROR1;
            }

            // 列出已经安装的方案的URL
            List <string> installed_urls     = new List <string>();
            List <Form>   newly_opened_forms = new List <Form>();
            List <Form>   forms = new List <Form>();

            List <Type> types = new List <Type>();

            types.Add(typeof(Iso2709StatisForm));
            types.Add(typeof(OperLogStatisForm));
            types.Add(typeof(ReaderStatisForm));
            types.Add(typeof(ItemStatisForm));
            types.Add(typeof(OrderStatisForm));
            types.Add(typeof(BiblioStatisForm));
            types.Add(typeof(XmlStatisForm));
            types.Add(typeof(PrintOrderForm));

            foreach (Type type in types)
            {
                // bool bNewOpened = false;
                var form = GetTopChildWindow(type);
                if (form == null)
                {
                    form             = (Form)Activator.CreateInstance(type);
                    form.MdiParent   = this;
                    form.WindowState = FormWindowState.Minimized;
                    form.Show();
                    newly_opened_forms.Add(form);
                    Application.DoEvents();
                }

                forms.Add(form);

                dynamic       o    = form;
                List <string> urls = new List <string>();
                nRet = o.ScriptManager.GetInstalledUrls(out urls,
                                                        out strError);
                if (nRet == -1)
                {
                    goto ERROR1;
                }

                installed_urls.AddRange(urls);
            }

            // 凭条打印
            {
                List <string> urls = new List <string>();
                nRet = this.OperHistory.ScriptManager.GetInstalledUrls(out urls,
                                                                       out strError);
                if (nRet == -1)
                {
                    goto ERROR1;
                }

                installed_urls.AddRange(urls);
            }

            // 框架窗口
            {
                List <string> urls = new List <string>();
                nRet = this.ScriptManager.GetInstalledUrls(out urls,
                                                           out strError);
                if (nRet == -1)
                {
                    goto ERROR1;
                }

                installed_urls.AddRange(urls);
            }

            try
            {
                SelectInstallProjectsDialog dlg = new SelectInstallProjectsDialog();
                MainForm.SetControlFont(dlg, this.DefaultFont);
                dlg.XmlFilename   = strLocalFileName;
                dlg.InstalledUrls = installed_urls;
                if (bDebugger == true)
                {
                    dlg.Category = "debugger";
                }
                dlg.StartPosition = FormStartPosition.CenterScreen;

                this.AppInfo.LinkFormState(dlg,
                                           "SelectInstallProjectsDialog_state");
                dlg.ShowDialog(this);
                this.AppInfo.UnlinkFormState(dlg);
                if (dlg.DialogResult == System.Windows.Forms.DialogResult.Cancel)
                {
                    return;
                }

                // 分宿主进行安装
                foreach (Form form in forms)
                {
                    // 为一个统计窗安装若干方案
                    // parameters:
                    //      projects    待安装的方案。注意有可能包含不适合安装到本窗口的方案
                    // return:
                    //      -1  出错
                    //      >=0 安装的方案数
                    nRet = InstallProjects(
                        form,
                        GetWindowName(form),
                        dlg.SelectedProjects,
                        "!url",
                        out strError);
                    if (nRet == -1)
                    {
                        goto ERROR1;
                    }
                    nInstallCount += nRet;
                }

                // 凭条打印
                {
                    nRet = InstallProjects(
                        this.OperHistory,
                        "凭条打印",
                        dlg.SelectedProjects,
                        "!url",
                        out strError);
                    if (nRet == -1)
                    {
                        goto ERROR1;
                    }
                    nInstallCount += nRet;
                }

                // MainForm
                {
                    nRet = InstallProjects(
                        this,
                        "框架窗口",
                        dlg.SelectedProjects,
                        "!url",
                        out strError);
                    if (nRet == -1)
                    {
                        goto ERROR1;
                    }
                    nInstallCount += nRet;
                }
            }
            finally
            {
                // 关闭本次新打开的窗口
                foreach (Form form in newly_opened_forms)
                {
                    form.Close();
                }
            }

            MessageBox.Show(this, "共安装方案 " + nInstallCount.ToString() + " 个");
            return;

ERROR1:
            MessageBox.Show(this, strError);
        }
示例#2
0
 // 获得统计窗的汉字类型名
 static string GetWindowName(object form)
 {
     return(SelectInstallProjectsDialog.GetHanziHostName(GetTypeName(form)));
 }
示例#3
0
        // 从磁盘安装全部方案
        void InstallStatisProjectsFromDisk()
        {
            string strError      = "";
            int    nRet          = -1;
            int    nInstallCount = 0;

            bool bDebugger = false;

            if (Control.ModifierKeys == Keys.Control)
            {
                bDebugger = true;
            }

            FolderBrowserDialog dir_dlg = new FolderBrowserDialog();

            dir_dlg.Description         = "请指定方案所在目录:";
            dir_dlg.RootFolder          = Environment.SpecialFolder.MyComputer;
            dir_dlg.ShowNewFolderButton = false;
            // dir_dlg.SelectedPath = this.textBox_outputFolder.Text;

            if (dir_dlg.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            // this.textBox_outputFolder.Text = dir_dlg.SelectedPath;


            // 寻找 projects.xml 文件
            string strLocalFileName = PathUtil.MergePath(dir_dlg.SelectedPath, "projects.xml");

            if (File.Exists(strLocalFileName) == false)
            {
                // strError = "您所指定的目录 '" + dir_dlg.SelectedPath + "' 中并没有包含 projects.xml 文件,无法进行安装";
                // goto ERROR1;

                // 如果没有 projects.xml 文件,则搜索全部 *.projpack 文件,并创建好一个临时的 ~projects.xml文件
                strLocalFileName = PathUtil.MergePath(this.DataDir, "~projects.xml");
                nRet             = ScriptManager.BuildProjectsFile(dir_dlg.SelectedPath,
                                                                   strLocalFileName,
                                                                   out strError);
                if (nRet == -1)
                {
                    goto ERROR1;
                }
            }

            // 列出已经安装的方案的URL
            List <string> installed_urls     = new List <string>();
            List <Form>   newly_opened_forms = new List <Form>();
            List <Form>   forms = new List <Form>();

            List <Type> types = new List <Type>();

            types.Add(typeof(Iso2709StatisForm));
            types.Add(typeof(OperLogStatisForm));
            types.Add(typeof(ReaderStatisForm));
            types.Add(typeof(ItemStatisForm));
            types.Add(typeof(OrderStatisForm));
            types.Add(typeof(BiblioStatisForm));
            types.Add(typeof(XmlStatisForm));
            types.Add(typeof(PrintOrderForm));

            foreach (Type type in types)
            {
                // bool bNewOpened = false;
                var form = GetTopChildWindow(type);
                if (form == null)
                {
                    form             = (Form)Activator.CreateInstance(type);
                    form.MdiParent   = this;
                    form.WindowState = FormWindowState.Minimized;
                    form.Show();
                    newly_opened_forms.Add(form);
                    Application.DoEvents();
                }

                forms.Add(form);

                dynamic       o    = form;
                List <string> urls = new List <string>();
                nRet = o.ScriptManager.GetInstalledUrls(out urls,
                                                        out strError);
                if (nRet == -1)
                {
                    goto ERROR1;
                }

                installed_urls.AddRange(urls);
            }

            // 凭条打印
            {
                List <string> urls = new List <string>();
                nRet = this.OperHistory.ScriptManager.GetInstalledUrls(out urls,
                                                                       out strError);
                if (nRet == -1)
                {
                    goto ERROR1;
                }

                installed_urls.AddRange(urls);
            }

            // 框架窗口
            {
                List <string> urls = new List <string>();
                nRet = this.ScriptManager.GetInstalledUrls(out urls,
                                                           out strError);
                if (nRet == -1)
                {
                    goto ERROR1;
                }

                installed_urls.AddRange(urls);
            }

            try
            {
                SelectInstallProjectsDialog dlg = new SelectInstallProjectsDialog();
                MainForm.SetControlFont(dlg, this.DefaultFont);
                dlg.XmlFilename   = strLocalFileName;
                dlg.InstalledUrls = installed_urls;
                if (bDebugger == true)
                {
                    dlg.Category = "debugger";
                }
                dlg.StartPosition = FormStartPosition.CenterScreen;

                this.AppInfo.LinkFormState(dlg,
                                           "SelectInstallProjectsDialog_state");
                dlg.ShowDialog(this);
                this.AppInfo.UnlinkFormState(dlg);
                if (dlg.DialogResult == System.Windows.Forms.DialogResult.Cancel)
                {
                    return;
                }

                // 分宿主进行安装
                foreach (Form form in forms)
                {
                    // 为一个统计窗安装若干方案
                    // parameters:
                    //      projects    待安装的方案。注意有可能包含不适合安装到本窗口的方案
                    // return:
                    //      -1  出错
                    //      >=0 安装的方案数
                    nRet = InstallProjects(
                        form,
                        GetWindowName(form),
                        dlg.SelectedProjects,
                        dir_dlg.SelectedPath,
                        out strError);
                    if (nRet == -1)
                    {
                        goto ERROR1;
                    }
                    nInstallCount += nRet;
                }

                // 凭条打印
                {
                    nRet = InstallProjects(
                        this.OperHistory,
                        "凭条打印",
                        dlg.SelectedProjects,
                        dir_dlg.SelectedPath,
                        out strError);
                    if (nRet == -1)
                    {
                        goto ERROR1;
                    }
                    nInstallCount += nRet;
                }

                // MainForm
                {
                    nRet = InstallProjects(
                        this,
                        "框架窗口",
                        dlg.SelectedProjects,
                        dir_dlg.SelectedPath,
                        out strError);
                    if (nRet == -1)
                    {
                        goto ERROR1;
                    }
                    nInstallCount += nRet;
                }
            }
            finally
            {
                // 关闭本次新打开的窗口
                foreach (Form form in newly_opened_forms)
                {
                    form.Close();
                }
            }

            MessageBox.Show(this, "共安装方案 " + nInstallCount.ToString() + " 个");
            return;

ERROR1:
            MessageBox.Show(this, strError);
        }