Как установить службу Windows с помощью Inno Setup?

Я написал пакетный скрипт для выполнения после установки, выполненной с помощью Inno Setup. Проблема в том, что у меня есть следующая командная строка для создания моей службы:

sc create MySQL start= auto DisplayName= MySQL binPath= "C:\MyApp\MySQL 5.5\bin\mysqld" --defaults-file="C:\MyApp\MySQL 5.5\my.ini"

Буквы с акцентами являются проблемой этого кода, я не могу выполнить его, если я открываю bat файл в cmd, но когда я печатаю, служба создается нормально. Как я могу это исправить?

Ответ 1

Вместо прямого вызова SC, он очищает (и легче справляется с любыми ошибками или зависимостями службы) с с помощью API. Обратите внимание, что в этом примере предполагается, что вы используете ANSI Inno, но довольно просто изменить это для Unicode.

Лично, однако, я предпочитаю создавать команды install/start/stop/uninstall в самом исполняемом сервисе, что делает его саморегистрацией. Очевидно, что это невозможно сделать для стороннего сервиса, но вы можете проверить, поддерживает ли он что-то вроде этого.

Наконец, вы не должны жестко закодировать путь к папке C:. Вместо этого вы должны использовать {app}.

Ответ 2

Вы можете попробовать добавить эту команду в раздел [RUN] (как предложил TLama) или создать функцию AfterInstall в разделе [CODE].

[Run] 
Filename: "{cmd}"; Parameters: "sc create MySQL start= auto DisplayName= MySQL 
binPath= ""C:\MyApp\MySQL 5.5\bin\mysqld"" 
--defaults-file=""C:\MyApp\MySQL 5.5\my.ini"""; 
Flags: runhidden