msi: Fix several test failures.
diff --git a/dlls/msi/tests/package.c b/dlls/msi/tests/package.c
index 0f002a2..2081a8b 100644
--- a/dlls/msi/tests/package.c
+++ b/dlls/msi/tests/package.c
@@ -854,7 +854,7 @@
 #define roundoffs(a, b, r) (((BYTE *)(b) - (BYTE *)(a) + ((r) - 1)) & ~((r) - 1))
 #define roundpos(a, b, r) (((BYTE *)(a)) + roundoffs(a, b, r))
 
-static void create_file_with_version(const CHAR *name, LONG ms, LONG ls)
+static BOOL create_file_with_version(const CHAR *name, LONG ms, LONG ls)
 {
     VS_VERSIONINFO *pVerInfo;
     VS_FIXEDFILEINFO *pFixedInfo;
@@ -862,6 +862,7 @@
     CHAR path[MAX_PATH];
     DWORD handle, size;
     HANDLE resource;
+    BOOL ret = FALSE;
 
     GetSystemDirectory(path, MAX_PATH);
     lstrcatA(path, "\\kernel32.dll");
@@ -886,12 +887,18 @@
     if (!resource)
         goto done;
 
-    UpdateResource(resource, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO),
-                   MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), buffer, size);
-    EndUpdateResource(resource, FALSE);
+    if (!UpdateResource(resource, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO),
+                   MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), buffer, size))
+        goto done;
+
+    if (!EndUpdateResource(resource, FALSE))
+        goto done;
+
+    ret = TRUE;
 
 done:
     HeapFree(GetProcessHeap(), 0, buffer);
+    return ret;
 }
 
 static void test_createpackage(void)
@@ -6146,6 +6153,7 @@
     CHAR prop[MAX_PATH];
     DWORD binary[2];
     DWORD size, val;
+    BOOL space, version;
     HKEY hklm, classes;
     HKEY hkcu, users;
     LPCSTR str;
@@ -6153,6 +6161,12 @@
     LONG res;
     UINT r;
 
+    version = TRUE;
+    if (!create_file_with_version("test.dll", MAKELONG(2, 1), MAKELONG(4, 3)))
+        version = FALSE;
+
+    DeleteFileA("test.dll");
+
     res = RegCreateKeyA(HKEY_CLASSES_ROOT, "Software\\Wine", &classes);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
@@ -6167,12 +6181,18 @@
                          (const BYTE *)"regszdata", 10);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
+    users = 0;
     res = RegCreateKeyA(HKEY_USERS, "S-1-5-18\\Software\\Wine", &users);
-    ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
+    ok(res == ERROR_SUCCESS ||
+       broken(res == ERROR_INVALID_PARAMETER),
+       "Expected ERROR_SUCCESS, got %d\n", res);
 
-    res = RegSetValueExA(users, "Value1", 0, REG_SZ,
-                         (const BYTE *)"regszdata", 10);
-    ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
+    if (res == ERROR_SUCCESS)
+    {
+        res = RegSetValueExA(users, "Value1", 0, REG_SZ,
+                             (const BYTE *)"regszdata", 10);
+        ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
+    }
 
     res = RegCreateKeyA(HKEY_LOCAL_MACHINE, "Software\\Wine", &hklm);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
@@ -6258,6 +6278,7 @@
     res = RegSetValueExA(hklm, "value16", 0, REG_SZ,
                          (const BYTE *)path, lstrlenA(path) + 1);
 
+    space = (strchr(CURR_DIR, ' ')) ? TRUE : FALSE;
     sprintf(path, "%s\\FileName1 -option", CURR_DIR);
     res = RegSetValueExA(hklm, "value17", 0, REG_SZ,
                          (const BYTE *)path, lstrlenA(path) + 1);
@@ -6656,11 +6677,14 @@
     ok(!lstrcmpA(prop, "regszdata"),
        "Expected \"regszdata\", got \"%s\"\n", prop);
 
-    size = MAX_PATH;
-    r = MsiGetPropertyA(hpkg, "SIGPROP17", prop, &size);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, "regszdata"),
-       "Expected \"regszdata\", got \"%s\"\n", prop);
+    if (users)
+    {
+        size = MAX_PATH;
+        r = MsiGetPropertyA(hpkg, "SIGPROP17", prop, &size);
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(prop, "regszdata"),
+           "Expected \"regszdata\", got \"%s\"\n", prop);
+    }
 
     size = MAX_PATH;
     r = MsiGetPropertyA(hpkg, "SIGPROP18", prop, &size);
@@ -6678,22 +6702,25 @@
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
 
