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

Justin Cox cox.justin.a at gmail.com
Thu Feb 9 20:04:55 PST 2017


Best place to check is the custom action tutorial by firegiant. There's a
few nuanced steps with assembly info and references you need to do to get
it to build. I use it as a guide every time.

On Thu, Feb 9, 2017, 8:17 AM Hoover, Jacob <Jacob.Hoover at greenheck.com>
wrote:

> Be aware, a user can install without the UI sequence running. Your CA
> should be scheduled to run in both, and you should determine why it wasn't
> working inside the InstallExecute sequence.
>
> -----Original Message-----
> From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf
> Of Urban Olars
> Sent: Thursday, February 09, 2017 5:53 AM
> To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
> Subject: Re: [wix-users] CustomAction does not seem to be called from the
> msi
>
> I finally found the problem. The <Custom Action="IronCADRootDirectory"
> Before="AppSearch" /> has to be inside an InstallUISequence> tag, not
> inside the <InstallExecuteSequence> tag like I had done. The result from my
> incorrect way of doing it was that the custom action got executed way too
> late.
>
> Thank you all for the help.
>
> 2017-02-07 9:13 GMT+01:00 Urban Olars <urban.olars at gmail.com>:
>
> > 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> ...
> > ...
> >
> >
> > This is part of the code in my custom action dll:
> > UINT __stdcall GetICRootDir(MSIHANDLE hInstall) { MessageBox(NULL ,
> > _T("It got called!") , _T("Title") , MB_OK); HRESULT hr = S_OK; UINT
> > er = ERROR_SUCCESS; // Initialize WiX Custom Action hr =
> > WcaInitialize(hInstall, "GetICRootDir"); ExitOnFailure(hr, "Failed to
> > initialize"); WcaLog(LOGMSG_STANDARD, "Initialized.");
> >
> > if (hr == ERROR_SUCCESS)
> > {
> > LPWSTR lpwString = L"C:\\Program Files\\IronCAD";           // This is
> > just for testing. In reality I will look it up in the registry and cut
> > away part of the string hr = ::WcaSetProperty(TEXT("ICROOTDIR"),
> > lpwString); ExitOnFailure(hr, "Failed to set property"); } ...
> > ...
> >
> >
> > My msi project builds without errors but when I run the msi file, it
> > always stops at the condition message. Obviously, no property called
> > ICROOTDIR has been set. I added code for a message box in the custom
> > dll so I should know that the function at least gets called but this
> > message box has never showed up so far. My assumption is therefore
> > that I have missed something fundamental so the custom dll never even
> gets called.
> >
> > I have added the entrypoint in the *.def file of my custom dll project:
> > LIBRARY "CustomActions"
> >
> > EXPORTS
> >
> > GetICRootDir
> >
> >
> > I haven't learnt yet how to log what is happening but I guess I will
> > have to unless someone of you can see right away what the problem is.
> >
> >
> >
> > Regards
> > Urban Olars
> >
>
>
>
> --
> /Urban Olars
>
> ____________________________________________________________________
> 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