zoukankan      html  css  js  c++  java
  • ERP环境检测工具设计与实现 Environment Detection

    环境检测的功能在安装程序中应用的很普遍,ERP程序中也需要在系统第一次启动时,对所安装的环境进行检测,遇到不满足的情况要及时提示用户更新系统。

    image

    网格中显示要检测的编号,内容描述,最后一列是检测结果,工具栏Export可以将检测结果导出为EXCEL文件。

    先来看检测规则的设定,仍然是发挥XML文件的功效,设定放到Xml文件中

    image

    当需要检测新的项目时,一般只需要更改此文件内容,增加检测方法。

    Method方法定义于程序中的一个静态方法,运行时反射调用此方法进行判断。

      public bool CheckIfDotNetFrameworkInstalled()
            {
                return BaseCommon.CheckIfDotNetFrameworkInstalled(DotNetFrameworkVersion.Version20);
            }
            
            /*  Could have a look in the registry for things like:  
            HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\ Excel\InstallRoot and then check in that path for excel.exe.
             */
    
            public bool CheckExcelInstalled()
            {
                Type officeType = Type.GetTypeFromProgID("Excel.Application");
                return officeType != null;
            }
    
            /*  Detecting if an Oracle Database is Installed
            Check for the existence of an ORACLE_HOME. It's also reasonable to expect that this environment 
            should be configured for the installation, so testing the environment variables and exiting with a 
                sensible diagnostic (possibly suggesting they run oraenv) is a good first start. 
            If you have an ORACLE_HOME, ORACLE_SID or other appropriate environment variable set up, 
                you can then check for the existence of an oracle home and test for database connectivity and permissions.
            */
            public bool CheckOracleInstalled()
            {
                string ORACLE_HOME = Environment.GetEnvironmentVariable("ORACLE_HOME");
                string ORACLE_SID = Environment.GetEnvironmentVariable("ORACLE_SID");
                return !string.IsNullOrWhiteSpace(ORACLE_HOME) && !string.IsNullOrWhiteSpace(ORACLE_SID);
            }
    
            public bool CheckJavaInstalled()
            {
                string JAVA_HOME = Environment.GetEnvironmentVariable("JAVA_HOME");
                return !string.IsNullOrWhiteSpace(JAVA_HOME);
            }
    
            public bool CheckForMySQLServer()
            {
                string query = "SELECT Name FROM Win32_Product WHERE Name LIKE '%MySQL Server%'";
                var searcher = new ManagementObjectSearcher(query);
                var collection = searcher.Get();
                return collection.Count > 0;
            }
     

    这几个功能方法是我从StackOverflow中找到的,在Windows 7 x86的机器上,结果值与实际值没有偏差。

    再来分析一下,在具体的环境中,为了运行一个ERP程序有哪些内容需要我们去检测。

    1  基本的.NET  Framework 需要检测。现在项目基本上都升级到Target=.NET 4.0,版本4.0也要检测。.NET 4.5因为不支持XP系统,短时间还没有打算编译为.NET 4.5版本。

    .NET 4.0 不允许运行于Windows 2000系统中,但可运行于XP中,XP至今仍然非常的流行,断绝了XP的支持,等于把一大批客户抛到脑后,这是不可接受的。

    2  SQL Server 是否安装。应当要检测SQL Server是否已经安装,而不是在系统连接数据库时,提示无法连接到服务器。而对于数据库,SQL Server是否允许远程访问这一项,至今没有找到方法可以去检测。如果SQL Server 安装在本机,可以考虑自动启动它的,允许远程访问。

    image

    当然也不能做的太霸道了,蓝软ERP,每次以集成认证方式登陆系统后,会修改sa的密码,让我的其它ERP产品无法连接到数据库中。记得学数据库的时候,推荐安装好SQL Server后把SA帐户禁用,但我看到有些ERP产品,却以SA作为连接帐户,理论与实践确实有些差异。

    3  Dot Net时代,COM/COM+已经不是很重要的技术。以.NET Framework内建的事务机制可满足事务需求。

    操作系统的安全补丁,因很少用到和发现问题,没有去检测。

    4  Excel/Word/PowerPoint项目的检测是为产生导出文件。ERP项目中,绝大部分单据都可以导出到EXCEL进行编辑,查看。部分单据,比如员工信息,员工简历要导出成WORD格式,以便于打印装订。

    PPT格式的导出很少遇到。最近遇到一个需求,要求可以把物料清单导出为Visio格式的图形格式,以图形的方式直观的显示当前物料清单它的下一层物料列出。这个功能需求很实用,目前还没有找到办法去实现。

  • 相关阅读:
    json&pickle模块
    Linux BASH 常用命令
    Vmware安装Kali2020
    CentOS7部署Prometheus
    CentOS7部署FreeRadius3.0及WEB管理界面DaloRadius
    Cisco VRRP、TRACK、SLA配置
    Cisco L2TP OVER IPSEC
    Cisco PPTP Server Configration
    华为S5700交换机初始化和配置TELNET远程登录
    华为S5720常用命令
  • 原文地址:https://www.cnblogs.com/JamesLi2015/p/3067058.html
Copyright © 2011-2022 走看看