0

我想在安装后安装 MySQL 服务Inno Setup这里已经有类似的问题,但没有适合我的解决方案。

如果我sc create在解决方案中这样使用,那么在安装命令 promt 后只会弹出,但什么也不做。

我尝试根据某些页面修改命令,它在 cmd 中效果很好:

sc create "MySQLSW" binpath= "\"C:\Program Files (x86)\Drevarska spolecnost\MySQL Server 5.6\bin\mysqld\" --defaults-file=\"C:\Program Files (x86)\Drevarska spolecnost\my.ini\" MySQLSW" DisplayName= "MySQLSW" start= "auto"

对于 Inno Setup 它需要双引号,所以我尝试了这个和它的几个变体

[Run] 
Filename: "{cmd}"; Parameters: "sc create ""MySQLSW"" binpath= ""\""{app}\MySQL Server 5.6\bin\mysqld\"" --defaults-file=\""{app}\my.ini\"" MySQLSW"" DisplayName= ""MySQLSW"" start= ""auto""";

但是 cmd 不会执行任何操作。问题可能出在那个反斜杠上,但我不知道正确的语法。

我也尝试从这里添加 API并使用以下代码,但也一定有问题,因为它只是通过安装,但不会创建服务。

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
  begin
    if IsServiceInstalled('MySQLSW') = false then begin
      if InstallService(ExpandConstant('{app}\MySQL Server 5.6\bin\mysqld.exe'),ExpandConstant('--defaults-file="{app}\my.ini"'),'MySQLSW','Needed for mysql database',SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START) = true then begin
        StartService('MySQLSW');
      end
    end
    else if IsServiceRunning('MySQLSW') then
        MsgBox('MySQLSW is running',mbInformation, MB_OK);
  end;
end;

我在这方面还不是很熟练,但我敢肯定,某处会有一些错位的报价,但我找不到。提前感谢您的帮助。

4

1 回答 1

1

我至少发现了一个奇怪的地方。

由https://github.com/pgina/pgina/blob/master/Installer/scripts/services.iss定义的 InstallService :

function InstallService(FileName, ServiceName, DisplayName, Description : string;ServiceType,StartType :cardinal) : boolean;

你的来电

InstallService(ExpandConstant('{app}\MySQL Server 5.6\bin\mysqld.exe'),ExpandConstant('--defaults-file="{app}\my.ini"'),'MySQLSW','Needed for mysql database',SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START)

您确定 ServiceName 可能包含此类内容吗?

FileName - ExpandConstant('{app}\MySQL Server 5.6\bin\mysqld.exe')
ServiceName - ExpandConstant('--defaults-file="{app}\my.ini"')
DisplayName - 'MySQLSW'
描述 - '需要 mysql 数据库的
ServiceType - SERVICE_WIN32_OWN_PROCESS
StartType - SERVICE_AUTO_START

试试这个

InstallService(ExpandConstant('"{app}\MySQL Server 5.6\bin\mysqld.exe"') + ExpandConstant(' --defaults-file="{app}\my.ini" MySQLSW'), 'MySQLSW' ,'MySQLSW','Needed for mysql database',SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START)
于 2013-04-06T16:05:31.987 回答