-    size = MAX_PATH;
-    sprintf(path, "%s\\FileName3.dll", CURR_DIR);
-    r = MsiGetPropertyA(hpkg, "SIGPROP21", prop, &size);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
+    if (version)
+    {
+        size = MAX_PATH;
+        sprintf(path, "%s\\FileName3.dll", CURR_DIR);
+        r = MsiGetPropertyA(hpkg, "SIGPROP21", prop, &size);
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
 
-    size = MAX_PATH;
-    r = MsiGetPropertyA(hpkg, "SIGPROP22", prop, &size);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
+        size = MAX_PATH;
+        r = MsiGetPropertyA(hpkg, "SIGPROP22", prop, &size);
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
 
-    size = MAX_PATH;
-    sprintf(path, "%s\\FileName5.dll", CURR_DIR);
-    r = MsiGetPropertyA(hpkg, "SIGPROP23", prop, &size);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
+        size = MAX_PATH;
+        sprintf(path, "%s\\FileName5.dll", CURR_DIR);
+        r = MsiGetPropertyA(hpkg, "SIGPROP23", prop, &size);
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
+    }
 
     size = MAX_PATH;
     lstrcpyA(path, CURR_DIR);
@@ -6731,9 +6758,13 @@
     ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
 
     size = MAX_PATH;
+    sprintf(path, "%s\\FileName1", CURR_DIR);
     r = MsiGetPropertyA(hpkg, "SIGPROP30", prop, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
+    if (space)
+        ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
+    else
+        todo_wine ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
 
     RegSetValueA(hklm, NULL, REG_SZ, "", 0);
     RegDeleteValueA(hklm, "Value1");
@@ -6792,11 +6823,18 @@
     MSIHANDLE hpkg, hdb;
     CHAR path[MAX_PATH];
     CHAR prop[MAX_PATH];
+    BOOL version;
     LPCSTR str;
     LPSTR ptr;
     DWORD size;
     UINT r;
 
+    version = TRUE;
+    if (!create_file_with_version("test.dll", MAKELONG(2, 1), MAKELONG(4, 3)))
+        version = FALSE;
+
+    DeleteFileA("test.dll");
+
     WritePrivateProfileStringA("Section", "Key", "keydata,field2", "IniFile.ini");
 
     create_test_file("FileName1");
@@ -7001,22 +7039,25 @@
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
 
-    size = MAX_PATH;
-    sprintf(path, "%s\\FileName2.dll", CURR_DIR);
-    r = MsiGetPropertyA(hpkg, "SIGPROP10", prop, &size);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
+    if (version)
+    {
+        size = MAX_PATH;
+        sprintf(path, "%s\\FileName2.dll", CURR_DIR);
+        r = MsiGetPropertyA(hpkg, "SIGPROP10", prop, &size);
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
 
-    size = MAX_PATH;
-    r = MsiGetPropertyA(hpkg, "SIGPROP11", prop, &size);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
+        size = MAX_PATH;
+        r = MsiGetPropertyA(hpkg, "SIGPROP11", prop, &size);
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
 
-    size = MAX_PATH;
-    sprintf(path, "%s\\FileName4.dll", CURR_DIR);
-    r = MsiGetPropertyA(hpkg, "SIGPROP12", prop, &size);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
+        size = MAX_PATH;
+        sprintf(path, "%s\\FileName4.dll", CURR_DIR);
+        r = MsiGetPropertyA(hpkg, "SIGPROP12", prop, &size);
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
+    }
 
     delete_win_ini("IniFile.ini");
     DeleteFileA("FileName1");
@@ -7032,10 +7073,17 @@
     MSIHANDLE hpkg, hdb;
     CHAR path[MAX_PATH];
     CHAR prop[MAX_PATH];
+    BOOL version;
     LPCSTR str;
     DWORD size;
     UINT r;
 
+    version = TRUE;
+    if (!create_file_with_version("test.dll", MAKELONG(2, 1), MAKELONG(4, 3)))
+        version = FALSE;
+
+    DeleteFileA("test.dll");
+
     create_test_file("FileName1");
     CreateDirectoryA("one", NULL);
     CreateDirectoryA("one\\two", NULL);
@@ -7216,21 +7264,24 @@
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
 
-    size = MAX_PATH;
-    sprintf(path, "%s\\FileName3.dll", CURR_DIR);
-    r = MsiGetPropertyA(hpkg, "SIGPROP8", prop, &size);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
+    if (version)
+    {
+        size = MAX_PATH;
+        sprintf(path, "%s\\FileName3.dll", CURR_DIR);
+        r = MsiGetPropertyA(hpkg, "SIGPROP8", prop, &size);
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
 
-    size = MAX_PATH;
-    r = MsiGetPropertyA(hpkg, "SIGPROP9", prop, &size);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
+        size = MAX_PATH;
+        r = MsiGetPropertyA(hpkg, "SIGPROP9", prop, &size);
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
 
-    size = MAX_PATH;
-    r = MsiGetPropertyA(hpkg, "SIGPROP10", prop, &size);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
+        size = MAX_PATH;
+        r = MsiGetPropertyA(hpkg, "SIGPROP10", prop, &size);
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(prop, ""), "Expected \"\", got \"%s\"\n", prop);
+    }
 
     DeleteFileA("FileName1");
     DeleteFileA("FileName3.dll");