使用.NET WinForms应用程序安装MYSQL

6
我有一个使用MYSQL的C#应用程序。现在处于beta版本发布点,需要一个安装包来包含我的应用程序和MYSQL。基本上,我需要在我的.NET安装包中安装MYSQL并执行还原操作。
非常感谢您的帮助。

将MySQL服务器数据库与.NET应用程序一起部署 - George Stocker
6个回答

4

步骤1:你在做错事

你试图安装 MySQL 服务器。这应该是你犯错的第一个提示。大多数服务器应用程序都是设计用于安装在服务器上而不是客户端上。值得注意的一点是,服务器应用程序喜欢假定它们拥有服务器。这对于客户端应用程序来说是一个巨大的错误。

步骤2:现在我们已经得到正确的信息,需要做出决策

既然我们已经确定自己的做法是错误的,我们需要选择要做什么。我们有两个选择:

  1. 切换到 SQLite 或 SQL Server Compact Edition 等“客户端”数据库。
  2. 绕过安装服务器应用程序的问题。

我个人建议尽快切换到 SQLite(或类似产品)。这是“正确的”方法,而且您不必维护多年的黑科技。

步骤3:无论如何,您都想绕开 MySQL 安装问题,因为这可能更容易。

您已经被警告了。以下是您需要注意和解决的一些问题:

  1. MySQL 希望安装到 program files\mysql 中。如果用户已经自己安装了 MySQL。您会破坏一切。
    • 您需要告诉您的 MySQL 版本安装到自定义文件夹中。我建议将其作为应用程序的子文件夹。
  2. MySQL 希望作为服务运行(服务可能称为“mysql”)。同样,如果用户已经安装了 mysql,您会破坏一切。
    • 您需要使用不同的名称运行服务
  3. MySQL 服务器可能希望将文件写入 Program Files\etc。
    • 您需要更改其配置,以便它将文件写入 %APPDATA% 等等。
  4. MySQL 将假定它始终由同一用户运行。如果有两个用户想要使用您的程序,您需要进行修改,通过将 MySQL 作为本地服务帐户运行(存在安全漏洞),或者为每个用户安装单独的 mysql。

因此,考虑到所有这些因素,我会建议您设置一个可复制的 MySQL


3

我已经在另一个问题上发布了答案。

我们采用了不同的方法。我们编写了一个包装器,在调用MySQL之前生成配置文件,以正确设置基本路径等。然后我们安装了另一个使用标准安装程序的服务。这个服务将负责启动MySQL和其他所需的后台程序(在我们的情况下是Apache)。由于MySQL是由我们部署的,我们希望对其拥有完全控制。

因此,通过这种方法,您可以简单地将MySQL软件包与您的安装一起包含,并只需要担心安装自己的服务。


3
如果您正在使用或可以使用NSIS,您应该阅读这篇文章:Silent MySQL Install 关于还原,您可以尝试使用MySQL的其中一个工具进行脚本编写,或修改这个旧的NSIS脚本的一部分。
祝好运!

2
这个问题与另一个问题非常相似。但是,答案并没有真正帮助到你。
你可以通过.Net部署项目中的自定义操作来运行可执行文件,这是我推荐的方法。(查看“调用可执行文件作为自定义操作”标题下的内容)
希望一切都可以通过命令行解决。如果不行,尝试使用像Wise或InstallShield这样的脚本安装程序,我认为它们对此类问题有更好的支持。
希望能帮到你!

1

@Orion Edwards

非常感谢您提供的步骤。我也有同样的疑问。事实上,我们之前放弃了SQLite,因为我们的独立应用程序需要一些程序和外键约束。但现在我觉得,如果要部署在客户机上,SQLite始终是一个更好的选择。

目前,我必须坚持使用MySQL。因此,我正在使用不同类型的脚本和机制来处理不同的可能情况。例如:

  • 如果客户机没有预安装mysql,则有一个脚本可以完全安装服务器并创建应用程序所需的数据库和用户。
  • 如果客户机预先安装了mysql,则会要求用户提供mysql的root用户名和密码,并从应用程序中设置数据库和用户。
  • 第三种情况是,如果由于某种原因客户机之前安装了mysql服务器,然后卸载了它,由于mysql即使在卸载后仍会跟踪以前的root密码,因此我运行mysql服务器的.msi文件,重置密码(手动执行一些步骤),最后在脚本中创建数据库实例(当然,这些步骤需要由我们执行,而不是用户,因为这是一个非常罕见的情况)。

这种方法可行吗?还是有更好、更合适的方法来实现这个功能?

将来我想我会坚持使用SQLite! :-p


-1

可以尝试使用Visual Studio的打包和部署工具,如果您使用本地连接(MySQL .NET组件)而不是ODBC连接,它应该会自动引入MySQL依赖项。无论如何,它都允许您将其他软件添加到安装程序中,并在需要时自动解压缩。我曾经使用它来部署使用从MySQL网站下载的MySQL库或CoreLab的第三方MySQL库的C#应用程序。


这对于安装客户端库很有效,我猜已经在做了。问题是试图安装MySQL 服务器 - Orion Edwards

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接