[ros-diffs] [cwittich] 44692: sync msi_winetest with wine 1.1.35

cwittich at svn.reactos.org cwittich at svn.reactos.org
Tue Dec 22 10:14:17 CET 2009


Author: cwittich
Date: Tue Dec 22 10:14:17 2009
New Revision: 44692

URL: http://svn.reactos.org/svn/reactos?rev=44692&view=rev
Log:
sync msi_winetest with wine 1.1.35

Modified:
    trunk/rostests/winetests/msi/automation.c
    trunk/rostests/winetests/msi/db.c
    trunk/rostests/winetests/msi/format.c
    trunk/rostests/winetests/msi/install.c
    trunk/rostests/winetests/msi/msi.c
    trunk/rostests/winetests/msi/package.c
    trunk/rostests/winetests/msi/record.c
    trunk/rostests/winetests/msi/suminfo.c

Modified: trunk/rostests/winetests/msi/automation.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/automation.c?rev=44692&r1=44691&r2=44692&view=diff
==============================================================================
--- trunk/rostests/winetests/msi/automation.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msi/automation.c [iso-8859-1] Tue Dec 22 10:14:17 2009
@@ -34,8 +34,8 @@
 
 DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
 
-static const char *msifile = "winetest.msi";
-static const WCHAR szMsifile[] = {'w','i','n','e','t','e','s','t','.','m','s','i',0};
+static const char *msifile = "winetest-automation.msi";
+static const WCHAR szMsifile[] = {'w','i','n','e','t','e','s','t','-','a','u','t','o','m','a','t','i','o','n','.','m','s','i',0};
 static const WCHAR szMSITEST[] = { 'M','S','I','T','E','S','T',0 };
 static const WCHAR szProductCode[] = { '{','F','1','C','3','A','F','5','0','-','8','B','5','6','-','4','A','6','9','-','A','0','0','C','-','0','0','7','7','3','F','E','4','2','F','3','0','}',0 };
 static const WCHAR szUpgradeCode[] = { '{','C','E','0','6','7','E','8','D','-','2','E','1','A','-','4','3','6','7','-','B','7','3','4','-','4','E','B','2','B','D','A','D','6','5','6','5','}',0 };
@@ -271,6 +271,27 @@
     MsiCloseHandle(db);
 }
 
+static BOOL create_package(LPWSTR path)
+{
+    DWORD len;
+
+    /* Prepare package */
+    create_database(msifile, tables,
+                    sizeof(tables) / sizeof(msi_table), summary_info,
+                    sizeof(summary_info) / sizeof(msi_summary_info));
+
+    len = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED,
+                              CURR_DIR, -1, path, MAX_PATH);
+    ok(len, "MultiByteToWideChar returned error %d\n", GetLastError());
+    if (!len)
+        return FALSE;
+
+    /* lstrcatW does not work on win95 */
+    path[len - 1] = '\\';
+    memcpy(&path[len], szMsifile, sizeof(szMsifile));
+    return TRUE;
+}
+
 /*
  * Installation helpers
  */
@@ -456,35 +477,32 @@
     ok(dispid  == 1, "Expected 1, got %d\n", dispid);
     dispid = get_dispid(pInstaller, "OpenPackage");
     ok(dispid  == 2, "Expected 2, got %d\n", dispid);
+    dispid = get_dispid(pInstaller, "OpenProduct");
+    ok(dispid  == 3, "Expected 3, got %d\n", dispid);
     dispid = get_dispid(pInstaller, "OpenDatabase");
     ok(dispid == 4, "Expected 4, got %d\n", dispid);
+    dispid = get_dispid(pInstaller, "SummaryInformation");
+    ok(dispid == 5, "Expected 5, got %d\n", dispid);
     dispid = get_dispid( pInstaller, "UILevel" );
     ok(dispid == 6, "Expected 6, got %d\n", dispid);
+    dispid = get_dispid(pInstaller, "EnableLog");
+    ok(dispid == 7, "Expected 7, got %d\n", dispid);
     dispid = get_dispid(pInstaller, "InstallProduct");
     ok(dispid == 8, "Expected 8, got %d\n", dispid);
     dispid = get_dispid(pInstaller, "Version");
     ok(dispid == 9, "Expected 9, got %d\n", dispid);
+    dispid = get_dispid(pInstaller, "LastErrorRecord");
+    ok(dispid == 10, "Expected 10, got %d\n", dispid);
     dispid = get_dispid(pInstaller, "RegistryValue");
     ok(dispid == 11, "Expected 11, got %d\n", dispid);
