Things in the Binary table are only extracted when other code calls the APIs
to extract them, so the/a custom action would be required to know to get it
from there. To make it more complicated, the extraction code must be run
from an immediate action, so an immediate/deferred pair (immediate to
"stream" the binary content into the CustomActionData and the deferred to
write it to disk/run it/cleanup) is required to perform the activity
securely. QtExec doesn't do that.

If someone hasn't already written something like that and released it, I'm
more than willing to, but I'll need some contribution to cover my time...

-----Original Message-----
From: Leigh Wetmore [mailto:lwetm...@gmail.com] 
Sent: Thursday, June 17, 2010 10:29 AM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Quiet Execution of an executable embedded within the
MSI

Hello,

I'm trying to figure out how to quietly execute (QtExec) an executable that
I include within my MSI yet do not want installed on the user's machine.

I've been able to achieve this without using the quiet execute feature, but
I don't like the command window popping up during installation.  Here is the
code for that:

    <Binary Id="CfgUpdateExe" SourceFile="..\bin\myexe.exe" />

    <CustomAction
      Id="LaunchCfgUpdateExe"
      BinaryKey="CfgUpdateExe"
      ExeCommand="&quot;[TempFolder]UpdateLog.txt&quot; UpdateAppConfig
 &quot;[DASLocation]myexec.exe.Config&quot;"
      Execute="deferred"
      Impersonate="no"
      Return="asyncNoWait" />

    <InstallExecuteSequence>
      <Custom Action="LaunchCfgUpdateExe"
After="InstallInitialize">OLDERVERSIONDETECTED</Custom>
    </InstallExecuteSequence>

I use the binary element to bring the executable (myexe.exe) into the MSI,
then launch a custom action with the necessary arguments.  I have it
executing as deferred with no impersonation as I need the admin privileges
already captured by the installer to carry through to the executable.
 Again, this works fine.

However, if I try to convert this to use QtExec, I'm unable to get it to
work.  Looking in the MSI install log, I see:

CAQuietExec:  Error 0x80070002: Command failed to execute.
CAQuietExec:  Error 0x80070002: CAQuietExec Failed

Here is my code so far:

    <Binary Id="CfgUpdateExe" SourceFile="..\bin\myexec.exe" />

    <CustomAction
      Id="QtExecCommand"
      Property="QtExecUserCfg"
      Value="&quot;myexec.exe&quot; &quot;[TempFolder]UpdateLog.txt&quot;
&quot;UpdateAppConfig&quot; &quot;[DASLocation]myexec.exe.Config&quot;"
      Execute="immediate" />
    <CustomAction Id="QtExecUserCfg" BinaryKey="WixCA"
DllEntry="CAQuietExec" Execute="deferred" Impersonate="no" Return="check"/>

    <InstallExecuteSequence>
      <Custom Action="QtExecCommand"
After="CostFinalize">OLDERVERSIONDETECTED</Custom>
      <Custom Action="QtExecUserCfg"
After="InstallInitialize">OLDERVERSIONDETECTED</Custom>
    </InstallExecuteSequence>

I've left the binary element there, but I don't think the custom actions
know about it.  It looks like QtExec can't find the executable which makes
sense (I can have it run notepad.exe no problem).  I'm thinking maybe the
files in the MSI, including myexec.exe, get extracted to a temp directory
during installation, and I can potentially reference it, like
Value="&quot;[MSITempDir]myexec.exe...?

Thanks in advance for any help anyone can provide.

Leigh
----------------------------------------------------------------------------
--
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to