[wix-users] How to validate something using a product that will be installed during the current installation process

Bob Arnson bob at firegiant.com
Fri Apr 24 18:19:41 PDT 2020


> If that is not possible, then you are going to want to add Validator.exe as well as *all* of its DLL dependencies in to the Binary table. Then you'll want to write a custom action that extracts all of those binaries, writes them to temporary files on disk, executes Validator.exe with appropriate arguments, and finally removes those temporary files.

Oh and don't forget security implications lest your installer be a privilege escalation vehicle.

-----Original Message-----
From: wix-users <wix-users-bounces at lists.wixtoolset.org> On Behalf Of Edwin Castro via wix-users
Sent: Friday, 24 April, 2020 18:29
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Cc: Edwin Castro <egcastr at gmail.com>
Subject: Re: [wix-users] How to validate something using a product that will be installed during the current installation process

The WiX Toolset does not provide a mechanism to do this natively so you must start from first principles. In other words, you have to ask yourself how you would accomplish this with a basic MSI without any other tool support.

The best option is for the Validator.exe and all of its DLL dependencies be provided to you in static lib form so you can write a custom action that can call functions to do the work for you. For installation software you really want everything statically linked to avoid dependencies. This is an opportunity to educate developers who don't know better. If they're providing stuff for you to use, then they should provide stuff that works with the Windows Installer engine rather than trying to force the Windows Installer engine to workaround what is "easy" for development to provide.
Generally speaking the Windows Installer engine is more rigid than developers and very finicky if you try to force it to do things it wasn't meant to do.

If that is not possible, then you are going to want to add Validator.exe as well as *all* of its DLL dependencies in to the Binary table. Then you'll want to write a custom action that extracts all of those binaries, writes them to temporary files on disk, executes Validator.exe with appropriate arguments, and finally removes those temporary files. Effectively you'd be building something similar to what InstallShield does but custom tailored to your specific situation. Of course, this assumes that these files are compressed into the MSI. If they are not, then perhaps you can access them directly from SourceDir but I've never done that and I wouldn't know how to advice you there. In any case, really it is much easier if development provides you static libs you can use in your custom actions. They can still build Validator.exe if they need it at application runtime but they should provide you a static lib you can use.

I should say I made an assumption above that you're working within an MSI context. If you are using a bundle and a bootstrapper application then suggestions would be different. The Windows Installer engine matters less in that scenario but you do need to conform to the WiX Burn engine and the requirements of your chosen bootstrapper application.

--
Edwin G. Castro


On Fri, Apr 24, 2020 at 2:53 PM Tigran Galoyan via wix-users < wix-users at lists.wixtoolset.org> wrote:

> Hi Community,
>
> Let's say my installation package will install two products at the 
> same time. One of the products have let's say Validator.exe that 
> basically needs to be run somewhere in the middle, e.g. after the EULA 
> is accepted, in order to validate if there is a valid license. If 
> there is no license then we cancel the installation at all. If there 
> is a valid license then we install both products (including the product with Validator.exe).
>
> The thing is that InstallShield has something like SUPPORTDIR where it 
> temporarily keeps all the components of all products to be installed 
> during the installation process. Whereas, WiX doesn't support that, 
> for security reasons. So now my task is how could I use that 
> Validator.exe (note it has its dependencies DLLs...) in the middle 
> while it's not installed as part of its product yet and is not 
> available to my custom action to run it and verify the existence of the valid license?
>
> How can I achieve this? Thanks in advance.
>
> Best,
> Tigran
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant 
> http://www.firegiant.com/
>

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/



More information about the wix-users mailing list