-    todo_wine
-    {
-        dispid = get_dispid(pInstaller, "OpenProduct");
-        ok(dispid  == 3, "Expected 3, got %d\n", dispid);
-        dispid = get_dispid(pInstaller, "SummaryInformation");
-        ok(dispid == 5, "Expected 5, got %d\n", dispid);
-        dispid = get_dispid(pInstaller, "EnableLog");
-        ok(dispid == 7, "Expected 7, got %d\n", dispid);
-        dispid = get_dispid(pInstaller, "LastErrorRecord");
-        ok(dispid == 10, "Expected 10, got %d\n", dispid);
-        dispid = get_dispid(pInstaller, "Environment");
-        ok(dispid == 12, "Expected 12, got %d\n", dispid);
-        dispid = get_dispid(pInstaller, "FileAttributes");
-        ok(dispid == 13, "Expected 13, got %d\n", dispid);
-        dispid = get_dispid(pInstaller, "FileSize");
-        ok(dispid == 15, "Expected 15, got %d\n", dispid);
-        dispid = get_dispid(pInstaller, "FileVersion");
-        ok(dispid == 16, "Expected 16, got %d\n", dispid);
-    }
+    dispid = get_dispid(pInstaller, "Environment");
+    ok(dispid == 12, "Expected 12, got %d\n", dispid);
+    dispid = get_dispid(pInstaller, "FileAttributes");
+    ok(dispid == 13, "Expected 13, got %d\n", dispid);
+    dispid = get_dispid(pInstaller, "FileSize");
+    ok(dispid == 15, "Expected 15, got %d\n", dispid);
+    dispid = get_dispid(pInstaller, "FileVersion");
+    ok(dispid == 16, "Expected 16, got %d\n", dispid);
     dispid = get_dispid(pInstaller, "ProductState");
     ok(dispid == 17, "Expected 17, got %d\n", dispid);
     dispid = get_dispid(pInstaller, "ProductInfo");
@@ -592,7 +610,8 @@
     DISPID dispid;
     OLECHAR *name;
     VARIANT varresult;
-    VARIANTARG vararg[2];
+    VARIANTARG vararg[3];
+    WCHAR path[MAX_PATH];
     DISPPARAMS dispparams = {NULL, NULL, 0, 0};
 
     /* Test getting ID of a function name that does not exist */
@@ -620,24 +639,159 @@
 
     /* Try with NULL params */
     hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
-    todo_wine ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
+    ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
 
     /* Try one empty parameter */
     dispparams.rgvarg = vararg;
     dispparams.cArgs = 1;
     VariantInit(&vararg[0]);
     hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
-    todo_wine ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
-
-    /* Try one parameter, function requires two */
+    ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
+
+    /* Try two empty parameters */
+    dispparams.cArgs = 2;
+    VariantInit(&vararg[0]);
+    VariantInit(&vararg[1]);
+    hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
+    ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
+
+    /* Try one parameter, the required BSTR.  Second parameter is optional.
+     * NOTE: The specified package does not exist, which is why the call fails.
+     */
+    dispparams.cArgs = 1;
     VariantInit(&vararg[0]);
     V_VT(&vararg[0]) = VT_BSTR;
     V_BSTR(&vararg[0]) = SysAllocString(szMsifile);
     hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
-    VariantClear(&vararg[0]);
-
     ok(hr == DISP_E_EXCEPTION, "IDispatch::Invoke returned 0x%08x\n", hr);
     ok_exception(hr, szOpenPackageException);
