MSI query tests

EA Durbin ead1234 at hotmail.com
Thu Jun 1 21:51:20 CDT 2006


1. The conformance test suite must run on Windows. This is necessary to 
provide a reasonable way to verify its accuracy. Furthermore the tests must 
pass successfully on all Windows platforms (tests not relevant to a given 
platform should be skipped).

I don't know how I would run this on windows. I edited the wine code itself 
and queried tables in the MSI database to troubleshoot the behavior of the 
installer code. Then i retrieved the pertainent values from the results, as 
in the case of the file table i retrieved the sequence value being returned 
by the query

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/file_table.asp

    MSIQUERY * view;
    static const WCHAR ExecSeqQuery[] =
        {'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ',
         '`','F','i','l','e','`',' ','W','H','E','R','E',' 
','`','S','e','q','u','e','n','c','e','`',' ','>','=',' ','8',0};

    rc = MSI_DatabaseOpenViewW( package->db, ExecSeqQuery, &view );
    if ( rc != ERROR_SUCCESS )
        return ERROR_SUCCESS;

    TRACE( "DEBUGGING SELECT * FROM File WHERE Sequence >= 8 \n" );
    rc = MSI_IterateRecords( view, NULL, ITERATE_QueryTest, package );
    return rc;


static UINT ITERATE_QueryTest( MSIRECORD *row, LPVOID param )
{
    MSIPACKAGE *package = (MSIPACKAGE*)param;
    int fileSequence;
    fileSequence = MSI_RecordGetInteger( row, 8 );
    TRACE( "File Sequence: %i \n", fileSequence );
    return ERROR_SUCCESS;
}

and the Media table i returned the DiskId, cabinet, and LastSequence values 
from the results

http://msdn.microsoft.com/library/en-us/msi/setup/media_table.asp?frame=true

static UINT ITERATE_QueryTest( MSIRECORD *row, LPVOID param )
{
    MSIPACKAGE *package = (MSIPACKAGE*)param;
    int lastSequence, DiskId;
    LPWSTR cab;

    lastSequence = MSI_RecordGetInteger( row, 2 );
    DiskId = MSI_RecordGetInteger( row, 1);
    cab = MSI_RecordGetString( row, 4)

    TRACE( " Last Sequence: %u \n", lastSequence );
    TRACE( " CAB %s \n", debugstr_w( cab ) );
    TRACE( " Disk ID %u \n", DiskId );
    return ERROR_SUCCESS;
}




>From: "Dan Kegel" <dank at kegel.com>
>To: "EA Durbin" <ead1234 at hotmail.com>
>CC: wine-devel at winehq.org
>Subject: Re: MSI query tests
>Date: Thu, 1 Jun 2006 19:34:12 -0700
>
>On 6/1/06, EA Durbin <ead1234 at hotmail.com> wrote:
>>
>> >Great.  Can you package up the tests as Wine conformance tests?
>>
>>I'm new to wine, how do I accomplish this?
>
>http://winehq.org/site/docs/winedev-guide/testing
>has an introduction to the subject.
>- Dan
#





More information about the wine-devel mailing list