Correct. I highly suggest reading all the Custom Action content in the MSI SDK. You'll learn all kinds of interesting little facts... like the many limitations of deferred Custom Actions. <smile/>
On Thu, Sep 9, 2010 at 11:56 PM, Fabio Di Lorenzo <fa...@dilorenzo.ch>wrote: > Hi Dave, > > Im not experienced in C/C++ custom actions, but in VBScript you are unable > to access any Property during the deferred sequence. > > You can workaround this with the following trick: > > Create a immediate custom action which reads out the "SourceDir" Property > and places the value into a property with the exactly same name as the > deferred custom action. > > Afterward you should be able to access the value through the "virtual" > property called CustomActionData. > > Kind Regards, > Fabio Di Lorenzo > > On Fri, Sep 10, 2010 at 3:26 AM, Dave DaveLists <dbfli...@gmail.com> > wrote: > > > (Wix 3.5) > > > > I have an installer that places a DLL in the installed program's > > directory and which we call into to do some custom twiddling at the > > end of the install. A bit like this: > > > > <CustomAction Id="InitializeProduct" FileKey="OurDLL.dll" > > DllEntry="InitializeTheProduct" Execute="deferred" Return="ignore" > > Impersonate="no" /> > > <InstallExecuteSequence> > > <Custom Action="InitializeProduct" > > Before="InstallFinalize">WixUI_InstallMode=""</Custom> > > </InstallExecuteSequence> > > > > This has been working great. Inside the function > > "InitializeTheProduct" function in the DLL, I now wish to call > > MsiGetProperty to get the SOURCEDIR property but this is failing. I > > found a lot of sample code for calling MsiGetProperty so I copied the > > pattern (abbreviated a bit to keep this post as small as I can): > > > > extern "C" __declspec(dllexport) UINT _stdcall > > InitializeTheProduct(MSIHANDLE hInstaller) > > { > > TCHAR* szValueBuf = NULL; > > DWORD cchValueBuf = 0; > > > > UINT uiStat = MsiGetProperty(hInstaller, TEXT("SOURCEDIR"), > > TEXT(""), &cchValueBuf); > > if (ERROR_MORE_DATA == uiStat) > > { > > ++cchValueBuf; > > szValueBuf = new TCHAR[cchValueBuf]; > > uiStat = MsiGetProperty(hInstaller, TEXT("SourceDir"), > > szValueBuf, &cchValueBuf); > > } > > > > if (szValueBuf != NULL) delete[] szValueBuf; > > return ERROR_SUCCESS; > > } > > > > The behavior of all this is, I get ERROR_MORE_DATA back from the first > > call, as expected, but cchValueBuf is 0. I would have expected a > > different return value if it could not find the property, so a return > > that says, "Your size of 0 isn't big enough, use 0" is interesting. > > The 2nd call actually returns ERROR_SUCCESS, but no property. > > > > I've tried various permutations of SOURCEDIR (SourceDir, [SOURCEDIR]), > > and also tried to reference some custom properties, all with the same > > result. For SourceDir I put in a ResolveSource action to see if that > > was the problem but it wasn't. The log shows valid values for all the > > properties I've tried so I am flummoxed. > > > > Any thoughts out there on similar troubles found? With Google and Bing > > search I found some common problems but none applied. Any thoughts > > apprecitated. Barring that, the reason I am doing this to begin with > > is I need my DLL entry point to know the path to the MSI that called > > it, so is there another way of doing this? > > > > -Dave > > > > > > > ------------------------------------------------------------------------------ > > Automate Storage Tiering Simply > > Optimize IT performance and efficiency through flexible, powerful, > > automated storage tiering capabilities. View this brief to learn how > > you can reduce costs and improve performance. > > http://p.sf.net/sfu/dell-sfdev2dev > > _______________________________________________ > > WiX-users mailing list > > WiX-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wix-users > > > > ------------------------------------------------------------------------------ > Automate Storage Tiering Simply > Optimize IT performance and efficiency through flexible, powerful, > automated storage tiering capabilities. View this brief to learn how > you can reduce costs and improve performance. > http://p.sf.net/sfu/dell-sfdev2dev > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > -- virtually, Rob Mensching - http://RobMensching.com LLC ------------------------------------------------------------------------------ Automate Storage Tiering Simply Optimize IT performance and efficiency through flexible, powerful, automated storage tiering capabilities. View this brief to learn how you can reduce costs and improve performance. http://p.sf.net/sfu/dell-sfdev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users