WiX:如何在安装后执行命令行命令

Wea*_*159 9 installer custom-action wix

我需要在安装后注册一个HTTP端口,但我想这可以抽象为通常执行任何命令行命令.这是我到目前为止所得到的:

<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>
Run Code Online (Sandbox Code Playgroud)

这只是在安装中打开一个命令提示符,并且不执行任何操作.我尝试在cmd.exe和命令之间添加/ c(我不知道它做了什么)但只是打开并关闭命令提示符而不执行命令.我该如何工作?我正在使用WiX 3.8.

Wea*_*159 14

解决了自己,实际上是一个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>
Run Code Online (Sandbox Code Playgroud)

  • 我在网上搜索了这么多,你是我发现的第一个指出``Execute ="commit"`将保留UAC为`netsh`而'Execute ="immediate"`在用户模式下运行.谢谢! (3认同)