我正在尝试构建一个将升级 mysql 安装的 msi。
我可以执行文件的基本升级,并且在全新安装时一切正常,我遇到的问题是,在执行升级时,我需要围绕卸载以前的版本执行一些操作。
我遇到问题的唯一操作是使用以下命令行更改 MySQL GLOBAL 设置之一
mysql.exe -u root --host=127.0.0.1 --port=5002 mysql --execute="SET GLOBAL innodb_fast_shutdown=0"
我这样做是因为建议在升级数据库时 innodb 应该执行缓慢的关闭,这是我能看到的最简单的方法。
目前我使用以下 Wix 来执行此操作
<CustomAction Id="Innodb_slowshutdown" Property="OLDMYSQLEXE" Execute="immediate"
ExeCommand=""[MYSQLINSTALLBINPATH]mysql.exe" -u root --host=127.0.0.1 --port=5002 mysql --execute="SET GLOBAL innodb_fast_shutdown=0""
Return="check" Impersonate="yes"/>
...
<Custom Action="Innodb_slowshutdown" After="InstallInitialize">UPGRADEFOUND and NOT UPGRADINGPRODUCTCODE and NOT REINSTALL and MYSQLINSTALLBINPATH</Custom>
<RemoveExistingProducts After="Innodb_slowshutdown" />
但是,这总是失败,我无法理解为什么当失败发生时我从 msiexec 日志中复制了确切的命令行并通过命令行运行它。
这完全符合我的预期,但我无法弄清楚自定义操作的不同之处。
在安装过程中,控制台会短暂打开,似乎 MySQL 可执行文件在运行,但参数有问题,并导致出现大量帮助信息,尽管我不能确定这正是发生的事情,因为它通过得很快.
此时有什么方法可以暂停安装,以便我可以看到控制台中的内容?
谁能看到我的 Wix 有任何明显的问题?
编辑 -
另外我不确定这是否与用户权限有关,我从打开“以管理员身份”打开的命令提示符运行 MSIEXEC,但如果我确实需要提升权限,当我需要执行操作时,我该怎么做立即输入?
请注意,我知道 Immediate 不允许提升权限,但我不能使用 deferred,因为它不允许我在 RemoveExistingProducts 之前执行命令。
我什至不确定这与权利有什么关系,我只是指出我认为这是一个可能的原因,但我无法证明。