使用 NSIS 静默安装完整 MySQL

Installing a full MySQL install silently using NSIS

我有一个基本的 NSIS 脚本设置,如下所示:

!include MUI2.nsh
!include WordFunc.nsh
!insertmacro VersionCompare
!include LogicLib.nsh
!include InstallOptions.nsh
!include nsDialogs.nsh

Name "sqltest"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_RIGHT

OutFile "sqltest.exe"
InstallDir "$PROGRAMFILES\sqltest"
RequestExecutionLevel admin

XPStyle on

!define MUI_WELCOMEPAGE_TEXT "The MySQL Test Install"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
;!insertmacro MUI_UNPAGE_CONFIRM
;!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

Section "install"
    
    SetOutPath $INSTDIR
    File /r "V:\Installers\MySQL\Release\*.*"
    ExecWait '"$SYSDIR\msiExec" /i "$INSTDIR\mysql.msi" /passive'
    
    
SectionEnd

然而,这似乎只安装了另一个安装程序:

如果我手动 运行 .msi 文件,我会选择“完整”,并且该过程实际上安装 MySQL 完整,服务 运行ning 等

如何使用 NSIS 以静默方式实现这种安装?

更新:

我尝试了很多不同的命令,发现我没有安装带参数的完整 MySQL。我设法完整安装了 MySQL,但这并没有安装服务和其他主要功能(http://dev.mysql.com/doc/relnotes/mysql-installer/en/mysql-installer-news-1-4-12.html 的顶部)

我尝试了上面的第二部分 link,但没有成功。它所做的只是安装一个文件夹,其中包含上图中显示的选项。

我尝试使用命令安装程序,正如下面的海报所暗示的那样。但是,这给了我一个 Oracle 登录提示!我需要在没有用户交互的情况下进行安装和安装。

有什么想法吗?

按照文档 here 执行 MySQLInstallerConsole 可能会继续安装,但是让 .msi 执行安装当然要好得多需要找出传递给 msiexec 的正确参数。

这些参数只有 .msi 的作者知道,我很难在 MySQL 网站上找到它的文档。我唯一找到有用信息的地方是安装程序发行说明!

我找到了一些对 installdirdatadir 参数 here 的引用。我不确定这些是 MSI 参数还是在 CONSOLEARGS 字符串中。

使用 /passive 开关时,您似乎可以传递一个名为 CONSOLEARGS 的字符串参数,它支持许多选项,如 here:

所述
msiexec /i mysql-installer-community-5.6.27.1.msi /passive CONSOLEARGS="install -type=Full -silent"

msiexec /i mysql-installer-community-5.6.27.1.msi /passive CONSOLEARGS="install server;5.6.27;x64:*:type=config;openfirewall=true;generallog=true;binlog=true;serverid=1;enable_tcpip=true;port=3306;rootpasswd=secret:type=user;username=root;password=secret;role=DBManager -silent"

在安装程序脚本中将文件“mysql.msi”复制到安装目录。首先,在与下面的安装程序脚本相同的目录中创建 mysql.msi 文件,然后编译安装程序脚本。如果安装程序脚本在桌面上,请删除 运行 已编译安装程序之前的 mysql.msi 文件。 运行 简单安装程序将 mysql.msi 文件安装到桌面。

您必须按如下方式修改脚本:

ExecWait '"$SYSDIR\msiExec" /i "$INSTDIR\mysql.msi" /qn'