+    VariantClear(&vararg[0]);
+
+    /* Provide the required BSTR and an empty second parameter.
+     * NOTE: The specified package does not exist, which is why the call fails.
+     */
+    dispparams.cArgs = 2;
+    VariantInit(&vararg[1]);
+    V_VT(&vararg[1]) = VT_BSTR;
+    V_BSTR(&vararg[1]) = SysAllocString(szMsifile);
+    VariantInit(&vararg[0]);
+    hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
+    ok(hr == DISP_E_EXCEPTION, "IDispatch::Invoke returned 0x%08x\n", hr);
+    ok_exception(hr, szOpenPackageException);
+    VariantClear(&vararg[1]);
+
+    /* Provide the required BSTR and two empty parameters.
+     * NOTE: The specified package does not exist, which is why the call fails.
+     */
+    dispparams.cArgs = 3;
+    VariantInit(&vararg[2]);
+    V_VT(&vararg[2]) = VT_BSTR;
+    V_BSTR(&vararg[2]) = SysAllocString(szMsifile);
+    VariantInit(&vararg[1]);
+    VariantInit(&vararg[0]);
+    hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
+    ok(hr == DISP_E_EXCEPTION, "IDispatch::Invoke returned 0x%08x\n", hr);
+    ok_exception(hr, szOpenPackageException);
+    VariantClear(&vararg[2]);
+
+    /* Provide the required BSTR and a second parameter with the wrong type. */
+    dispparams.cArgs = 2;
+    VariantInit(&vararg[1]);
+    V_VT(&vararg[1]) = VT_BSTR;
+    V_BSTR(&vararg[1]) = SysAllocString(szMsifile);
+    VariantInit(&vararg[0]);
+    V_VT(&vararg[0]) = VT_BSTR;
+    V_BSTR(&vararg[0]) = SysAllocString(szMsifile);
+    hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
+    ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
+    VariantClear(&vararg[0]);
+    VariantClear(&vararg[1]);
+
+    /* Create a proper installer package. */
+    create_package(path);
+
+    /* Try one parameter, the required BSTR.  Second parameter is optional.
+     * Proper installer package exists.  Path to the package is relative.
+     */
+    dispparams.cArgs = 1;
+    VariantInit(&vararg[0]);
+    V_VT(&vararg[0]) = VT_BSTR;
+    V_BSTR(&vararg[0]) = SysAllocString(szMsifile);
+    hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
+    todo_wine ok(hr == DISP_E_EXCEPTION, "IDispatch::Invoke returned 0x%08x\n", hr);
+    ok_exception(hr, szOpenPackageException);
+    VariantClear(&vararg[0]);
+    if (hr != DISP_E_EXCEPTION)
+        VariantClear(&varresult);
+
+    /* Try one parameter, the required BSTR.  Second parameter is optional.
+     * Proper installer package exists.  Path to the package is absolute.
+     */
+    dispparams.cArgs = 1;
+    VariantInit(&vararg[0]);
+    V_VT(&vararg[0]) = VT_BSTR;
+    V_BSTR(&vararg[0]) = SysAllocString(path);
+    hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
+    ok(hr == S_OK, "IDispatch::Invoke returned 0x%08x\n", hr);
+    VariantClear(&vararg[0]);
+    VariantClear(&varresult);
+
+    /* Provide the required BSTR and an empty second parameter.  Proper
+     * installation package exists.
+     */
+    dispparams.cArgs = 2;
+    VariantInit(&vararg[1]);
+    V_VT(&vararg[1]) = VT_BSTR;
+    V_BSTR(&vararg[1]) = SysAllocString(path);
+    VariantInit(&vararg[0]);
+    hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
+    ok(hr == S_OK, "IDispatch::Invoke returned 0x%08x\n", hr);
+    VariantClear(&vararg[1]);
+    VariantClear(&varresult);
+
+    /* Provide the required BSTR and two empty parameters.  Proper
+     * installation package exists.
+     */
+    dispparams.cArgs = 3;
+    VariantInit(&vararg[2]);
+    V_VT(&vararg[2]) = VT_BSTR;
+    V_BSTR(&vararg[2]) = SysAllocString(path);
+    VariantInit(&vararg[1]);
+    VariantInit(&vararg[0]);
+    hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
+    ok(hr == S_OK, "IDispatch::Invoke returned 0x%08x\n", hr);
+    VariantClear(&vararg[2]);
+    VariantClear(&varresult);
+
+    /* Provide the required BSTR and a second parameter with the wrong type. */
+    dispparams.cArgs = 2;
+    VariantInit(&vararg[1]);
+    V_VT(&vararg[1]) = VT_BSTR;
+    V_BSTR(&vararg[1]) = SysAllocString(path);
+    VariantInit(&vararg[0]);
+    V_VT(&vararg[0]) = VT_BSTR;
+    V_BSTR(&vararg[0]) = SysAllocString(path);
+    hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
+    ok(hr == DISP_E_TYPEMISMATCH, "IDispatch::Invoke returned 0x%08x\n", hr);
+    VariantClear(&vararg[0]);
+    VariantClear(&vararg[1]);
+
+    /* Provide the required BSTR and a second parameter that can be coerced to
+     * VT_I4.
+     */
+    dispparams.cArgs = 2;
+    VariantInit(&vararg[1]);
+    V_VT(&vararg[1]) = VT_BSTR;
+    V_BSTR(&vararg[1]) = SysAllocString(path);
+    VariantInit(&vararg[0]);
+    V_VT(&vararg[0]) = VT_I2;
+    V_BSTR(&vararg[0]) = 0;
+    hr = IDispatch_Invoke(pInstaller, dispid, &IID_NULL, LOCALE_NEUTRAL, DISPATCH_METHOD, &dispparams, &varresult, &excepinfo, NULL);
+    ok(hr == S_OK, "IDispatch::Invoke returned 0x%08x\n", hr);
+    VariantClear(&vararg[1]);
+    VariantClear(&varresult);
+
+    DeleteFileW(path);
 
     /* Test invoking a method as a DISPATCH_PROPERTYGET or DISPATCH_PROPERTYPUT */
     VariantInit(&vararg[0]);
@@ -2353,7 +2507,6 @@
     static WCHAR szIntegerDataException[] = { 'I','n','t','e','g','e','r','D','a','t','a',',','F','i','e','l','d',0 };
     WCHAR szPath[MAX_PATH];
     HRESULT hr;
-    UINT len;
     IDispatch *pSession = NULL, *pDatabase = NULL, *pRecord = NULL, *pStringList = NULL;
     int iValue, iCount;
 
@@ -2404,17 +2557,7 @@
         IDispatch_Release(pRecord);
     }
 
