gpt4 book ai didi

MySQL 静默安装(使用 NSIS)无法正常工作

转载 作者:行者123 更新时间:2023-11-29 00:52:51 27 4
gpt4 key购买 nike

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

这是安装程序的代码:

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

SetCompressor lzma

!include "MUI2.nsh"

!define MUI_ABORTWARNINGS!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"!define MUI_WELCOMEPAGE_TEXT "Welcome 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 "English"

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"OutFile "Soft1.exe"InstallDir "$PROGRAMFILES\Soft1"ShowInstDetails show

Section -Settings SetOutPath "$INSTDIR" SetOverwrite ifnewerSectionEnd

Section "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';GRANT ALL PRIVILEGES ON * . * TO 'root'@ 'localhost' IDENTIFIED BY 'New_Password' WITH GRANT OPTION ;

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

UPDATE mysql.user SET Password=PASSWORD(’New_Password’)WHERE User=’root’;FLUSH PRIVILEGES;

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

欢迎就我如何解决这个问题提出任何建议。

在此先感谢您的关注!

最佳答案

我发现在调用需要包含引号的参数的命令行应用程序时,最好使用/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""'

关于MySQL 静默安装(使用 NSIS)无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7620002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com