역사에서어떻게 런타임에 내 Windows 서비스를 시작하거나 OnAfterInstall
나는 업데이트 및 서버 기능을 처리하기 위해 내 Platform Application
의 일환으로 Windows Service
를 구축하고, 그래서 는 경우 다른 컴퓨터에 설치할 수 있습니다 Client Application
이 설치되어 있습니다. UDP를 사용하여 브로드 캐스트 메시지를주고받으며, TCP는보다 민감하고 중요한 메시지를 처리합니다.
내 응용 프로그램을 쉽게 바로 컴퓨터에 실행 파일을 복사하고이를 실행하는 경우로, 최종 사용자에 의해 설치 될 수 있음을 원하는 목적
. 주 응용 프로그램은 사용자가 관리자인지 확인하고, 구성 파일을 만든 다음 Windows 서비스를 설치하고 실행하여 관리자가 아닌 사용자가 로그인하면 관리 권한과 관련하여 응용 프로그램에서 오류를받지 않습니다. 목표는 현재 기술자가 필요없는 대부분의 구성을 만드는 것입니다. 데이터베이스가 원격 일 것이기 때문입니다.
문제
내 서비스는 명령 MyService.exe /install
정상적으로 설치되는하지만이 자동으로 시작되지 않습니다. 시작하는 유일한 방법은 Control Panel > Admin Tools > Services
에 가서 수동으로 수행하는 것입니다. 내 응용 프로그램을 통해 net start MyService
에 전화를 걸려고했지만 셸에서 invalid service name
을 받았습니다. executable name
, display name
및 object name
서비스를 시도했지만 그 중 아무 것도 작동하지 않았습니다.
object ServiceMainController: TServiceMainController
OldCreateOrder = False
OnCreate = ServiceCreate
DisplayName = 'PlatformUpdateService'
Interactive = True
AfterInstall = ServiceAfterInstall
AfterUninstall = ServiceAfterUninstall
OnShutdown = ServiceShutdown
OnStart = ServiceStart
OnStop = ServiceStop
Height = 210
Width = 320
질문
I 코드가 아닌 사용자의 손에 의해 내 서비스를 시작하려면 어떻게해야하나요 : 이것은 내 또한 TService의 대상인가? 호출 이후에 클라이언트 응용 프로그램 내에서 또는 클라이언트 자체에서 수행 할 수 있다면 가장 좋습니다.
'net start'을 사용하는 경우 서비스 모듈의'Name' 속성에 넣는 고유 한 이름을 제공해야합니다.이 이름은 기본적으로 'Service1'입니다. –
PS - 설치 후 이벤트로 시작하지 않을 것을 적극 권장합니다. 어떤 앱을 설치하든 시작하는 앱과 동일해야합니다. InnoSetup을 보았습니까? –
제가 살펴 보겠습니다. 당신이 말한 것처럼이 서비스를 시작할 수도 있습니다. – PSyLoCKe