[wix-users] CustomAction does not seem to be called from the msi

Edwin Castro egcastr at gmail.com
Tue Feb 7 11:13:15 PST 2017


On Tue, Feb 7, 2017 at 12:13 AM, Urban Olars <urban.olars at gmail.com> wrote:
> Hi,
>
> I am trying to learn how to write custom actions in C++ and how to use them
> in my msi installation project. Unfortunately with no luck so far. I have
> looked at numerous examples I have found on internet but still have not
> found out what I am doing wrong. I kindly ask for input from someone on
> this mailing list. Thank you in advance.
>
>
> This is part of the code in my *.wxs file:
> <Binary Id="CAICRoot"
> SourceFile="..\CustomActions\CustomActions\bin\Release\CustomActions.dll" />
> <CustomAction Id="IronCADRootDirectory" BinaryKey="CAICRoot"
> DllEntry="GetICRootDir" Execute="firstSequence" HideTarget="no" />
>
> <InstallExecuteSequence>
> <Custom Action='IronCADRootDirectory' Before='InstallInitialize'/>
> <RemoveExistingProducts Before="InstallInitialize"></RemoveExistingProducts>
> </InstallExecuteSequence>
>
> <Condition Message="IronCAD root directory not found. Installation
> aborting">
> <![CDATA[ICROOTDIR]]>
> </Condition>
> ...
> ...
>

Check the InstallExecuteSequence table in your compiled MSI in Orca or
InstEdit. I expect that the LaunchConditions action is scheduled to
run before IronCADRootDirectory. In other words, you are checking if
the ICROOTDIR property is set well before your custom action runs. If
this is the case then scheduling the custom action before
LaunchConditions should fix it:

<InstallExecuteSequence>
  <Custom Action="IronCADRootDirectory" Before="LaunchConditions"/>
</InstallExecuteSequence>

--
Edwin G. Castro



More information about the wix-users mailing list