Hi Richard,

Thanks for your reply.

"Additionally, you can't have more than one NewDialog control event on a 
button, even if the conditions are mutually exclusive." - this is interesting. 
Can you tell me where this fact comes from? I googled, it's not mentioned in 
Wix or MSI. Also, I found this post "Customized UI's for 
WiX"(http://neilsleightholm.blogspot.com/2008/08/customised-uis-for-wix.html ). 
There is code like this - you see Niel Sleightholm does have two NewDialog 
control event for one button:
      <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" 
Value="MaintenanceTypeDlg" 
               Order="1">WixUI_InstallMode = "Change"</Publish>
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" 
Value="SetupTypeDlg" 
               Order="2">WixUI_InstallMode = "InstallCustom"</Publish>Thanks.
/Brian



________________________________
From: Richard <legal...@xmission.com>
To: wix-users@lists.sourceforge.net
Sent: Tuesday, October 20, 2009 9:44:55 PM
Subject: Re: [WiX-users] How to detect files presence and conditionally show a 
new added dialog page


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



      __________________________________________________________________
Looking for the perfect gift? Give the gift of Flickr! 

http://www.flickr.com/gift/
------------------------------------------------------------------------------
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