[PATCH 1/5] msi/tests: Add tests for external UI callback.

Z Figura z.figura12 at gmail.com
Mon Jun 26 09:17:59 CDT 2017


On 06/26/2017 04:07 AM, Hans Leidekker wrote:
> On Sun, 2017-06-25 at 21:13 -0500, Zebediah Figura wrote:
>> @@ -822,6 +823,8 @@ static UINT package_from_db(MSIHANDLE hdb, MSIHANDLE *handle)
>>       CHAR szPackage[12];
>>       MSIHANDLE hPackage;
>>   
>> +    CoInitialize(NULL);
>> +
>>       sprintf(szPackage, "#%u", hdb);
>>       res = MsiOpenPackageA(szPackage, &hPackage);
>>       if (res != ERROR_SUCCESS)
>> @@ -837,22 +840,39 @@ static UINT package_from_db(MSIHANDLE hdb, MSIHANDLE *handle)
>>           return res;
>>       }
>>   
>> +    CoUninitialize();
>> +
> 
> Why do you need this?

The message tests fail on Windows > 8 if COM is not initialized. This is 
as per MSDN:

"Note  Initialize COM on the same thread before calling the 
MsiOpenPackage, MsiOpenPackageEx, or MsiOpenProduct function."

> 
>> -static void create_test_file(const CHAR *name)
>> +static void create_file_data(LPCSTR name, LPCSTR data, DWORD size)
>>   {
>>       HANDLE file;
>>       DWORD written;
>>   
>>       file = CreateFileA(name, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
>>       ok(file != INVALID_HANDLE_VALUE, "Failure to open file %s\n", name);
>> -    WriteFile(file, name, strlen(name), &written, NULL);
>> +    if (file == INVALID_HANDLE_VALUE)
>> +        return;
>> +
>> +    WriteFile(file, data, strlen(data), &written, NULL);
>>       WriteFile(file, "\n", strlen("\n"), &written, NULL);
>> +
>> +    if (size)
>> +    {
>> +        SetFilePointer(file, size, NULL, FILE_BEGIN);
>> +        SetEndOfFile(file);
>> +    }
>> +
>>       CloseHandle(file);
>>   }
> 
> You're not using this in this patch set.
> 
> 

I use it below (line 261 of the patch) to set the codepage, which I do 
in order to test the correct setting of field 3 of the 
INSTALLMESSAGE_COMMONDATA messages.



More information about the wine-devel mailing list