6

我有一个使用 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();
4

2 回答 2

3

您不需要启动另一个 msiexec.exe。Visual Studio 还允许您将可执行文件用作自定义操作。所以自定义动作

见下文。图片来自此链接自定义操作

查看上面链接中的调用可执行文件作为自定义操作部分。现在,如果这不起作用,其他方法是修改默认引导程序

在此链接中查看0xA3的回复。
从 c# setup 项目运行另一个程序

它看起来并不复杂。:)

用于向引导程序添加先决条件的更多链接:
为 Visual Studio 2005 创作自定义引导程序包
Visual Studio 设置和部署:添加先决条件

另外你应该看看这个:
MYSQL installation with a .NET winforms app

于 2011-02-22T06:22:49.460 回答
1

您使用的是 Visual Studio 安装程序吗?如果是这样,您必须在安装程序(在解决方案资源管理器中)上单击鼠标右键然后转到查看并单击上下文菜单上的自定义操作。

带有自定义操作的新树应出现在屏幕中央。然后,您可以右键单击任何文件夹(取决于您想要添加操作的时间)并选择添加自定义操作...

希望这对你有帮助...

于 2011-02-11T13:02:25.340 回答