2014-10-15 3 views
6

설치 후 HTTP 포트를 등록해야하지만 일반적으로 모든 명령 줄 명령을 실행하도록 추상화 될 수 있습니다. 여기에 내가 지금까지 가지고있는 것이있다 :WiX : 설치 후 명령 줄 명령을 실행하는 방법

<CustomAction Id="ExecPortOpen" Directory="INSTALLFOLDER" Execute="immediate" ExeCommand="cmd.exe &quot;netsh http add urlacl url=http://+:1234/ user=Everyone&quot;" Return="ignore" /> 
<InstallExecuteSequence> 
<Custom Action="ExecPortOpen" After="InstallFinalize" /> 
</InstallExecuteSequence> 

이것은 명령 프롬프트 중간 설치를 열고 아무것도하지 않는다. 나는/c를 추가하려고 시도했는데 (나는 무엇을하는지 모른다) inbetween cmd.exe와 명령을 실행하지만 명령을 실행하지 않고 명령 프롬프트를 열고 닫는다. 이 작업을 어떻게 수행합니까? WiX 3.8을 사용하고 있습니다.

+0

참고로 WiX v3.10/4.0에 HTTP 포트를 등록하기위한 새로운 Http 확장이있을 것입니다. http://wixtoolset.org/issues/4505/ –

답변

10

실제로 해결 된 UAC/사용 권한 문제입니다. 여기에 관심있는 당사자는 작동 코드가 있습니다 :

<CustomAction Id="ExecPortOpen" Directory="INSTALLFOLDER" Execute="commit" Impersonate="no" ExeCommand="cmd.exe /c &quot;netsh http add urlacl url=http://+:1234/ user=Everyone&quot;" Return="check" /> 

<InstallExecuteSequence> 
    <Custom Action="ExecPortOpen" After="InstallInitialize" /> 
</InstallExecuteSequence> 
+2

나는 순전히 그물 전체를 검색했고,'Execute = "commit"'은'netsh '를 위해 UAC를 보존 할 것이라고 지적한 사람은 처음이다. 'Execute = "immediate"는 사용자 모드에서 실행됩니다. 감사! –