我有一个使用 MySQL 作为数据存储引擎的 Visual Studio 2005 项目 (C#),我想创建一个安装应用程序的 MSI 包,然后静默安装 MySQL。我一直在研究它,但我找不到太多信息。
我已经静默安装了 MySQL 包,并在 CMD 中使用这两个语句对其进行了配置
安装:
msiexec /qb /i "c:\mysql.msi" /l* d:\log_mysql_test.txt INSTALLDIR=d:\mysql_test_mdps
配置:
D:\mysql_test_mdps\bin\MySQLInstanceConfig.exe -i -q "-lD:\mysql_config_log.txt" "-pD:\mysql_test_mdps\bin" "-tD:\mysql_test_mdps\my-template.ini" "-cD:\mysql_test_mdps\my.ini" -v5.5.9 ServerType=DEVELOPMENT DatabaseType=MIXED ConnectionUsage=DSS Port=53306 ServiceName=MySQL_AGM RootPassword=root1234 SkipNetworking=no AddBinToPath=yes
但现在我不知道怎么说 Visual Studio 在安装我的应用程序之前或之后这样做。我一直在用谷歌搜索它,但我找不到任何有用的帮助。
我希望你能指导我:)
编辑:我一直在使用自定义操作解决解决方案,我发现这篇文章使用自定义安装程序类来执行自定义操作。起初它看起来很好,但我遇到了一个问题,因为当我的 MSI 包尝试启动第二个 MSI 安装程序(MySQL)时,我收到代码 2869 的错误,上面写着“拒绝访问”。
我也一直在寻找这个问题,看起来当第一个 MSI 尝试运行第二个 MSI 时它没有应用正确的权限并且安装失败......
你知道我能做什么吗?或者我如何启动第二个 MSI 安装程序?具有完全权限(或至少与第一个安装程序相同)
这是我用来创建 Process 对象的代码。
string arg1 = "/qb /i \"" + filepath + "\" /l* \"" + Path.Combine(installpath, logfile) + "\" INSTALLDIR=\"" + installpath + "\"";
Process p = new Process();
p.StartInfo.FileName = "msiexec.exe";
p.StartInfo.Arguments = arg1;
p.Start();