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="&quot;[CLEANUPTOOL]&quot; &quot;[#FILEID]&quot;"/>
<CustomAction
    Id="Cmd.Cleanup.AtUninstall.FILEID"
    Property="Cleanup.AtUninstall.FILEID"
    Value="&quot;[CLEANUPTOOL]&quot; &quot;[#FILEID]&quot;"/>
<CustomAction
    Id="Cmd.Rollback.FILEID"
    Property="Rollback.FILEID"
    Value="&quot;[CLEANUPTOOL]&quot; &quot;[#FILEID]&quot;"/>
<CustomAction
    Id="Cmd.Process.FILEID"
    Property="Process.FILEID"
    Value="&quot;[PROCESSTOOL]&quot; &quot;[#FILEID]&quot;"/>

<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

Reply via email to