代码之家  ›  专栏  ›  技术社区  ›  Codename K

如何使用自定义设置安装mysql无人值守?

  •  1
  • Codename K  · 技术社区  · 8 年前

    这是使用的命令行安装 MySQL 默默地,

    /quiet
    

    但如何运行 mysql 安装程序无人参与安装程序中的自定义设置?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Stein Åsmul    8 年前

    更新 :这里有几个阶段的答案。我会把它们都放进去。建议的技术解决方案/解决方案已移至顶部。

    实例配置

    实例的实际配置 似乎是从 MySQLInstanceConfig.exe 对于安装程序本身: Where is the MySql 5.6 equivalent of `MySQLInstanceConfig.exe` to edit configuration files? 请试试 MySQLInstallerConsole.exe (注:链接到8.0版,而不是5.7版)应用程序,示例:

    MySQLInstallerConsole.exe

    静默安装 :似乎此控制台应用程序可以在 各种口味,使下面的程序可选。

    MSI包

    我试了一次我认为 mysql-5.7.22-winx64.msi 文件(主文件中嵌入了许多MSI文件,请参见下文)。 我最好的建议 : 与供应商通电话,确定他们是否积极尝试阻止静默安装 . 他们可能只是,然后随着时间的推移,你可能在和风车作战。如果你问我,他们应该改进这个设计——尽管这不是我见过的最糟糕的设计。

    通过启动原始的大型MSI并启用 automatic logging (请参阅该链接中的部分: 在一台机器上对所有设置进行全局设置 “),然后运行其内置的自定义GUI并启动实际安装,然后检查 "CommandLine" 在实际日志文件中生成的条目 temp 文件夹-它似乎设置了以下属性: REBOOT , ADDLOCAL , INSTALLDIR , INSTALLLOCATION , ARPINSTALLLOCATION , INSTALL_ROOT , DATADIR . 下面的实际日志条目:

     ******* Product: C:\ProgramData\MySQL\MySQL Installer for Windows\Product Cache\mysql-5.7.22-winx64.msi
     ******* Action: 
     ******* CommandLine: REBOOT=ReallySuppress  ADDLOCAL=RegKeys,ALWAYSINSTALL,Readme,MISC,Server_Scripts,ProgramMenu,MYSQLSERVER,Client,DEVEL,SharedLibraries,UserEditableDataFiles INSTALLDIR="C:\Program Files\MySQL\MySQL Server 5.7" INSTALLLOCATION="C:\Program Files\MySQL\MySQL Server 5.7" ARPINSTALLLOCATION="C:\Program Files\MySQL\MySQL Server 5.7" INSTALL_ROOT="C:\Program Files\MySQL\MySQL Server 5.7"  DATADIR="C:\ProgramData\MySQL\MySQL Server 5.7" ALLUSERS=1 
    

    换句话说,这些属性是由通常运行安装过程的自定义安装GUI设置的。 您应该能够对需要安装的所有嵌入的msi文件使用此过程。 . 然后,您只需从大型MSI中提取所需的这些MSI文件,并使用找到的命令行以某种方式按顺序运行它们。如果需要,也可以应用转换。

    说明明显的 :这可能需要一些时间来纠正,因为您需要与先决条件和公司用例作斗争。我会去的 引航 . 找一个充满活力的团队,快速把你的东西放在他们的测试PC上,告诉他们尽快给它一个垃圾桶。很可能你已经这么做了,只是提一下。如果没有一些不幸的、耗时的迭代,我永远无法把这些事情做好。


    程序概要 :

    1. 使能 自动记录 (MSI专家Stefan Kruger的信息)
    2. 通过自定义安装GUI安装,并根据需要设置选项
    3. 在日志文件中查找要设置的属性 %temp% folder .
      • 日志文件将具有随机名称,按数据排序并打开最近更改的日志文件。
    4. 从包装安装程序获取嵌入的MSI文件:
      • 抓住 MSI tool for viewing / editing MSI files (向下列出)
      • 从包装设置中删除启动条件(启动条件表)
      • 提取如下内容: msiexec.exe /a mysql-installer-community-5.7.22.1.msi TARGETDIR=C:\YourFolder
      • 以上命令启动 administrative installation -本质上是一个光荣的文件摘录,但应用程序包装商每天使用的MSI的一个非常好的特性
    5. 尝试在带有 msiexec.exe 基于找到的属性集的命令行

    样品 :

    msiexec.exe /i mysql-5.7.22-winx64.msi REBOOT=ReallySuppress ADDLOCAL="RegKeys,ALWAYSINSTALL,Readme,MISC,Server_Scripts,ProgramMenu,MYSQLSERVER,Client,DEVEL,SharedLibraries,UserEditableDataFiles" INSTALLDIR="C:\Program Files\MySQL\MySQL Server 5.7" INSTALLLOCATION="C:\Program Files\MySQL\MySQL Server 5.7" ARPINSTALLLOCATION="C:\Program Files\MySQL\MySQL Server 5.7" INSTALL_ROOT="C:\Program Files\MySQL\MySQL Server 5.7" DATADIR="C:\ProgramData\MySQL\MySQL Server 5.7" ALLUSERS=1 /QN
    

    以及一些参数信息:

    ADDLOCAL="..." - list of features to install locally
    REBOOT=ReallySuppress - prevent spontaneous reboot
    ALLUSERS=1 - install per machine
    /QN - crucial addition to the command line found in the log file. this makes the install run in silent mode
    

    不寻常的MSI设计 :我知道这是一个不寻常的MSI,但一般情况下,您可以打电话给供应商或搜索他们的网站,以获取有关部署的文档,如此,并按照下面我概述的过程(我也可以在此处添加链接: How to make better use of MSI files )使用 PUBLIC properties transforms 修改安装。

    但是,在快速检查这个MSI之前,我写了下面的部分。一个快速的眼神显示出 embedded MSI packages . 一点也不好。MSI也没有GUI,其管理安装(文件提取)被启动条件阻止。实际上设计很糟糕。您可以通过使用ORCA或等效工具删除启动条件并执行以下操作来进行管理安装:

    msiexec.exe /a mysql-installer-community-5.7.22.1.msi TARGETDIR=C:\YourFolder
    

    这似乎是一个包装器MSI,它将启动一个专有的GUI(.NET为基础?)然后,您可以使用它来安装MySQL工具套件所需的部分。如果这个发射器是一个 setup.exe 用…建造 WiX Burn , Installshield , Advanced Installer an equivalent tool .

    推荐程序 诚实的回答是我不知道。我会的 call the vendor 如果可能的话, check their user forums do some further googling 一般来说。我希望大多数嵌入的MSI文件都可以在静默模式下安装。

    实际方法可能是使用上述管理安装技巧提取所有MSI文件, 尽管他们一定有理由阻止管理性安装——我不知道。 . 很可能他们不想通过选项支持静默安装? (打电话给他们?)。然后,您将获取所需的各个msi文件,并查看它们是否将使用所描述的方法以静默模式安装。 here 具有公共属性和/或转换。这些设置中有许多功能,您可以使用 添加本地 在命令行中定义要安装的和不安装的。请参阅下面链接的答案。然而,正如我在下面陈述的那样; feature control is a very complex topic (建议脱脂)。

    注意必备的运行时要求。可能有几个,例如.NET框架和各种运行时。我看到其中有几个是由自定义安装GUI安装的。


    下面是我的原始、通用答案 :

    微星 :此安装程序似乎是Windows Installer格式,换句话说,是一个MSI文件。幸运的是,在静默安装和自定义参数配置方面,MSI文件非常灵活。然而,它依赖于设计良好的软件包,这并不总是如此。

    公共财产和转换 :在自定义MSI安装的主题上,我有一个古老的答案: 如何更好地使用MSI文件 (只是第一部分,结尾与其他主题有点脱节)。正如您将在链接的答案中看到的,您基本上在命令行设置了可用的公共属性,或者创建一个转换来定制安装程序中需要的任何内容。后者是大多数公司为部署所做的。

    配置 :可以在命令行设置哪些属性(有任何效果),在不同设置之间有所不同。安装程序创建者必须将这些属性(以及在安装程序中围绕它们构建的功能)设置为可配置的。典型的参数化值包括 license keys , URLs to license servers user and company names and emails 类似的。对于更实质性的改变(如改变快捷方式或类似的改变),人们通常使用转换。您还可以使用 ADDLOCAL property 定义要安装的功能(如果为指定值,则不会安装所有其他功能 添加本地 )功能控件是MSI的内置属性,您可以从命令行或通过转换详细控制功能选择。然而, 功能控制是一个非常复杂的主题 (建议脱脂)。

    混凝土样品 :如上所述,您需要为相关设置设置适当的属性和值。这意味着您必须点击相关设置的文档以确定“可设置”或“不可设置”。


    一些链接 :