Classification: Public
Sigh,

This is what I did but my SQL Server database password is STILL showing up in 
the MSI log file, what is weird is that the deferred custom actions that are 
called in the Product.wxs are hidden, but the deferred custom actions in my 
merge module are NOT...

Product.wxs:
<Property Id="MsiLogging" Value="voicewarmupx"/> <Property 
Id="DATABASE_PASSWORD" Hidden="yes" Secure="yes"/>

<CustomAction Id="CA_DataBasePassword.SetProperty" 
Property="CA_DataBasePassword" HideTarget="yes" 
Value="DATABASE_PASSWORD=[DATABASE_PASSWORD]"/>

<CustomAction Id="CA_Set_ConfigUtilStr" Property="CA_SETCONFIGUTILSTR" 
HideTarget="yes" 
Value="KEY0=[DATABASE_USERNAME];KEY1=[DATABASE_PASSWORD];KEY2=[DATABASE_SERVERNAME];KEY3=[DATABASE_NAME];KEY4=[DATABASE_WINDOWSAUTHENTICATION];KEY5=[CONFIGUTIL_SERVICE_PATH];KEY6=MyApp.exe.config"/>

<CustomAction Id="CA_SETCONFIGUTILSTR" BinaryKey="BIN_CustomAction" 
DllEntry="CallUpdateConnectionString" HideTarget="yes" Impersonate="no" 
Execute="deferred" Return="check" />

<InstallExecuteSequence>
<Custom Action="CA_DataBasePassword.SetProperty" After="InstallFiles">NOT 
Installed</Custom> <Custom Action="CA_Set_ConfigUtilStr" 
After="InstallValidate">NOT Installed</Custom> <Custom 
Action="CA_SETCONFIGUTILSTR" After="InstallFiles">NOT Installed</Custom>

In my C# Custom Action DLL:
[CustomAction]
        public static ActionResult CallUpdateConnectionString (Session session)
        {
            string configFileName = null;
            try
            {
                if (session == null)
                {
                    throw new ArgumentNullException("session");
                }

                var cad = session.CustomActionData;

                var userName = cad["KEY0"];
                var userPassword = cad["KEY1"];
                var sqlServer = cad["KEY2"];
                var databaseName = cad["KEY3"];
                var tempStr = cad["KEY4"];
                var serverPath = cad["KEY5"];
                configFileName = cad["KEY6"];
                var windowsAthentication = tempStr == "1";

Am I doing anything wrong?

Steve

-----Original Message-----
From: Fyodor Koryazhkin [mailto:fyodor...@gmail.com]
Sent: June-20-13 7:10 AM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] How to turn off Logging with C# custom actions

Hi,
To prevent CustomActionData to be logged you should add 
*msidbCustomActionTypeHideTarget
*(8192) attribute to CustomAction attributes.

To read CustomActionData you should create property in the following
format: PROPERTY1=VALUE1;PROPERY2=VALUE2;....;PROPERTYn=VALUEn.
Then you read it like this: CustomActionData cad = session.CustomActionData; 
values you read: string VALUE1= cad[PROPERTY1]; string value2= cad[PROPERTY2]; 
Please note that in general case the value can be null and in this case the 
above example will throw an exception. Therefore it is helpful first to check 
if specified element of an array exists.

Regards

Fyodor Koryazhkin

>
> I have database passwords and web app pool username passwords showing 
> up in my MSI log file I have verbose logging on:
> <Property Id="MsiLogging" Value="voicewarmupx"/>
>
> I have the properties set like this:
> <Property Id="DATABASE_PASSWORD" Hidden="yes" Secure="yes"/>
>
> I have my deferred custom action set like this:
> <CustomAction Id="CA_Set_ConfigUtilStr" Property="CA_SETCONFIGUTILSTR"
> HideTarget="yes"
>
> Value="[DATABASE_USERNAME]|[DATABASE_PASSWORD]|[DATABASE_SERVERNAME]|[
> DATABASE_NAME]|[DATABASE_WINDOWSAUTHENTICATION]|[CONFIGUTIL_SERVICE_PA
> TH]|MyApplication.exe.config"/>
>
> <CustomAction Id="CA_SETCONFIGUTILSTR" BinaryKey="BIN_CustomAction"
> DllEntry="CallUpdateServerConnectionString" Impersonate="no"
> Execute="deferred" Return="check" />
>
> <InstallExecuteSequence>
> <Custom Action="CA_SETCONFIGUTILSTR" After="InstallFiles">NOT 
> Installed</Custom>
>
> in my custom action:
>
> [CustomAction]
>         public static ActionResult
> CallUpdateServerConnectionString(Session
> session)
>         {
>             string configFileName = null;
>             try
>             {
>                 if (session == null)
>                 {
>                     throw new ArgumentNullException("session");
>                 }
>
>                 var tempString = GetSessionProperty(session, 
> "CustomActionData", false);
>                 var parts = tempString.Split(new[] { '|' });
>                 var userName = parts[0];
>                 var userPassword = parts[1];
>                 var sqlServer = parts[2];
>                 var databaseName = parts[3];
>                 var tempStr = parts[4];
>                 var serverPath = parts[5];
>                 configFileName = parts[6];
>                 var windowsAthentication = tempStr == "1";
>
> and the function that gets the CustomActionData is:
>
> private static string GetSessionProperty(Session session, string 
> propertyName, bool isCustomActionData)
>         {
>             string sessionProperty = string.Empty;
>
>             try
>             {
>                 if (session == null)
>                 {
>                     throw new ArgumentNullException("session");
>                 }
>
>                 sessionProperty = isCustomActionData ?
> session.CustomActionData[propertyName] : session[propertyName];
>             }
>             catch (Exception ex)
>             {
>                 WriteErrorLogInstall(session, "Exception when 
> executing GetSessionProperty.", ex, true);
>             }
>
>             return sessionProperty;
>         }
>
> if I call the above function with isCustomActionData = true the custom 
> action fails with "index was outside the bounds of the array" so it is 
> false.
>
> the only part in the MSI that logs it is the CustomActionData...
>
> How can I turn logging off when i get the CustomActionData then turn 
> the logging back on?
>
> most likely something VERY simple that I have missed :(
>
> Thanks,
>
> Steve
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users



This message has been marked as Public by Steven Ogilvie on June-20-13 1:11:52 
PM.

The above classification labels were added to the message by TITUS Message 
Classification. 
For more information visit www.titus.com.

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to