I have a large number of files that need to be processed one file at a time by an internal EXE tool at install-time. Currently I’m trying to generate custom actions for each file as follows (as in http://damianblog.com/2008/02/21/configuring-http-namespace-reservations-on-vista-using-wix/):
<CustomAction Id="Cmd.Cleanup.AtInstall.FILEID" Property="Cleanup.AtInstall.FILEID" Value=""[CLEANUPTOOL]" "[#FILEID]""/> <CustomAction Id="Cmd.Cleanup.AtUninstall.FILEID" Property="Cleanup.AtUninstall.FILEID" Value=""[CLEANUPTOOL]" "[#FILEID]""/> <CustomAction Id="Cmd.Rollback.FILEID" Property="Rollback.FILEID" Value=""[CLEANUPTOOL]" "[#FILEID]""/> <CustomAction Id="Cmd.Process.FILEID" Property="Process.FILEID" Value=""[PROCESSTOOL]" "[#FILEID]""/> <CustomAction Id="Cleanup.AtInstall.FILEID" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/> <CustomAction Id="Cleanup.AtUninstall.FILEID" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="ignore" Impersonate="no"/> <CustomAction Id="Rollback.FILEID" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="rollback" Return="ignore" Impersonate="no"/> <CustomAction Id="Process.FILEID" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" Impersonate="no"/> <InstallExecuteSequence> <Custom Action="Cmd.Cleanup.AtInstall.FILEID" After="CostFinalize"/> <Custom Action="Cmd.Cleanup.AtUninstall.FILEID" After="CostFinalize"/> <Custom Action="Cmd.Rollback.FILEID" After="CostFinalize"/> <Custom Action="Cmd.Process.FILEID" After="CostFinalize"/> <Custom Action="Cleanup.AtUninstall.FILEID" Before="RemoveFiles"> <![CDATA[REMOVE AND $COMPIDFORFILEID = 2]]> </Custom> <Custom Action="Rollback.FILEID" After="InstallFiles"> <![CDATA[NOT REMOVE]]> </Custom> <Custom Action="Cleanup.AtInstall.FILEID" After="Rollback.FILEID"> <![CDATA[NOT REMOVE]]> </Custom> <Custom Action="Process.FILEID" After="Cleanup.AtInstall.FILEID"> <![CDATA[NOT REMOVE]]> </Custom> </InstallExecuteSequence> What I really, would like to do is do something like this: <CustomTable Id="ProcessFile"> <Row> <Data Column="File_">FILEID1</Data> </Row> <Row> <Data Column="File_">FILEID2</Data> </Row> <!-- ...And so on... --> </CustomTable> And I'd like to have a custom action that enumerates through the ProcessFile table, check each File_'s associated component to determine whether the file should be processed or not, then perform the equivalent of CAQuietExec for the winning files. If I understand correctly I need to two custom actions: one for scheduling (immediate action), and one for doing the work (deferred action). What exactly gets scheduled in the scheduling custom action? How does the processing custom action figure out which files to process if it can't access the MSI db? Edwin G. Castro Software Developer - Staff Electronic Banking Services Fiserv Office: 503-746-0643 Fax: 503-617-0291 www.fiserv.com Please consider the environment before printing this e-mail ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users