2012-07-25 6 views
0

WiX로 MSI 설치 프로그램을 만들었습니다. 구체적으로 Windows XP SP3 + 을 대상으로합니다. 설치가 완료되면 사용자 지정 작업을 실행하여 NSSM.exe를 통해 응용 프로그램을 서비스로 등록합니다. 명령 줄에서 실행할 때 배치 파일은 작성된 내용을 수행하지만 설치 프로그램의 일부로 실행하여 설치를 완료합니다. 명령 프롬프트가 열려 있고 스크립트가 실행되는 것을 볼 수 있지만 응용 프로그램은 등록되어 있지 않습니다. WiX : Windows XP에서 설치 중, 사용자 지정 작업이 "성공적으로"일괄 처리 스크립트를 실행하지만 작업이 완료되지 않았습니다.

<CustomAction Id="installLoft" 
       Directory="ModulesFolder" 
       ExeCommand="[ModulesFolder]winInstall.cmd" 
       Execute="deferred" 
       Return="check" 
       HideTarget="no" 
       Impersonate="no" /> 
<InstallExecuteSequence> 
    <Custom Action="installLoft" Before="InstallFinalize"><![CDATA[ (NOT Installed) AND (NOT REMOVE) ]]></Custom> 
</InstallExecuteSequence> 

배치 스크립트 내용

은 다음과 같습니다

그래서
@ECHO OFF 
SET PATH=%PATH%;%APPDATA%\app1\ 
IF "%ProgramFiles(x86)%"=="" (
    set PATH=%PATH%;%ProgramFiles%\app1\ 
) ELSE (
    set PATH=%PATH%;%ProgramFiles(x86)%\app1\ 
) 
"app1\modules\bin\nssm.exe" install my_service_name_app1 app1.cmd -g 

, APP1 서비스로 실행해야하는 스크립트, 모든 구성 요소가/파일이 설치 NSSM.exe 에 따라서 필요가있다 올바른 장소에.

내가 놓친 Win XP 경고가 있습니까? 설치 프로그램을 실행 한 사용자와 함께 수동으로 배치를 실행하면 서비스가 등록됩니다.

도움 주셔서 감사합니다.

+0

왜 사용자 지정 작업을 사용하여 ServiceInstall 및 ServiceControl 요소 대신 NSSM.exe를 실행하고 있습니까? –

+0

NSSM ** 자체는 서비스를 등록하기 때문에 **. – mspisars

답변

0

나는 그것을 알아 냈습니다. 내가 찾은 것은 서비스가 등록 된 Win XP에서 로컬 시스템 (또는 SYSTEM) 사용자로 등록 된 것입니다. 그러나 SYSTEM 사용자에게는 APPDATA 환경 변수 세트가 없습니다. 무슨 일이 있었는지, 내 스크립트가 서비스를 시작하려고 시도하고 APPDATA가 정의되지 않았기 때문에 조용히 실패 할 것입니다.

사용자 정의 MYAPPDATA 시스템 레벨 환경 변수를 선언/정의했으며 이제 설치 프로그램이 완료되면 - 재부팅 후 - 서비스가 실행 중입니다.

표준 환경 변수를 사용하는 다른 사용자에게 도움이되기를 바랍니다.

0

실제로 실행됩니까? 일시 중지 명령을 추가하여 볼 수 있습니다. 필자의 경험에 비추어 볼 때 Windows Installer는 ShellExecute 대신 CreateProcess를 사용하여 사용자 지정 작업을 시작할 수 있습니다. 이렇게하면 UAC 프롬프트가 표시되지 않지만 파일 연결을 처리 할 수 ​​없으며 .cmd 파일과 같은 문서 파일 대신 exe 프로세스를 시작해야합니다.

관련 문제