如何使用自定义设置在无人值守的情况下安装 MySQL?

How to install MySQL unattended with custom settings?

这是用于静默安装MySQL的命令行,

/quiet

但是如何在安装程序中使用自定义设置运行 MySQL 安装程序无人值守?

更新:这里有几个阶段的答案。我会把它们都留在里面。建议的技术解决方案/解决方法移到顶部。

实例配置

instances的实际配置好像是从MySQLInstanceConfig.exe to the installer itself: Where is the MySql 5.6 equivalent of `MySQLInstanceConfig.exe` to edit configuration files? Please try the MySQLInstallerConsole.exe移过来的(注意:那个link s 到版本 8.0,而不是 5.7) 应用程序,示例:

Silent Installation: It seems this console appliation can run the installation silently in various flavors, making the procedure below optional.

MSI 软件包

我对我认为是 mysql-5.7.22-winx64.msi 文件的文件进行了测试 运行(主文件中嵌入了许多 MSI 文件,请参见下文)。 我最好的提示与供应商联系phone以确定他们是否积极尝试防止沉默安装。他们可能有,然后你可能会随着时间的推移与风车作斗争。如果你问我,他们应该改进这个设计——虽然这不是我见过的最糟糕的。

通过启动原始的大型 MSI 并启用 automatic logging(请参阅 link 中的部分:“全局用于机器上的所有设置”) ,然后 运行 通过其内置的自定义 GUI 开始实际安装,然后检查 temp 文件夹中生成的实际日志文件中的 "CommandLine" 条目 - 它看起来像它设置以下属性:REBOOTADDLOCALINSTALLDIR, 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. 启用automatic logging(MSI专家Stefan Kruger的信息)
  2. 通过自定义设置 GUI 安装并适当设置选项
  3. %temp% folder 的日志文件中查找要设置的属性。
    • 日志文件将有随机名称,按数据排序并打开最近更改的日志文件。
  4. 从包装器设置中获取嵌入式 MSI 文件:
    • 获取 (列表向底部)
    • 从包装器设置中删除启动条件 (LaunchCondition table)
    • 像这样提取内容:msiexec.exe /a mysql-installer-community-5.7.22.1.msi TARGETDIR=C:\YourFolder
    • 上面的命令启动了一个 administrative installation - 本质上是一个美化的文件提取,但是应用程序打包程序每天使用的 MSI 的一个非常好的功能
  5. 尝试根据您找到的设置
  6. 使用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,但通常你打电话给供应商或搜索他们的网站来获取文档对于这样的部署,请按照我在下面概述的过程(让我在这里也添加 link:How to make better use of MSI files)使用 PUBLIC propertiestransforms修改安装.

但是,在快速检查此 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 工具套件的零碎部分.如果这个启动器是用 WiX Burn[ 构建的 setup.exe 就更好了=34=]Advanced Installeran equivalent tool.

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

现实世界的方法可能是使用上述管理安装技巧提取所有 MSI 文件,尽管它们阻止管理安装一定是有原因的——我不知道这一点很可能他们不想通过选项支持静默安装?(给他们打电话?)。然后获取所需的各个 MSI 文件,并查看它们是否会使用描述的方法以静默模式安装 here with PUBLIC properties and / or transforms. There are many features in these setups, and you can use ADDLOCAL at the command line to define which ones to install and not. See the linked answer below. However, as I state below as well; (推荐略读)。

注意先决条件运行时间要求。可能有好几种,比如.NET框架和各种运行次。我看到自定义安装 GUI 安装了其中的几个。


我原来的通用答案如下:

MSI: 看起来这个安装程序是 Windows 安装程序格式,换句话说就是一个 MSI 文件。你很幸运,因为 MSI 文件在静默安装和自定义参数配置方面非常灵活。然而,这取决于包装是否经过精心设计,但情况并非总是如此。

PUBLIC 属性和转换:我在这里有一个关于自定义 MSI 安装主题的古老答案:How to make better use of MSI files(只是第一部分,结尾与其他主题有点脱节)。正如您将在 linked 答案中看到的那样,您实际上是在命令行设置可用的 PUBLIC 属性,或者创建一个转换以在安装程序中自定义您想要的任何内容。后者是大多数公司为部署所做的。

Configuration:可以在命令行设置哪些属性(有任何影响),因不同的设置而异。设置创建者必须已经创建了这些属性 - 并在设置中围绕它们构建了功能 - 才能使它们可配置。典型的参数化值包括 license keysURLs to license serversuser and company names and emails 等。对于更实质性的更改(例如更改快捷方式或类似内容),人们通常求助于使用转换。您还可以使用 ADDLOCAL property 来定义要安装的功能(如果您为 ADDLOCAL 指定值,则不会安装所有其他功能)。特征控制是 MSI 的内置 属性,您可以从命令行或通过转换详细控制特征选择。但是,(推荐略读)。

具体示例:如上所述,您需要根据相关设置设置适当的属性和值。这意味着您必须点击相关设置的文档以确定什么是 "settable" 或不是。


部分链接: