The <Condition> on the components is evaluated during CostFinalize, not
CreateShortcuts. You don't get the shortcuts because the components
installing the shortcuts are not being installed due to the false condition
on them.

I would recommend moving your CheckApplicationLicence custom action sequence
to before CostInitialize (as per the MSDN page on the CostFinalize action).

-----Original Message-----
From: David Allen [mailto:david.al...@1spatial.com] 
Sent: Tuesday, December 22, 2009 3:45 AM
To: 'wix-users@lists.sourceforge.net'
Subject: [WiX-users] Setting properties in custom actions

I am updating an installer for a product that provides multiple applications
and want to change it so that it creates shortcuts only for applications
that have a valid licence.

The basic approach is to define each shortcut in a separate component, to
set a condition on the component based on the value of a property and to
execute a custom action to set an appropriate value for the property based
on the licence before the shortcuts are created.

If I set different values when defining the properties, I can see the
correct shortcuts get created. However, any changes to properties made by
the custom action have no effect.

Within the Product element
- define the applications for which we may wish to create shortcuts
    <?define shortcuts=manage;translate;LAMPS2?>

- define a property for each application
    <?foreach _cut in $(var.shortcuts)?>
      <Property Id="$(var._cut)" Value="0" />
    <?endforeach?>

- declare the custom action
    <CustomAction Id="CheckApplicationLicence"
                  BinaryKey="CheckLicence.vbs"
                  Return="ignore"
                  VBScriptCall="CheckLicence" />
    <Binary Id="CheckLicence.vbs"
            SourceFile="$(var.goth_product_root)\config\CheckLicence.vbs" />

- arrange for it to be invoked on install
    <InstallExecuteSequence>
       <Custom Action="CheckApplicationLicence"
               After="InstallFiles">NOT (REMOVE = "ALL")
       </Custom>
    </InstallExecuteSequence>

- create the desktop shortcuts
    <Property Id="INSTALL_DESKTOP_SHORTCUTS" Value="1"/>
    <DirectoryRef Id="TARGETDIR">
      <Directory Id="DesktopFolder">
        <?foreach _cut in $(var.shortcuts)?>
          <Component Id = "C_DesktopShortCut.$(var._cut)" Guid="*">
          <Condition>
            INSTALL_DESKTOP_SHORTCUTS AND $(var._cut) = 1
          </Condition>

          <?define _prefix="Desktop"?>
          <?include $(var._cut)_shortcut.wxi?>
          <?undef _prefix?>

          <RegistryValue Root="HKCU"
                         Key="Software\1Spatial\Developer\Installed"
                         Name="DesktopShortcuts.$(var._cut)"
                         Type="integer"
                         Value="1"
                         KeyPath="yes"/>
          </Component>
        <?endforeach?>
      </Directory>
    </DirectoryRef>

The custom action VBScript is:

Option Explicit

Function CheckLicence()
   On error resume next

   MsgBox("CheckLicence: " + Session.Property("LAMPS2"))
   Session.Property("LAMPS2") = "1"
   Session.Property("translate") = "1"
   MsgBox("CheckLicence: " + Session.Property("LAMPS2"))
End Function

I see both message boxes pop up, showing that the property has been
modified.  In the log file, it appears this has been executed before the
shortcuts:

InstallFiles: File: Copying new files,  Directory: ,  Size:
Action ended 11:12:25: InstallFiles. Return value 1.
Action 11:12:25: CheckApplicationLicence.
Action start 11:12:25: CheckApplicationLicence.
Action ended 11:12:29: CheckApplicationLicence. Return value 1.
Action 11:12:29: CreateShortcuts. Creating shortcuts
Action start 11:12:29: CreateShortcuts.
CreateShortcuts: Shortcut: Creating shortcuts
Action ended 11:12:29: CreateShortcuts. Return value 1.
Action 11:12:29: WriteRegistryValues. Writing system registry values

If I start with all the properties having a value of 0 and set them to 1 in
the custom action, no shortcuts are created.  If I start with a value of 1
and set them to 0 in the custom action, all the shortcuts are created.

I presume I have made some sort of simple mistake, but I can't see what it
is.  Help much appreciated.

I am using the final (July) release of WiX 3 on Windows XP SP2 32-bit.

David

--
David Allen,
Telephone: +44 (0)1223 420 414



1Spatial Group Limited; Registered in England No. 4785688 VAT Reg. No.
816329821; Registered Office: Cavendish House; 6 Cambridge Business Park;
Cambridge; CB4 0WZ; United Kingdom

http://www.1spatial.com/



1Spatial: unlocking data, empowering business
Making geospatial data current, accessible, easily shared and trusted

www.1spatial.com

1Spatial Group Limited; Registered in England No. 4785688 VAT Reg. No.
816329821; Registered Office: Tennyson House; Cambridge Business Park;
Cambridge; CB4 0WZ; United Kingdom


IMPORTANT NOTICE
 
This e-mail and any files transmitted with it are confidential and intended
solely for the use of the individual or entity to whom they are addressed.
If you have received this e-mail in error please notify the sender
immediately and delete this e-mail from your system. Please note that any
views or opinions presented in this e-mail are solely those of the author
and do not necessarily represent those of 1Spatial Group Limited, its
subsidiaries or associated companies, except where the author specifically
states them to be the views of 1Spatial Group Limited, its subsidiaries or
associated companies. 
 
1Spatial Group Limited, its subsidiaries and associated companies will not
be held liable for any legally binding obligations that are not the subject
of an official 1Spatial purchase order or as part of a contract signed by a
director of one of the aforementioned companies.
 
Although the company has taken reasonable precautions to ensure no viruses
are present in this email, the company cannot accept responsibility for any
loss or damage arising from the use of this email or attachments. You should
understand and accept that, when communicating with us by e-mail, it is not
a totally secure communications medium.

----------------------------------------------------------------------------
--
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to