In article <414331.22649...@web59815.mail.ac4.yahoo.com>,
    "little.forest" <little.for...@ymail.com>  writes:

> Hmm, can you tell me how to use AppSearch to "locate folders"?

Use <Property> with a nested <DirectorySearch>

> "Use type 19 CA to set properties"  [...]

As pointed out by others, I was wrong in saying type 19, its type 51
(set property) as already mentioned.

Not every CA requires a DLL or EXE -- only DLL/EXE CAs need them.  WiX
exposes a set property CA with <SetProperty>.

You can reuse your upgrade_settings.exe program, but you may find that
its more trouble than its worth because this means creating a custom
action in code and interacting with this external utility to set
properties in the MSI.  You might find it easier to have this upgrade
settings utility invoke msiexec on your MSI with command-line
arguments to set properties for the installation, essentially using
the upgrade settings utility as a bootstrapper.

> And the last question, "to use condition on events to determine dialogs shown
 in a wizard", is it some like this?
>             <Publish Dialog="MyDlg" Control="Back" Event="NewDialog" Value="M
yInstallDirDlg" Order="1">NOT Installed and and REALLY_NEED_UPGRADE_SETTING</Pu
blish>

Yes, but be careful about conditions and the fact that you need to
populate those conditions on the Next button *and* the back button
*and* you need to make sure that the conditions are setup properly so
that dialog transitions are managed properly.  Additionally, you can't
have more than one NewDialog control event on a button, even if the
conditions are mutually exclusive.  You'll get weird behavior if you
try this.

The way to manage complex dialog transitions is to use a property to
hold the name of the dialog you wish to display and conditionally set
this property to the right value.  Then transition to the dialog named
by the property:

For instance, suppose the transition table for the Back button on
MyDlg looks like this:

Target Dialog           Condition
Dialog1                 NOT A AND NOT B
Dialog2                 A AND NOT B
Dialog3                 A AND B
Dialog4                 NOT A AND B

The following <Publish> events show how to implement this logic with a
single NewDialog event on the Back button of MyDlg:

<!-- go to Dialog1 by default -->
<Publish Dialog="MyDlg" Control="Back"
        Property="BackDialog" Value="Dialog1"/>
<Publish Dialog="MyDlg" Control="Back"
        Property="BackDialog" Value="Dialog2">A AND NOT B</Publish>
<Publish Dialog="MyDlg" Control="Back"
        Property="BackDialog" Value="Dialog3">A AND B</Publish>
<Publish Dialog="MyDlg" Control="Back"
        Property="BackDialog" Value="Dialog4">NOT A AND B</Publish>
<Publish Dialog="MyDlg" Control="Back"
        Event="NewDialog" Value="[BackDialog]"/>

Note that the first set property event has no condition, guaranteeing
that the transition is always well defined.  You can also null out the
property and then take the NewDialog transition only when the property
is non-empty:

<!-- go to Dialog1 by default -->
<Publish Dialog="MyDlg" Control="Back" Property="BackDialog" Value="{}"/>
<Publish Dialog="MyDlg" Control="Back"
        Property="BackDialog" Value="Dialog1">NOT A AND NOT B</Publish>
<Publish Dialog="MyDlg" Control="Back"
        Property="BackDialog" Value="Dialog2">A AND NOT B</Publish>
<Publish Dialog="MyDlg" Control="Back"
        Property="BackDialog" Value="Dialog3">A AND B</Publish>
<Publish Dialog="MyDlg" Control="Back"
        Property="BackDialog" Value="Dialog4">NOT A AND B</Publish>
<Publish Dialog="MyDlg" Control="Back"
        Event="NewDialog" Value="[BackDialog]">BackDialog</Publish>

-- 
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
 <http://legalizeadulthood.wordpress.com/the-direct3d-graphics-pipeline/>

      Legalize Adulthood! <http://legalizeadulthood.wordpress.com>

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to