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=""[TempFolder]UpdateLog.txt" UpdateAppConfig "[DASLocation]myexec.exe.Config"" 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=""myexec.exe" "[TempFolder]UpdateLog.txt" "UpdateAppConfig" "[DASLocation]myexec.exe.Config"" 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=""[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