【问题标题】:Wix installer CAQuietExec custom actionWix 安装程序 CAQuietExec 自定义操作
【发布时间】:2011-08-01 10:34:34
【问题描述】:

我正在尝试在 Wix 安装程序中执行自定义操作,以授予在 Windows Server 2008 上绑定到 HTTP 套接字的权限。但是安装程序无法正常工作。

<CustomAction Id="GrantHttpPermission_Cmd" Property="GrantHttpPermission" Value="&quot;[SystemFolder]netsh.exe http add urlacl url=http://+:8732/ user=Service_account&quot;" Execute="immediate"/>
<CustomAction Id="GrantHttpPermission" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" Impersonate="no"/>

...

<InstallExecuteSequence>
  <Custom Action="GrantHttpPermission_Cmd" After="CostFinalize"/>
  <Custom Action="GrantHttpPermission" After="ConfigureUsers">NOT Installed</Custom>
</InstallExecuteSequence>

在调试模式下运行安装程序出现以下故障。我也尝试以管理员身份运行安装程序,输出相同

MSI (s) (14:20) [11:03:00:440]: Executing op: CustomActionSchedule(Action=GrantHttpPermission,ActionType=3073,Source=BinaryData,Target=CAQuietExec,CustomActionData="C:\Windows\SysWOW64\netsh.exe http add urlacl url=http://+:8732/ user=Service_account")
MSI (s) (14:24) [11:03:00:440]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIF794.tmp, Entrypoint: CAQuietExec
CAQuietExec:  Error 0x80070002: Command failed to execute.
CAQuietExec:  Error 0x80070002: CAQuietExec Failed
CustomAction GrantHttpPermission returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 11:03:00: InstallFinalize. Return value 3.

谁能解释一下这个命令是怎么回事?

【问题讨论】:

  • 您是否尝试过在通常的控制台中运行您的命令?它执行得好吗?查看它展开的形式(在日志文件中),并尝试手动运行。
  • Yan,是的,它似乎可以从命令行正确执行。但只能作为管理员。

标签: .net installation wix windows-installer


【解决方案1】:

原来这与正确引用命令有关。 GrantHttpPermission_Cmd 行需要 " 移动到可执行文件周围,而不是整个命令,并且不需要 [SystemFolder] 部分。最终命令如下所示:

<CustomAction Id="GrantHttpPermission_Cmd" Property="GrantHttpPermission" Value="&quot;netsh.exe&quot; http add urlacl url=http://+:8732/ user=Service_account" Execute="immediate"/>

所有其他命令都相同。

【讨论】:

  • 很高兴知道它就是这么简单。现在,当您自己找到它时,您将永远不会忘记它;-)
【解决方案2】:

试试这个:

<CustomAction Id="GrantHttpPermission_Cmd" Property="GrantHttpPermission" Value="[SystemFolder]netsh.exe http add urlacl url=http://+:8732/ user=Service_account" Execute="immediate"/>

如果将值括在引号 (") 中,您将获得无效的命令行:

"C:\Windows\System32\netsh.exe http add urlacl url=http://+:8732/ user=Service_account"

【讨论】:

  • 感谢您的评论,但这会导致安装程序抱怨该命令未使用引号启动。
猜你喜欢
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多