I think I have solved this problem. The CA was scheduled in the 
InstallExecuteSequence and was marked as 'deferred' so I created the following 
'Custom Data'.

    <CustomAction Id="SetProperty" Property="CA_CheckCredentials" 
Value="[SERVICEUSER],[SERVICEPASSWORD]" />
    <CustomAction Id="CA_CheckCredentials"
                  Return="check"
                  Execute="deferred"
                  BinaryKey="CustomActionsDLL"
                  DllEntry="CheckCredentials"/>

And scheduled it like (I am trying to follow the instructions on page 133 of 
'WiX: A Developer's Guide to Windows Installer XML' by Nick Ramirez)

    <InstallExecuteSequence>
      <Custom Action="SetProperty" Before="CA_CheckCredentials" />
      <Custom Action="CA_CheckCredentials" After="InstallInitialize" />
    </InstallExecuteSequence>

Now I get the ICE warning:

warning LGHT1076: ICE63: Some action falls between InstallInitialize and 
RemoveExistingProducts.

Is this a "bad" warning? I don't completely understand why this scheduling is 
bad. I would like to know that the credentials are bad *before* the existing 
products are removed.

If I look at the .msi generated with Orca I see that in the 
InstallExecuteSequence table

InstallInitialize                     1500
SetProperty                           1501
CA_CheckCredentials        1502
RemoveExistingProducts 1503

This seems like a valid sequence to me but I am obviously missing something as 
the warning is there for a purpose.

-----Original Message-----
From: Christopher Painter [mailto:chr...@deploymentengineering.com] 
Sent: Wednesday, March 09, 2011 3:30 PM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] C# Custom Action questions

If I had to guess you calling this CA as a ControlEvent off a Dialog / Control 
in your UI sequence.  Am I correct?  If so, it's a known issue that Msi lacks 
the ability to process messages in this scenario.   The workaround is to set a 
dummy property to see a "PROPERTY CHANGED" message in the log file where 
the value is the data you are trying to log.

Chris
 
---
Christopher Painter, Author of Deployment Engineering Blog Have a hot tip, know 
a secret or read a really good thread that deserves attention? E-Mail Me



----- Original Message ----
From: Kevin Burton <kev...@buyseasons.com>
To: General discussion for Windows Installer XML toolset. 
<wix-users@lists.sourceforge.net>
Sent: Wed, March 9, 2011 3:24:17 PM
Subject: [WiX-users] C# Custom Action questions


I have a very simple C# Custom Action that is supposed to verify credentials:

using Microsoft.Deployment.WindowsInstaller;

namespace BuySeasons.BsiServices.Install
{
    public class CustomActions
    {
        [CustomAction]
        public static ActionResult CheckCredentials(Session session)
        {
            session.Log(string.Format("Begin CheckCredentials - {0}/{1}", 
session["SERVICEUSER"], session["SERVICEPASSWORD"]));
            bool valid = false;
            using (PrincipalContext context = new 
PrincipalContext(ContextType.Domain, "ASGARD"))
            {
                valid = context.ValidateCredentials(session["SERVICEUSER"], 
session["SERVICEPASSWORD"]);
            }
            if(valid)
                return ActionResult.Success;
            else
                return ActionResult.Failure;
        }
    }
}
It is included in the WiX Product as

    <Binary Id="CustomActionsDLL"
            
SourceFile="C:\Projects\....\bin\$(var.Configuration)\BrainCustomActions.CA.dll"
 
/>

    <CustomAction Id="CA_CheckCredentials"
                  Return="check"
                  Execute="deferred"
                  BinaryKey="CustomActionsDLL"
                  DllEntry="CheckCredentials"/>

And scheduled as:

    <InstallExecuteSequence>
      <Custom Action="CA_CheckCredentials" After="InstallInitialize" />
    </InstallExecuteSequence>

This all compiles to a .msi without error. I can see CA_CheckCredentials in 
Orca 
just where I want it. But it doesn't seem to be called. I look at the verbose 
log and the closest reference I see is:

Action start 14:56:05: InstallInitialize.
MSI (s) (B0:4C) [14:56:06:052]: Doing action: CA_CheckCredentials
MSI (s) (B0:4C) [14:56:06:052]: Note: 1: 2205 2:  3: ActionText

I don't see the string 'Begin CheckCredentials' as in the code above. What do 
you think I have done wrong?

------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users



      

------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to