The traditional way to do this (discussed on this list a few times a few years 
ago) is a little hacky, but works well enough.

1) Put your executable in a self-extracting archive, using iexpress for example;

2) execute the self-extracting archive from the binary table in a 'quiet' mode, 
putting your executable in a well-known place (such as [TempFolder]);

3) use CAQuietExec to run your program from the well-known place;

4) use CAQuietExec to delete your program from the well-known place.

> -----Original Message-----
> From: Pally Sandher [mailto:pally.sand...@iesve.com] 
> Sent: Friday, June 18, 2010 4:29 AM
> To: General discussion for Windows Installer XML toolset.
> Subject: Re: [WiX-users] Quiet Execution of an executable 
> embedded within the MSI
> 
> Binary Elements are extracted to temporary directories using auto
> generated filenames (see a verbose log for an example). It's not
> possible to use an application in a Binary Element with 
> QtExec (I looked
> at the same thing a while ago for a plug-in installer). You'll either
> need to change it to use a File Element & modify the 
> CustomAction to use
> [#fileid] instead of "myexec.exe" or live without 
> QtExec or as
> Blair says, write your own Custom Actions to write the Binary 
> to disk in
> a known location so QtExec can run it.
> 
> Palbinder Sandher 
> Software Deployment & IT Administrator
> T: +44 (0) 141 945 8500 
> F: +44 (0) 141 945 8501 
> 
> http://www.iesve.com 
> **Design, Simulate + Innovate with the <Virtual Environment>**
> Integrated Environmental Solutions Limited. Registered in Scotland No.
> SC151456 
> Registered Office - Helix Building, West Of Scotland Science Park,
> Glasgow G20 0SP
> Email Disclaimer
> 
> -----Original Message-----
> From: Leigh Wetmore [mailto:lwetm...@gmail.com] 
> Sent: 17 June 2010 18:29
> 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
> 
------------------------------------------------------------------------------
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