Here is a code snippet in my ReplaceEula Custom Action.
This is not a part of the full working code but you may understand the logic to 
change text in ScrollableText. This custom action is an immediate custom action 
and sequenced before the main dialog.

I hope this helps for your needs.

Regards,

Chesong Lee


UINT __stdcall
ReplaceEula(MSIHANDLE hInstall)
{
        //
        // Fill lpEula in RTF format as you wish
        //
        // EULA File Content is MBCS (RTF) not Unicode
        //
        XTL::AutoProcessHeapPtr<CHAR> lpEula = pReadEulaFromFile(hInstall);
        if (NULL == (LPSTR) lpEula)
        {
                pMsiLogMessage(
                        hInstall, 
                        _T("EULACA: ReadEulaFromFile failed, error=0x%X"), 
                        GetLastError());

                return ERROR_INSTALL_FAILURE;
        }

        //
        // Replacing EULA text control in the database
        //
        PMSIHANDLE hDatabase = MsiGetActiveDatabase(hInstall);

        if (0 == hDatabase)
        {
                pMsiLogMessage(
                        hInstall, 
                        _T("EULACA: MsiGetActiveDatabase failed, error=0x%X"), 
                        GetLastError());

                return ERROR_INSTALL_FAILURE;
        }

        PMSIHANDLE hView;
        LPCTSTR query = _T("SELECT * FROM `Control` ")
                _T(" WHERE `Dialog_` = 'LicenseAgreement' AND `Control` = 
'Memo' ");
        UINT ret = MsiDatabaseOpenView(hDatabase, query, &hView);

        if (ERROR_SUCCESS != ret)
        {
                pMsiLogMessage(
                        hInstall, 
                        _T("EULACA: MsiDatabaseOpenView failed, error=0x%X"), 
                        ret);

                return ERROR_INSTALL_FAILURE;
        }

        ret = MsiViewExecute(hView, 0);

        if (ERROR_SUCCESS != ret)
        {
                pMsiLogMessage(
                        hInstall, 
                        _T("EULACA: MsiViewExecute failed, error=0x%X"), 
                        ret);

                return ERROR_INSTALL_FAILURE;
        }

        PMSIHANDLE hRecord;
        ret = MsiViewFetch(hView, &hRecord);

        if (ERROR_SUCCESS != ret)
        {
                pMsiLogMessage(
                        hInstall, 
                        _T("EULACA: MsiViewFetch failed, error=0x%X"), 
                        ret);

                return ERROR_INSTALL_FAILURE;
        }

        ret = MsiViewModify(hView, MSIMODIFY_DELETE, hRecord);

        if (ERROR_SUCCESS != ret)
        {
                pMsiLogMessage(
                        hInstall, 
                        _T("EULACA: MsiViewModify failed, error=0x%X"), 
                        ret);

                return ERROR_INSTALL_FAILURE;
        }

        //
        // 10th field is the Text column
        //
        // Dialog_, Control, Type, X, Y, 
        // Width, Height, Attributes, Property, Text
        // Control_Next, Help
        //
        ret = MsiRecordSetStringA(hRecord, 10, lpEula);
        
        if (ERROR_SUCCESS != ret)
        {
                pMsiLogMessage(
                        hInstall, 
                        _T("EULACA: MsiRecordSetString failed, error=0x%X"), 
                        ret);

                return ERROR_INSTALL_FAILURE;
        }

        //
        // Commit the changes temporarily
        //
        ret = MsiViewModify(hView, MSIMODIFY_INSERT_TEMPORARY, hRecord);
        
        if (ERROR_SUCCESS != ret)
        {
                pMsiLogMessage(
                        hInstall, 
                        _T("EULACA: MsiViewModify failed, error=0x%X"), 
                        ret);

                return ERROR_INSTALL_FAILURE;
        }

        pMsiLogMessage(
                hInstall,
                _T("EULACA: EULA is replaced successfully."));

        return ERROR_SUCCESS;
}

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of JosephMM
Sent: Monday, August 21, 2006 3:00 PM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] WcaAddTempRecord with ScrollableText


Since the Text attribute does not accept properties I was hoping to use a
Custom Action to adjust the text based on the value of a bunch of public
properties. I was looking through the Wix
Tutorial(http://www.tramontana.co.hu) and found a Custom Action that was
changing some Text of a
ListBox(http://www.tramontana.co.hu/wix/lesson10.php). 

Right now I'm starting simple. I was just trying to figure out how to set
the Text attribute of the ScrollableText Control with WcaAddTempRecord()
instead of a ListBox like in lesson 10. Is it possible to use
WcaAddTempRecord() to change the Text attribute? If so, then how? If not,
then are there any alternatives?

I am using Wix 2.0 and I linked the DLL I made with the WiX *.lib files and
the msi.lib file

Here is my broken code:

extern "C" UINT __stdcall FillListbox (MSIHANDLE hInstall) {
  HRESULT hResult = WcaInitialize (hInstall, "testText");
  if (FAILED (hResult)) return ERROR_INSTALL_FAILURE;

  MSIHANDLE hTable = NULL;
  MSIHANDLE hColumns = NULL;

  hResult = WcaAddTempRecord (&hTable, &hColumns, L"ScrollableText", 0, 2,
   
L"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0
Arial;}}
    \viewkind4\uc1\pard\f0\fs20 My Text\par}");

  if (hTable)
    MsiCloseHandle (hTable);
  if (hColumns)
    MsiCloseHandle (hColumns);
  return WcaFinalize (hResult);
}

and here is my Dialog from my .wxs file:
...
    <UI>
      <Dialog Id="WelcomeDialog" Width="370" Height="270"
Title="[ProductName] 
         [Setup]" NoMinimize="yes">

        <Control Id="Exit" Type="PushButton"
          X="236" Y="243" Width="56" Height="17"
          Disabled="no"
          Default="yes" Text="Exit">
          <Publish Event="EndDialog" Value="Exit" >1</Publish>
        </Control>

        <Control Id="FilledListbox" Type="ListBox" 
          Sorted="yes" Property="LISTBOXVALUES" 
          X="10" Y="50" 
          Width="200" Height="130" />

        <Control Id="testText" Type="ScrollableText" Text="1"
          X="10" Y="10"
          Sunken ="yes" Disabled="no" 
          Width="300" Height="200">
        </Control>

      </Dialog>
    </UI>
...

and here is the error i recieved in the log file:
testText:  Error 0x8007064f: failed to open view on database
testText:  Error 0x8007064f: failed to openexecute temp view with query
SELECT * FROM `ScrollableText`

I appreciate any information you can give me on how to use the
WcaAddTempRecord. Thank you!
-- 
View this message in context: 
http://www.nabble.com/WcaAddTempRecord-with-ScrollableText-tf2142018.html#a5912684
Sent from the wix-users forum at Nabble.com.


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to