[wix-devs] Strange requirement

Bob Arnson bob at firegiant.com
Thu Mar 17 10:39:41 PDT 2016


It also avoids trivial hijacking (e.g., c:\program.exe).

> -----Original Message-----
> From: wix-devs [mailto:wix-devs-bounces at lists.wixtoolset.org] On Behalf Of
> Hoover, Jacob
> Sent: Thursday, 17 March, 2016 12:32
> To: WiX Toolset Developer Mailing List <wix-devs at lists.wixtoolset.org>
> Subject: [wix-devs] Strange requirement
> 
> I have a new challenge to replace a legacy install shield non-msi installer with
> a MSI.  I've accomplished most feats except for uninstalling the old install.  I
> thought it would be as easy as a RegSearch for the UninstallString in which I
> can invoke its uninstaller deferred right after InstallExecute.  The problem I
> ran into is that any of the *Exec (CAQuietExec) CA's exposed by WIXCA have
> the artificial requirement that they must start with a quote.
> 
> QtExec.ca @ Line 73:
>     if (L'"' != **ppwzCommand)
>     {
>         WcaLog(LOGMSG_STANDARD, "Command string must begin with quoted
> application name.");
>         ExitOnFailure(hr = E_INVALIDARG, "invalid command line property
> value");
>     }
> 
> I understand why this was added (to prevent commands with spaces in them
> from failing to run), but I challenge if it's really useful. Since in the end we just
> pass the unparsed command to QuietExecEx, which then passes it to
> CreateProcessW, can we not just rely on the HRESULT of it? In my use case,
> the path being returned from the RegistrySearch starts with
> C:\windows\uninst.exe which due to it's lack of spaces does not require
> quotes to execute.
> 
> Thanks,
> Jacob
> 
> __________________________________________________________
> __________
> WiX Toolset Developer Mailing List provided by FireGiant
> http://www.firegiant.com/


More information about the wix-devs mailing list