-    /* Prepare package */
-    create_database(msifile, tables, sizeof(tables) / sizeof(msi_table),
-                    summary_info, sizeof(summary_info) / sizeof(msi_summary_info));
-
-    len = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, CURR_DIR, -1, szPath, MAX_PATH);
-    ok(len, "MultiByteToWideChar returned error %d\n", GetLastError());
-    if (!len) return;
-
-    /* lstrcatW does not work on win95 */
-    szPath[len - 1] = '\\';
-    memcpy(&szPath[len], szMsifile, sizeof(szMsifile));
+    create_package(szPath);
 
     /* Installer::OpenPackage */
     hr = Installer_OpenPackage(szPath, 0, &pSession);

Modified: trunk/rostests/winetests/msi/db.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/db.c?rev=44692&r1=44691&r2=44692&view=diff
==============================================================================
--- trunk/rostests/winetests/msi/db.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msi/db.c [iso-8859-1] Tue Dec 22 10:14:17 2009
@@ -31,9 +31,10 @@
 
 #include "wine/test.h"
 
-static const char *msifile = "winetest.msi";
-static const char *msifile2 = "winetst2.msi";
-static const char *mstfile = "winetst.mst";
+static const char *msifile = "winetest-db.msi";
+static const char *msifile2 = "winetst2-db.msi";
+static const char *mstfile = "winetst-db.mst";
+static const WCHAR msifileW[] = {'w','i','n','e','t','e','s','t','-','d','b','.','m','s','i',0};
 
 static void test_msidatabase(void)
 {
@@ -921,6 +922,8 @@
     r = MsiViewModify(hview, MSIMODIFY_INSERT_TEMPORARY, hrec );
     ok(r == ERROR_SUCCESS, "MsiViewModify failed\n");
 
+    r = MsiCloseHandle(hrec);
+    ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
     r = MsiViewClose(hview);
     ok(r == ERROR_SUCCESS, "MsiViewClose failed\n");
     r = MsiCloseHandle(hview);
@@ -1758,6 +1761,30 @@
     query = "SELECT * FROM `Media` WHERE `DiskPrompt` IS NULL";
     r = do_query(hdb, query, &rec);
     ok( r == ERROR_SUCCESS, "query failed: %d\n", r );
+    MsiCloseHandle( rec );
+
+    rec = 0;
+    query = "SELECT * FROM `Media` WHERE `DiskPrompt` < 'Cabinet'";
+    r = do_query(hdb, query, &rec);
+    ok( r == ERROR_BAD_QUERY_SYNTAX, "query failed: %d\n", r );
+    MsiCloseHandle( rec );
+
+    rec = 0;
+    query = "SELECT * FROM `Media` WHERE `DiskPrompt` > 'Cabinet'";
+    r = do_query(hdb, query, &rec);
+    ok( r == ERROR_BAD_QUERY_SYNTAX, "query failed: %d\n", r );
+    MsiCloseHandle( rec );
+
+    rec = 0;
+    query = "SELECT * FROM `Media` WHERE `DiskPrompt` <> 'Cabinet'";
+    r = do_query(hdb, query, &rec);
+    todo_wine ok( r == ERROR_SUCCESS, "query failed: %d\n", r );
+    MsiCloseHandle( rec );
+
+    rec = 0;
+    query = "SELECT * FROM `Media` WHERE `DiskPrompt` = 'Cabinet'";
+    r = do_query(hdb, query, &rec);
+    ok( r == ERROR_NO_MORE_ITEMS, "query failed: %d\n", r );
     MsiCloseHandle( rec );
 
     rec = MsiCreateRecord(1);
@@ -5539,6 +5566,8 @@
         ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
         ok(stm != NULL, "Expected non-NULL stream\n");
 
+        CoTaskMemFree(stat.pwcsName);
+
         sz = MAX_PATH;
         memset(data, 'a', MAX_PATH);
         hr = IStream_Read(stm, data, sz, &count);
@@ -5568,8 +5597,6 @@
     HRESULT hr;
     MSIHANDLE hdb;
     IStorage *stg = NULL;
-
-    static const WCHAR msifileW[] = {'w','i','n','e','t','e','s','t','.','m','s','i',0};
 
     DeleteFile(msifile);
 

Modified: trunk/rostests/winetests/msi/format.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/format.c?rev=44692&r1=44691&r2=44692&view=diff
==============================================================================
--- trunk/rostests/winetests/msi/format.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msi/format.c [iso-8859-1] Tue Dec 22 10:14:17 2009
@@ -27,7 +27,7 @@
 
 #include "wine/test.h"
 
-static const char msifile[] = "winetest.msi";
+static const char msifile[] = "winetest-format.msi";
 
 static UINT run_query( MSIHANDLE hdb, const char *query )
 {
@@ -315,17 +315,16 @@
 
 static void test_createpackage(void)
 {
-    static const CHAR filename[] = "winetest.msi";
     MSIHANDLE hPackage = 0;
     UINT res;
 
-    hPackage = helper_createpackage( filename );
+    hPackage = helper_createpackage( msifile );
     ok ( hPackage != 0, " Failed to create package\n");
 
     res = MsiCloseHandle( hPackage);
     ok( res == ERROR_SUCCESS , "Failed to close package\n" );
 
-    DeleteFile( filename );
+    DeleteFile( msifile );
 }
 
 static void test_formatrecord(void)
@@ -1620,14 +1619,13 @@
 
 static void test_formatrecord_package(void)
 {
-    static const CHAR filename[] = "winetest.msi";
     char buffer[100];
     MSIHANDLE hrec;
     MSIHANDLE package;
     UINT r;
     DWORD sz=100;
 
-    package = helper_createpackage( filename );
+    package = helper_createpackage( msifile );
     ok(package!=0, "Unable to create package\n");
 
     hrec = MsiCreateRecord(12);
@@ -2117,7 +2115,7 @@
     r = MsiCloseHandle(package);
     ok(r==ERROR_SUCCESS, "Unable to close package\n");
 
-    DeleteFile( filename );
+    DeleteFile( msifile );
 }
 
 static void test_formatrecord_tables(void)
@@ -2383,12 +2381,11 @@
 
 static void test_processmessage(void)
 {
-    static const CHAR filename[] = "winetest.msi";
     MSIHANDLE hrec;
     MSIHANDLE package;
     int r;
 
-    package = helper_createpackage( filename );
+    package = helper_createpackage( msifile );
     ok(package!=0, "Unable to create package\n");
 
     hrec = MsiCreateRecord(3);
@@ -2403,7 +2400,7 @@
     MsiCloseHandle(hrec);
     MsiCloseHandle(package);
 
-    DeleteFile(filename);
+    DeleteFile(msifile);
 }
 
 START_TEST(format)

Modified: trunk/rostests/winetests/msi/install.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/install.c?rev=44692&r1=44691&r2=44692&view=diff
==============================================================================
--- trunk/rostests/winetests/msi/install.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msi/install.c [iso-8859-1] Tue Dec 22 10:14:17 2009
@@ -162,6 +162,52 @@
                                    "ROOTDRIVE\tC:\\\n"
                                    "SERVNAME\tTestService\n"
                                    "SERVDISP\tTestServiceDisp\n";
+
+static const CHAR aup_property_dat[] = "Property\tValue\n"
+                                       "s72\tl0\n"
+                                       "Property\tProperty\n"
+                                       "DefaultUIFont\tDlgFont8\n"
+                                       "HASUIRUN\t0\n"
+                                       "ALLUSERS\t1\n"
+                                       "INSTALLLEVEL\t3\n"
+                                       "InstallMode\tTypical\n"
+                                       "Manufacturer\tWine\n"
+                                       "PIDTemplate\t12345<###-%%%%%%%>@@@@@\n"
+                                       "ProductCode\t{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}\n"
+                                       "ProductID\tnone\n"
+                                       "ProductLanguage\t1033\n"
+                                       "ProductName\tMSITEST\n"
+                                       "ProductVersion\t1.1.1\n"
+                                       "PROMPTROLLBACKCOST\tP\n"
+                                       "Setup\tSetup\n"
+                                       "UpgradeCode\t{4C0EAA15-0264-4E5A-8758-609EF142B92D}\n"
+                                       "AdminProperties\tPOSTADMIN\n"
+                                       "ROOTDRIVE\tC:\\\n"
+                                       "SERVNAME\tTestService\n"
+                                       "SERVDISP\tTestServiceDisp\n";
+
+static const CHAR aup2_property_dat[] = "Property\tValue\n"
+                                        "s72\tl0\n"
+                                        "Property\tProperty\n"
+                                        "DefaultUIFont\tDlgFont8\n"
+                                        "HASUIRUN\t0\n"
+                                        "ALLUSERS\t2\n"
+                                        "INSTALLLEVEL\t3\n"
+                                        "InstallMode\tTypical\n"
+                                        "Manufacturer\tWine\n"
+                                        "PIDTemplate\t12345<###-%%%%%%%>@@@@@\n"
+                                        "ProductCode\t{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}\n"
+                                        "ProductID\tnone\n"
+                                        "ProductLanguage\t1033\n"
+                                        "ProductName\tMSITEST\n"
+                                        "ProductVersion\t1.1.1\n"
+                                        "PROMPTROLLBACKCOST\tP\n"
+                                        "Setup\tSetup\n"
+                                        "UpgradeCode\t{4C0EAA15-0264-4E5A-8758-609EF142B92D}\n"
+                                        "AdminProperties\tPOSTADMIN\n"
+                                        "ROOTDRIVE\tC:\\\n"
+                                        "SERVNAME\tTestService\n"
+                                        "SERVDISP\tTestServiceDisp\n";
 
 static const CHAR shortcut_dat[] = "Shortcut\tDirectory_\tName\tComponent_\tTarget\tArguments\tDescription\tHotkey\tIcon_\tIconIndex\tShowCmd\tWkDir\n"
                                    "s72\ts72\tl128\ts72\ts72\tS255\tL255\tI2\tS72\tI2\tI2\tS72\n"
@@ -941,6 +987,48 @@
                                                "LaunchConditions\t\t100\n"
                                                "TestAllUsersProp\tALLUSERS AND NOT REMOVE\t50\n";
 
+static const CHAR aup2_install_exec_seq_dat[] = "Action\tCondition\tSequence\n"
+                                                "s72\tS255\tI2\n"
+                                                "InstallExecuteSequence\tAction\n"
+                                                "CostFinalize\t\t1000\n"
+                                                "ValidateProductID\t\t700\n"
+                                                "CostInitialize\t\t800\n"
+                                                "FileCost\t\t900\n"
+                                                "RemoveFiles\t\t3500\n"
+                                                "InstallFiles\t\t4000\n"
+                                                "RegisterUser\t\t6000\n"
+                                                "RegisterProduct\t\t6100\n"
+                                                "PublishFeatures\t\t6300\n"
+                                                "PublishProduct\t\t6400\n"
+                                                "InstallFinalize\t\t6600\n"
+                                                "InstallInitialize\t\t1500\n"
+                                                "ProcessComponents\t\t1600\n"
+                                                "UnpublishFeatures\t\t1800\n"
+                                                "InstallValidate\t\t1400\n"
+                                                "LaunchConditions\t\t100\n"
+                                                "TestAllUsersProp\tALLUSERS=2 AND NOT REMOVE\t50\n";
+
+static const CHAR aup3_install_exec_seq_dat[] = "Action\tCondition\tSequence\n"
+                                                "s72\tS255\tI2\n"
+                                                "InstallExecuteSequence\tAction\n"
+                                                "CostFinalize\t\t1000\n"
+                                                "ValidateProductID\t\t700\n"
+                                                "CostInitialize\t\t800\n"
+                                                "FileCost\t\t900\n"
+                                                "RemoveFiles\t\t3500\n"
+                                                "InstallFiles\t\t4000\n"
+                                                "RegisterUser\t\t6000\n"
+                                                "RegisterProduct\t\t6100\n"
+                                                "PublishFeatures\t\t6300\n"
+                                                "PublishProduct\t\t6400\n"
+                                                "InstallFinalize\t\t6600\n"
+                                                "InstallInitialize\t\t1500\n"
+                                                "ProcessComponents\t\t1600\n"
+                                                "UnpublishFeatures\t\t1800\n"
+                                                "InstallValidate\t\t1400\n"
+                                                "LaunchConditions\t\t100\n"
+                                                "TestAllUsersProp\tALLUSERS=1 AND NOT REMOVE\t50\n";
+
 static const CHAR aup_custom_action_dat[] = "Action\tType\tSource\tTarget\tISComments\n"
                                             "s72\ti2\tS64\tS0\tS255\n"
                                             "CustomAction\tAction\n"
@@ -1584,6 +1672,45 @@
     ADD_TABLE(aup_custom_action),
     ADD_TABLE(media),
     ADD_TABLE(property)
+};
+
+static const msi_table aup2_tables[] =
+{
+    ADD_TABLE(component),
+    ADD_TABLE(directory),
+    ADD_TABLE(feature),
+    ADD_TABLE(feature_comp),
+    ADD_TABLE(file),
+    ADD_TABLE(aup2_install_exec_seq),
+    ADD_TABLE(aup_custom_action),
+    ADD_TABLE(media),
+    ADD_TABLE(aup_property)
+};
+
+static const msi_table aup3_tables[] =
+{
+    ADD_TABLE(component),
+    ADD_TABLE(directory),
+    ADD_TABLE(feature),
+    ADD_TABLE(feature_comp),
+    ADD_TABLE(file),
+    ADD_TABLE(aup2_install_exec_seq),
+    ADD_TABLE(aup_custom_action),
+    ADD_TABLE(media),
+    ADD_TABLE(aup2_property)
+};
+
+static const msi_table aup4_tables[] =
+{
+    ADD_TABLE(component),
+    ADD_TABLE(directory),
+    ADD_TABLE(feature),
+    ADD_TABLE(feature_comp),
+    ADD_TABLE(file),
+    ADD_TABLE(aup3_install_exec_seq),
+    ADD_TABLE(aup_custom_action),
+    ADD_TABLE(media),
+    ADD_TABLE(aup2_property)
 };
 
 static const msi_table fiu_tables[] =
@@ -6778,6 +6905,7 @@
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
+    /* ALLUSERS property unset */
     r = MsiInstallProductA(msifile, "FULL=1");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
@@ -6798,6 +6926,69 @@
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     delete_test_files();
+
+    create_test_files();
+    create_database(msifile, aup2_tables, sizeof(aup2_tables) / sizeof(msi_table));
+
+    MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
+
+    /* ALLUSERS property set to 1 */
+    r = MsiInstallProductA(msifile, "FULL=1");
+    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+
+    ok(delete_pf("msitest\\cabout\\new\\five.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\cabout\\new", FALSE), "File not installed\n");
+    ok(delete_pf("msitest\\cabout\\four.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\cabout", FALSE), "File not installed\n");
+    ok(delete_pf("msitest\\changed\\three.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\changed", FALSE), "File not installed\n");
+    ok(delete_pf("msitest\\first\\two.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\first", FALSE), "File not installed\n");
+    ok(delete_pf("msitest\\filename", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\one.txt", TRUE), "File installed\n");
+    ok(delete_pf("msitest\\service.exe", TRUE), "File not installed\n");
+    ok(delete_pf("msitest", FALSE), "File not installed\n");
+
+    r = MsiInstallProductA(msifile, "REMOVE=ALL");
+    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+
+    delete_test_files();
+
+    create_test_files();
+    create_database(msifile, aup3_tables, sizeof(aup3_tables) / sizeof(msi_table));
+
+    MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
+
+    /* ALLUSERS property set to 2 */
+    r = MsiInstallProductA(msifile, "FULL=1");
+    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+
+    ok(delete_pf("msitest\\cabout\\new\\five.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\cabout\\new", FALSE), "File not installed\n");
+    ok(delete_pf("msitest\\cabout\\four.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\cabout", FALSE), "File not installed\n");
+    ok(delete_pf("msitest\\changed\\three.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\changed", FALSE), "File not installed\n");
+    ok(delete_pf("msitest\\first\\two.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\first", FALSE), "File not installed\n");
+    ok(delete_pf("msitest\\filename", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\one.txt", TRUE), "File installed\n");
+    ok(delete_pf("msitest\\service.exe", TRUE), "File not installed\n");
+    ok(delete_pf("msitest", FALSE), "File not installed\n");
+
+    r = MsiInstallProductA(msifile, "REMOVE=ALL");
+    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+
+    delete_test_files();
+
+    create_test_files();
+    create_database(msifile, aup4_tables, sizeof(aup4_tables) / sizeof(msi_table));
+
+    MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
+
+    /* ALLUSERS property set to 2, conditioned on ALLUSERS = 1 */
+    r = MsiInstallProductA(msifile, "FULL=1");
+    ok(r == ERROR_INSTALL_FAILURE, "Expected ERROR_INSTALL_FAILURE, got %u\n", r);
 }
 
 static char session_manager[] = "System\\CurrentControlSet\\Control\\Session Manager";

Modified: trunk/rostests/winetests/msi/msi.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/msi.c?rev=44692&r1=44691&r2=44692&view=diff
==============================================================================
--- trunk/rostests/winetests/msi/msi.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msi/msi.c [iso-8859-1] Tue Dec 22 10:14:17 2009
@@ -2517,8 +2517,7 @@
     r = MsiGetFileVersionA(path, version, &versz, lang, &langsz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(versz == verchecksz, "Expected %d, got %d\n", verchecksz, versz);
-    ok(!lstrcmpA(lang, langcheck), "Expected %s, got %s\n", langcheck, lang);
-    ok(langsz == langchecksz, "Expected %d, got %d\n", langchecksz, langsz);
+    ok(strstr(lang, langcheck) != NULL, "Expected %s in %s\n", langcheck, lang);
     ok(!lstrcmpA(version, vercheck),
         "Expected %s, got %s\n", vercheck, version);
 
@@ -2536,8 +2535,7 @@
     lstrcpyA(lang, "lang");
     r = MsiGetFileVersionA(path, NULL, NULL, lang, &langsz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(lang, langcheck), "Expected %s, got %s\n", langcheck, lang);
-    ok(langsz == langchecksz, "Expected %d, got %d\n", langchecksz, langsz);
+    ok(strstr(lang, langcheck) != NULL, "Expected %s in %s\n", langcheck, lang);
 
     /* check neither version nor language */
     r = MsiGetFileVersionA(path, NULL, NULL, NULL, NULL);
@@ -2553,7 +2551,7 @@
     langsz = MAX_PATH;
     r = MsiGetFileVersionA(path, NULL, NULL, NULL, &langsz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(langsz == langchecksz, "Expected %d, got %d\n", langchecksz, langsz);
+    ok(langsz >= langchecksz, "Expected %d >= %d\n", langsz, langchecksz);
 
     /* pcchVersionBuf not big enough */
     versz = 5;
@@ -2571,7 +2569,7 @@
     ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(!strncmp(lang, langcheck, 2),
        "Expected first character of %s, got %s\n", langcheck, lang);
-    ok(langsz == langchecksz, "Expected %d, got %d\n", langchecksz, langsz);
+    ok(langsz >= langchecksz, "Expected %d >= %d\n", langsz, langchecksz);
 
     HeapFree(GetProcessHeap(), 0, vercheck);
     HeapFree(GetProcessHeap(), 0, langcheck);
@@ -2781,7 +2779,7 @@
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 4, "Expected 4, got %d\n", sz);
 
-    /* lpValueBuf is NULL, pcchValueBuf is too small */
+    /* lpValueBuf is non-NULL, pcchValueBuf is too small */
     sz = 2;
     lstrcpyA(buf, "apple");
     r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
@@ -2789,7 +2787,7 @@
     ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(sz == 4, "Expected 4, got %d\n", sz);
 
-    /* lpValueBuf is NULL, pcchValueBuf is exactly 4 */
+    /* lpValueBuf is non-NULL, pcchValueBuf is exactly 4 */
     sz = 4;
     lstrcpyA(buf, "apple");
     r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);

Modified: trunk/rostests/winetests/msi/package.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/package.c?rev=44692&r1=44691&r2=44692&view=diff
==============================================================================
--- trunk/rostests/winetests/msi/package.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msi/package.c [iso-8859-1] Tue Dec 22 10:14:17 2009
@@ -30,7 +30,7 @@
 
 #include "wine/test.h"
 
-static const char msifile[] = "winetest.msi";
+static const char msifile[] = "winetest-package.msi";
 char CURR_DIR[MAX_PATH];
 
 static UINT (WINAPI *pMsiApplyMultiplePatchesA)(LPCSTR, LPCSTR, LPCSTR);
@@ -2341,9 +2341,9 @@
     MSIHANDLE hdb;
     INSTALLSTATE state, action;
 
-    static const CHAR msifile2[] = "winetest2.msi";
-    static const CHAR msifile3[] = "winetest3.msi";
-    static const CHAR msifile4[] = "winetest4.msi";
+    static const CHAR msifile2[] = "winetest2-package.msi";
+    static const CHAR msifile3[] = "winetest3-package.msi";
+    static const CHAR msifile4[] = "winetest4-package.msi";
 
     hdb = create_package_db();
     ok ( hdb, "failed to create package database\n" );
@@ -11601,7 +11601,8 @@
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
     lstrcpyA(val, path);
-    lstrcatA(val, "\\winetest.msi");
+    lstrcatA(val, "\\");
+    lstrcatA(val, msifile);
     res = RegSetValueExA(props, "LocalPackage", 0, REG_SZ,
                          (const BYTE *)val, lstrlenA(val) + 1);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);

Modified: trunk/rostests/winetests/msi/record.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/record.c?rev=44692&r1=44691&r2=44692&view=diff
==============================================================================
--- trunk/rostests/winetests/msi/record.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msi/record.c [iso-8859-1] Tue Dec 22 10:14:17 2009
@@ -24,7 +24,7 @@
 
 #include "wine/test.h"
 
-static const char *msifile = "winetest.msi";
+static const char *msifile = "winetest-record.msi";
 
 static BOOL create_temp_file(char *name)
 {
@@ -604,6 +604,9 @@
     r = MsiRecordIsNull(rec, 0);
     ok(r == FALSE, "Expected FALSE, got %d\n", r);
 
+    r = MsiCloseHandle(hview);
+    ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
+    MsiCloseHandle(rec);
     MsiCloseHandle(hdb);
     DeleteFileA(msifile);
 }

Modified: trunk/rostests/winetests/msi/suminfo.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msi/suminfo.c?rev=44692&r1=44691&r2=44692&view=diff
==============================================================================
--- trunk/rostests/winetests/msi/suminfo.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/msi/suminfo.c [iso-8859-1] Tue Dec 22 10:14:17 2009
@@ -63,9 +63,12 @@
 #define PID_MSISOURCE PID_WORDCOUNT
 #define PID_MSIRESTRICT PID_CHARCOUNT
 
+const char *msifile = "winetest-suminfo.msi";
+static const WCHAR msifileW[] = {
+    'w','i','n','e','t','e','s','t','-','s','u','m','i','n','f','o','.','m','s','i',0 };
+
 static void test_suminfo(void)
 {
-    const char *msifile = "winetest.msi";
     MSIHANDLE hdb = 0, hsuminfo;
     UINT r, count, type;
     DWORD sz;
@@ -284,8 +287,6 @@
     static const CLSID FMTID_SummaryInformation =
         { 0xf29f85e0, 0x4ff9, 0x1068, {0xab, 0x91, 0x08, 0x00, 0x2b, 0x27, 0xb3, 0xd9}};
     DWORD mode = STGM_CREATE | STGM_READWRITE | STGM_DIRECT | STGM_SHARE_EXCLUSIVE;
-    static const WCHAR msifile[] = {
-        'w','i','n','e','t','e','s','t','.','m','s','i',0 };
     IPropertySetStorage *pss = NULL;
     IPropertyStorage *ps = NULL;
     IStorage *stg = NULL;
@@ -295,7 +296,7 @@
     PROPVARIANT propvar[10];
     USHORT data[2] = { 0, 0 };
 
-    r = StgCreateDocfile( msifile, mode, 0, &stg );
+    r = StgCreateDocfile( msifileW, mode, 0, &stg );
     ok( r == S_OK, "failed to create database\n");
 
     r = IStorage_SetClass( stg, &CLSID_MsiDatabase );
@@ -386,7 +387,6 @@
 
 static void test_summary_binary(void)
 {
-    const char *msifile = "winetest.msi";
     MSIHANDLE hdb = 0, hsuminfo = 0;
     UINT r, type, count;
     INT ival;




More information about the Ros-diffs mailing list