2013-03-04 5 views
9

설치 후 Inno Setup으로 실행할 배치 스크립트를 작성했습니다. 액센트Inno Setup으로 Windows 서비스를 설치하는 방법은 무엇입니까?

sc create MySQL start= auto DisplayName= MySQL binPath= "C:\A Nova Solução Informática\MySQL 5.5\bin\mysqld" --defaults-file="C:\A Nova Solução Informática\MySQL 5.5\my.ini" 

글자 내가 cmd를 박쥐 파일을 열면 내가 그것을 실행할 수 없습니다,이 코드의 문제이지만 때 문제는 내가 내 서비스 개발을위한 다음 명령 줄을 가지고있다 서비스가 정상적으로 생성되면 입력합니다. 어떻게 해결할 수 있습니까?

+1

'AfterInstall'과'Exec' 함수 또는'[Run]''Filename : "{cmd}"를 사용할 수 있습니다; 매개 변수 : "sc create MySQL start = 자동 DisplayName = MySQL binPath =" "C : \ Nova Solução Informática \ MySQL 5.5 \ bin \ mysqld"--defaults-file = ""C : \ A Nova Solução Informática \ MySQL 5.5 \ my.ini "" "; Flags : runhidden' – RobeN

+1

배치 파일의 시작 부분에'CHCP 65001'을 추가하고 BOM없이 UTF-8로 저장하십시오. @Roben 또는 단지'[Run]'섹션. – TLama

+0

@RobeN, 당신의 솔루션이 나를 부분적으로 도와주었습니다. 문제는 서비스가 시작된 후 cmd 프로세스가 열려 있고 설치가 완료되지 않았기 때문입니다. – juniorgarcia

답변

3

[RUN] 섹션 (TLama 제안)에이 명령을 추가하거나 함수를 [CODE] 섹션에 추가 할 수 있습니다.

[Run] 
Filename: "{cmd}"; Parameters: "sc create MySQL start= auto DisplayName= MySQL 
binPath= ""C:\A Nova Solução Informática\MySQL 5.5\bin\mysqld"" 
--defaults-file=""C:\A Nova Solução Informática\MySQL 5.5\my.ini"""; 
Flags: runhidden 
+1

이 코드를 테스트 한 사람이 있습니까? 이 코드를 사용하려고하는데 작동하지 않습니다. cmd 창이 팝업되고 아무것도하지 않습니다. – Newbee

+0

@Govs는'Parameters' ('cmd/c sc ...')의 시작 부분에서'/ c'로 시도했거나'Filename : "sc"로 시도 했습니까? 매개 변수 : "create ..." ' – Matthieu

+0

'파일 이름 : "sc"; 매개 변수는 다음과 같습니다. "create service_name start = auto DisplayName = display_name binPath =" "{sys} \ service_name.exe" ""; Flags : runascurrentuser runhidden'이 저에게 효과적입니다 –

11

오히려 직접 SC를 호출하는 것보다, 그것은 use the API에 (오류 또는 서비스 종속성 및 처리하기 쉬운) 청소기입니다. 이 예제는 여러분이 ANSI Inno를 사용하고 있다고 가정하지만, Unicode를 위해 이것을 수정하는 것은 매우 간단합니다.

개인적으로 서비스 설치 파일 자체에 install/start/stop/uninstall 명령을 작성하여 자체 등록하는 것을 선호합니다. 분명히 이것은 제 3 자 서비스를 위해 자신을 수행 할 수는 없지만 이미 이와 같은 것을 지원하는지 확인할 수 있습니다.

마지막으로 C : 폴더의 경로를 하드 코딩해서는 안됩니다. 대신 {app}을 사용해야합니다.

+0

이미 유니 코드 버전의 API가 있습니까? 나는 그것을 아주 필요로 할 것이다. 고맙습니다! –

+2

@MaikenRoskilde Unicode Inno Setup을 사용하고 있다면'external' 엔트리의'@'기호 바로 앞에있는'A' 접미사를 대신'W'로 변경하십시오. 다른 변경 사항은 필요하지 않습니다. – Miral

+0

Silvio Iaccarino의 링크 된 스크립트가 저에게 효과적이지 않았습니다. 유니 코드 Inno 설치 프로그램을 사용하고 제안 된대로 접미사를 변경해 보았지만 여전히 작동하지 않았습니다. 계속 오류가 발생했습니다. "servicemanager를 사용할 수 없습니다"또는 유사합니다. ** 나를 대신 할 수있는 대체 스크립트/라이브러리에 대해서는 [이 답변] (https://stackoverflow.com/a/5416744/207981)을 참조하십시오. – bszom

관련 문제