【问题标题】:MySQL silent install (using NSIS) not working properlyMySQL 静默安装(使用 NSIS)无法正常工作
【发布时间】:2011-11-29 00:26:58
【问题描述】:

我正在尝试制作一个可以静默安装 MySQL 的自定义安装程序,但几天来我都遇到了同样的问题。安装 MySQL 服务器后,初始化失败,当我尝试输入密码时它立即关闭(意味着密码设置错误,或者更糟糕的是,根本没有设置)。

这是安装程序的代码:

!define PRODUCT_NAME "Soft1" !define PRODUCT_VERSION "1.0" !define PRODUCT_PUBLISHER "Zaco"

SetCompressor lzma

!包括“MUI2.nsh”

!define MUI_ABORTWARNINGS !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_WELCOMEPAGE_TEXT "欢迎 txt"

!insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Lic.txt" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH

!insertmacro MUI_LANGUAGE "英语"

名称“${PRODUCT_NAME} ${PRODUCT_VERSION}” 输出文件“Soft1.exe” 安装目录“$PROGRAMFILES\Soft1” ShowInstDetails 展示

部分 - 设置 SetOutPath "$INSTDIR" SetOverwrite ifnewer 部分结束

“MySQL”SEC_01 部分

File mysql.msi
ExecWait 'msiexec /i "$INSTDIR\mysql.msi" /quiet'
SetOutPath "$PROGRAMFILES\MySQL\MySQL Server 5.1"
File my.ini
File mysql-init.txt
ExecWait '"$PROGRAMFILES\MySQL\MySQL Server 5.1\bin\mysqld"  --defaults-file = "$PROGRAMFILES\MySQL\MySQL Server 5.1\my.ini" '  
ExecWait '"$PROGRAMFILES\MySQL\MySQL Server 5.1\bin\mysqld"  --init-file = "$PROGRAMFILES\MySQL\MySQL Server 5.1\mysql-init.txt" '
ExecWait "Net Start MySQL"

部分结束


my.ini 文件的内容是从使用 MySQL 服务器实例配置向导手动安装和配置 MySQL 服务器后创建的 my.ini 文件复制而来的。 mysql-init.txt 包含以下代码:

CREATE USER root IDENTIFIED BY PASSWORD 'New_Password';
授予 * 上的所有特权。 * TO 'root'@'localhost' IDENTIFIED BY 'New_Password' WITH GRANT OPTION ;

我也尝试将此代码用于 mysql-init.txt,但得到相同的结果:

更新 mysql.user SET Password=PASSWORD('New_Password') 其中用户='root'; 同花顺特权;

此外,如果尝试使用 MySQL 服务器实例配置向导配置服务器,它会让我选择这些选项,就好像安装程序中的初始化命令对服务器完全没有影响一样。

欢迎任何有关我如何解决此问题的建议。

提前感谢您的关注!

【问题讨论】:

    标签: mysql nsis silent-installer


    【解决方案1】:

    我发现在调用需要包含引号的参数的命令行应用程序时,最好使用 /S 参数调用 cmd.exe 并将命令行本身作为参数传递。因此,使用您的示例,您将使用:

    ExpandEnvStrings $ComSpec %COMSPEC%
    
    ExecWait '"$ComSpec" /S /C ""$PROGRAMFILES\MySQL\MySQL Server 5.1\bin\mysqld" --defaults-file = "$PROGRAMFILES\MySQL\MySQL Server 5.1\my.ini""'
    
    ExecWait '"$ComSpec" /S /C ""$PROGRAMFILES\MySQL\MySQL Server 5.1\bin\mysqld" --init-file = "$PROGRAMFILES\MySQL\MySQL Server 5.1\mysql-init.txt""'
    

    【讨论】:

    • 我也尝试过使用您的解决方案,但它s not working. It seems like my problem is caused by the use of mysqld. I tried to install MySQL Server, leave it unconfigured and than type the above commands in cmd but its 也不起作用。因此,我猜它s that either the my.ini and the mysql-init.txt contain the wrong info or the way I tried using msqld its 错了。欢迎提出任何建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    相关资源
    最近更新 更多