Wix Installer CAQuietExec Custom Action

I am trying to perform a custom action on a Wix installer to grant permission to bind to an HTTP socket in Windows Server 2008. However, the installer does not work.

<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 crash. 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,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. 

Can anyone shed some light on what's with this team?

+4
source share
2 answers

It turns out that this needs to be done with proper quoting of the command. The line GrantHttpPermission_Cmd required "transition to the executable file, not the entire command, and the [SystemFolder] not required. The 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 other teams were the same.

+9
source

Try the following:

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

If you add the value in quotation marks ("), you will get an invalid command line:

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

All Articles