Как установить службу 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