开发者

Wix installer CAQuietExec custom action

开发者 https://www.devze.com 2023-03-25 13:33 出处:网络
I\'m trying to execute a custom action in a Wix installer, to grant permission to bind to a HTTP socket, on Windows Server 2008. However the installer isn\'t quite working.

I'm trying to execute a custom action in a Wix installer, to grant permission to bind to a HTTP socket, on Windows Server 2008. However the installer isn't quite working.

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

Running the installer in debug mode I get the following failure. I also tried running the installer as Administrator, with the same output

MSI (s) (14:20) [11:03:00:440]: Executing op: CustomActionSchedule(Action=GrantHttpPermission,ActionType=3073,Source=BinaryData,Tar开发者_如何学Cget=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.

Can anyone shed any light on what's up with that command?


Turns out it was to do with correctly quoting the command. The GrantHttpPermission_Cmd line needed the " moving to around the executable, not the entire command, and the [SystemFolder] part was not required. Final command looked like this:

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

All the other commands were the same.


Try this:

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

If you enclose the value in quotes (&quot;), you will get an invalid command line:

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

精彩评论

暂无评论...
验证码 换一张
取 消