【问题标题】:WiX: How to execute a command line command after installationWiX:安装后如何执行命令行命令
【发布时间】:2014-10-15 08:55:38
【问题描述】:

我需要在安装后注册一个 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>

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

【问题讨论】:

标签: wix installation custom-action


【解决方案1】:

自己解决了,实际上是 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>

【讨论】:

  • 我在网上搜索了很多,你是我发现的第一个指出Execute="commit" 将保留 UAC 为netshExecute="immediate" 在用户模式下运行。谢谢!
  • Impersonate="no" 成功了,仅供参考link
  • 我知道我们避免使用无用的 cmets,但是...谢谢@Weatherman159 !!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 2015-11-29
  • 2017-04-19
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
相关资源
最近更新 更多