• C# 制作Java +Mysql+Tomcat 环境安装程序,一键式安装 (续集Tomcat 配置)


    首先我们来了解下,Tomcat 解压版配置需要做哪些事情:

    • 系统要配置好JDK环境变量,Tomcat要能识别到
    • CATALINA_HOME与CATALINA_BASE (就是Tomcat目录添加到环境变量)
    • Tomcat服务的安装 安装方法是命令行切换到Tomcat 的bin目录下,win7 下可按下Shift键 右键鼠标打开命令行,然后输入

    service.bat  install  默认的安装方式,注意.bat文件必须要将命令行目录切换到bat文件目录下,否则会不成功

    JDK环境变量添加,与注册表操作类SysEnvironment 类前面已经添加了,这里就不重复了(请看C# 制作Java +Mysql+Tomcat 环境安装程序,一键式安装

    注意前面的MyInstallerClassDll安装类 的OnAfterInstall方法已经将Tomcat添加到环境变量(前面也添加了,这里将代码全部列出)

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Configuration.Install;
    using System.Windows.Forms;
    using System.IO;
    using System.Text;
    using System.Diagnostics;
    
    
    namespace CustomAction
    {
        [RunInstaller(true)]
        public partial class MyInstallerClassDll : Installer
        {
    
            public MyInstallerClassDll()
            {
                InitializeComponent();
            }
            protected override void OnBeforeInstall(IDictionary savedState)
            {
    
    
                string server = this.Context.Parameters["server"];
                string user = this.Context.Parameters["user"];
                base.OnBeforeInstall(savedState);
            }
            public override void Install(IDictionary stateSaver)
            {
                string installPath = this.Context.Parameters["targetdir"];
                string server = this.Context.Parameters["server"];
                string user = this.Context.Parameters["user"];
                //Mysql的配置文件
                IniFile ini = new IniFile(installPath + @"MySQL\MySQL Server 5.5\my.ini");
                //mysql安装路径
                ini.Write("mysqld", "basedir", installPath + @"MySQL\MySQL Server 5.5\");
                //Mysql数据文件夹
                ini.Write("mysqld", "datadir", installPath + @"MySQL\MySQL Server 5.5\Data\");
    
                base.Install(stateSaver);
            }
    
            protected override void OnAfterInstall(IDictionary savedState)
            {
                string installPath = this.Context.Parameters["targetdir"];
                string mysqlpath = installPath + @"MySQL\MySQL Server 5.5\bin";
                string jrePath = installPath + @"Java\jre6\bin";
                string iniPath = installPath + @"MySQL\MySQL Server 5.5\my.ini";
                string tomcatPath = installPath + @"Tomcat\Tomcat6\bin";
    
                InstallOrUninstallMysql(mysqlpath, iniPath, true);
    
                //设置Mysql环境变量
                SysEnvironment.SetPath(mysqlpath);
    
                //设置JRE环境变量
                SysEnvironment.SetPath(jrePath);
    
                //设置Tomcat环境变量
                SysEnvironment.SetPath(tomcatPath);
                SysEnvironment.SetSysEnvironment("CATALINA_HOME", tomcatPath);
                SysEnvironment.SetSysEnvironment("CATALINA_BASE", tomcatPath);
    
                InstallOrUninstallTomcate( tomcatPath, true);
                base.OnAfterInstall(savedState);
    
            }
    
    
            /// <summary>
            /// 安装于卸载Tomcat服务
            /// </summary>
            /// <param name="tomcatPath"></param>
            /// <param name="yesNo">true为安装,false为卸载</param>
            private static void InstallOrUninstallTomcate(string tomcatPath, bool yesNo)
            {
                Process process = new Process();
                process.StartInfo.FileName = "cmd.exe";
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardInput = true;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardError = true;
                process.StartInfo.CreateNoWindow = true;
    
                process.Start();
                process.StandardInput.WriteLine("cd " + tomcatPath);
                process.StandardInput.WriteLine(tomcatPath.Substring(2) + " cd");
                if (yesNo)
                {
                    process.StandardInput.WriteLine("service.bat install");//默认服务名为Tomcat6
                    process.StandardInput.WriteLine("net start Tomcat6");//启动服务
                    process.StandardInput.WriteLine("exit");
                }
                else
                {
                    process.StandardInput.WriteLine("net stop Tomcat6");//停止服务
                    process.StandardInput.WriteLine("service.bat uninstall");
                    process.StandardInput.WriteLine("exit");
                }
    
                process.Close();
    
    
    
            }
    
            /// <summary>
            /// 安装或者卸载Mysql服务
            /// </summary>
            /// <param name="mysqlpath"></param>
            /// <param name="iniPath"></param>
            /// <param name="isInstall">为true时安装,否则为卸载</param>
            private static void InstallOrUninstallMysql(string mysqlpath, string iniPath, bool isInstall)
            {
                //安装Mysql服务
                Process process = new Process();
                process.StartInfo.FileName = "cmd.exe";
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardInput = true;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardError = true;
                process.StartInfo.CreateNoWindow = true;
    
                process.Start();
                process.StandardInput.WriteLine("");
                process.StandardInput.WriteLine("cd " + mysqlpath);
                process.StandardInput.WriteLine(mysqlpath.Substring(2) + " cd");
                //mysqld --install MySQLXY --defaults-file="D:\Program Files\MySQL\MySQL Server 5.5\my.ini"
                if (isInstall)
                {
                    process.StandardInput.WriteLine("mysqld --install MySQL --defaults-file=" + '"' + iniPath + '"');
                    process.StandardInput.WriteLine("net start mysql");
                }
    
                else
                {
                    process.StandardInput.WriteLine("net stop mysql");
                    //mysqld --install MySQLXY --defaults-file="D:\Program Files\MySQL\MySQL Server 5.5\my.ini"
                    process.StandardInput.WriteLine("mysqld --remove MySQL --defaults-file=" + '"' + iniPath + '"');
    
                }
                process.StandardInput.WriteLine("");
                process.StandardInput.WriteLine("");
                process.StandardInput.WriteLine("exit");
                //Writefile(installPath,process.StandardOutput.ReadToEnd().ToString());
                process.Close();
            }
    
    
    
            public override void Uninstall(IDictionary savedState)
            {
                string installPath = this.Context.Parameters["targetdir"];
                string mysqlpath = installPath + @"MySQL\MySQL Server 5.5\bin";
    
                string iniPath = installPath + @"MySQL\MySQL Server 5.5\my.ini";
                string tomcatPath = installPath + @"Tomcat\Tomcat6\bin";
    
                InstallOrUninstallMysql(mysqlpath, iniPath, true);
                InstallOrUninstallTomcate(tomcatPath,false);
    
                base.Uninstall(savedState);
    
            }
            /// <summary>
            /// 写日志(这个是我用来记录测试用)
            /// </summary>
            /// <param name="path"></param>
            /// <param name="msg"></param>
            public void Writefile(string path, string msg)
            {
                string file = path + @"日志.txt";
                if (File.Exists(file))
                    File.Delete(file);
                using (StreamWriter sw = new StreamWriter(file, true))
                {
    
                    sw.WriteLine(msg);
    
                }
            }
    
    
    
        }
    }
    到此,切换安装项目到自定义视图
    image
    看安装与卸载的操作是否已经定义,若没有,右键安装--添加要自定义的操作即可,编译生成安装包,若没有出错,就可以了安装运行了,
    注意安装完成后重启电脑,再在服务里面启动tomcat服务,在浏览器里输入localhost:8080,出现Tomcat网页,说明Ok。
  • 相关阅读:
    IOS使用 swizzle 解决一些错误
    Objective-C的hook方案(一): Method Swizzling
    jmeter录制Chrome浏览器https请求进行压力测试
    FIDDLER导出JMX文件,JMETER打开导出的JMX报错的解决方式
    Fiddler的PC端与手机端抓包配置步骤
    初识中间件之消息队列--提高服务性能
    Python虚拟环境配置应用
    jmeter三种阶梯式加压
    JMETER-正则表达式提取与查看变量是否提取正确
    jmeter的线程数,并发用户数,TPS,RPS 关系解说
  • 原文地址:https://www.cnblogs.com/ITBread/p/2424341.html
Copyright © 2020-2023  润新知