2013-07-16 91 views
2

我需要inno setup编译器脚本来检查安装mysql应用程序之前,是否安装了mysql服务器。在安装Inno setup编译器之前,如何检查mysql服务器是否安装应用程序

+1

这很难确定。 MySQL并不总是需要安装。您可以下载ZIP档案并不时运行所需的服务。你会在这种情况下强制安装你的MySQL版本吗?我不会这样做。 – TLama

+0

我正在使用inno setup编译器创建应用程序包。此应用程序使用mysql作为数据库。所以在安装这个软件包的时候它应该会提示安装mysql – SHIN

+1

我可以想象你正在开发什么,我遵循InnoSetup标签一段时间;-)与我以前的评论,我只是想告诉,MySQL的检测是不可靠的,你不应该自动安装MySQL的确定。如果找不到MySQL,请询问用户。这听起来很公平。 – TLama

回答

1

MySQL是退出不同于其他的,我们也可以使用MySQL与出安装到我们的系统通过运行所需的服务时间从下载的zip档案,时间提取的文件可能被放置在系统上的任何地方... Tlama已经提到了这一点。

在这里,我们有两种情况检查

案例1:安装-MySQL或不

Direxists功能(在这里,您可以检查的程序文件是否存在MySQL目录)
MySQL目录路径:{PF} \ MySQL的

Filexists functi上(这个你可以检查所需的MySQL文件都存在于用户的系统)

查询注册表与MySQL注册表项名称

HKEY_USERS \ S-1-5-21-1707045092-1792370289- 147592793-1000 \ SOFTWARE \ MySQL的
HKEY_USERS \ S-1-5-21-1707045092-1792370289-147592793-1000 \ SOFTWARE \ MySQL AB公司 HKEY_CURRENT_USER \ SOFTWARE \ MySQL的
HKEY_CURRENT_USER \ SOFTWARE \ MySQL AB公司
检查是否这些是否存在于注册表中。

如果每件事都存在,那很好。去为你的应用程序安装

,如果不检查的情况下2还

案例2: - 是否有正在运行或不与MySQL在整个系统中的名称的任何文件或目录和MySQL所需的服务

a。首先检查是否有任何文件,或通过使用下面的命令,执行与下面的一个可以使用命令Exec的功能

与MySQL的用户机的名称存在的文件夹,你可以找到是否MySQL的(文件/目录)是没有在C盘或没有,但不是在整个系统

C:\>tree |find "mysql" >filename 

b)现在通过使用

更改驱动器d,E,F下面的命令会给你,在所有的磁盘驱动器机器

C:\>wmic logicaldisk get caption >filename 

则每次Loadstringfromfile检查每个驱动器在上述文件名

C:\>D: 
d:\>tree |find "mysql" >filename 

一些串,然后检查字符串的长度是零。 如果不为零,则需要检查所需的服务正在运行或不使用(你可以跳过为简单起见,一些上述步骤)

tasklist |find "required service of MySQL" >filename 

如果所有驱动器完成,如果没有发现任何东西,没有后顾之忧简单提示用户下载MySQL(Use ITD(Innoo tools downloader)),否则你可以用你的应用程序打包MySQL msi,但是你的应用程序变得庞大(包含更多的内存)。

+1

谢谢Gangadhar,从最后一天起,我正在尝试着你的逻辑。我正在检查只有注册表项,为检查它需要有一个注册表项,我可以检查版本使用: RegQueryStringValue(HKLM,'SOFTWARE \ MySQL AB \ MySQL Server 5.5','Version',Retval); 在这里我只能检查版本5.5,如果它的版本5.6,我需要将该注册表路径更改为 'SOFTWARE \ MySQL AB \ MySQL Server 5.6' Plz帮助我如何读取通用路径值?可能吗? – SHIN

+0

通过使用regedit.exe和导出到文件选项,可以将注册表值导出到文件。如果要导出** HKEY_CURRENT_USER \ Software \ MySQL AB **注册表项的注册表值,请使用** params:='/ e“C:\ Myfile.txt”HKEY_CURRENT_USER \ Software \ MySQL AB“; ** ** Exec('regedit',params,'',SW_SHOW,ewWaitUntilTerminated,ResultCode); **然后使用** Loadstringsfromfile('C:\ Myfile.txt',regstrings)**这里regstrings:Tarrayofstring变量,最后使用info在regstrings中。 – Gangadhar

+0

如果您在MySQL和AB之间的空间使用双引号**“HKEY_CURRENT_USER \ Software \ MySQL AB”** – Gangadhar

相关问题