使用 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 网站上找到它的文档。我唯一找到有用信息的地方是安装程序发行说明!
我找到了一些对 installdir
和 datadir
参数 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'
我有一个基本的 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 网站上找到它的文档。我唯一找到有用信息的地方是安装程序发行说明!
我找到了一些对 installdir
和 datadir
参数 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'