0

にインストールした後、MySQL サービスをインストールしたいと考えていますInno Setupここにはすでに同様の質問がありますが、解決策はありません。

ソリューションでそのように使用するsc createと、インストール後にコマンドプロンプトがポップアップするだけで、何もしません。

一部のページに従ってコマンドを変更しようとしましたが、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

少なくとも 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'
Description - ' 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 に答える