2014-10-15 12 views
6

Ich muss einen HTTP-Port nach der Installation registrieren, aber ich denke, dies könnte abstrahiert werden, um einen Befehlszeilenbefehl auszuführen. Hier ist, was ich bisher habe:WiX: Wie führe ich einen Befehlszeilenbefehl nach der Installation aus?

<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> 

Dies öffnet nur eine Eingabeaufforderung Mid-Install und tut nichts damit. Ich habe versucht, hinzuzufügen/c (ich habe keine Ahnung, was es tut) zwischen cmd.exe und dem Befehl, aber das nur öffnet und schließt die Eingabeaufforderung, ohne den Befehl auszuführen. Wie mache ich das? Ich benutze WiX 3.8.

+0

FYI, es wird eine neue HTTP-Erweiterung für die Registrierung eines HTTP-Ports in WiX v3.10/4.0 geben. http://wixtoolset.org/issues/4505/ –

Antwort

10

Ich selbst gelöst, war eigentlich ein UAC/Berechtigungen Problem. Für alle Interessierten hier ist der Arbeitscode:

<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

Ich suchte so viel über das Netz, und Sie sind der erste, den ich gefunden habe, der darauf hinwies, dass 'Execute =" commit "' UAC für 'netsh' while beibehalten wird 'Execute =" sofort "' wird im Benutzermodus ausgeführt. Vielen Dank! –

Verwandte Themen