[MSI_WINETEST]
authorAmine Khaldi <amine.khaldi@reactos.org>
Wed, 23 Apr 2014 14:49:34 +0000 (14:49 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Wed, 23 Apr 2014 14:49:34 +0000 (14:49 +0000)
* Sync with Wine 1.7.17.
CORE-8080

svn path=/trunk/; revision=62919

12 files changed:
rostests/winetests/msi/CMakeLists.txt
rostests/winetests/msi/action.c
rostests/winetests/msi/automation.c
rostests/winetests/msi/db.c
rostests/winetests/msi/format.c
rostests/winetests/msi/install.c
rostests/winetests/msi/msi.c
rostests/winetests/msi/package.c
rostests/winetests/msi/patch.c
rostests/winetests/msi/record.c
rostests/winetests/msi/source.c
rostests/winetests/msi/suminfo.c

index 425c0d5..c3f0d0f 100644 (file)
@@ -1,5 +1,7 @@
 
-add_definitions(-DUSE_WINE_TODOS)
+add_definitions(
+    -DUSE_WINE_TODOS
+    -D__WINESRC__)
 
 list(APPEND SOURCE
     action.c
index 3019b14..23918b9 100644 (file)
@@ -42,6 +42,7 @@ static INSTALLSTATE (WINAPI *pMsiGetComponentPathExA)
 static UINT (WINAPI *pMsiQueryFeatureStateExA)
     (LPCSTR, LPCSTR, MSIINSTALLCONTEXT, LPCSTR, INSTALLSTATE *);
 
+static BOOL (WINAPI *pCheckTokenMembership)(HANDLE,PSID,PBOOL);
 static BOOL (WINAPI *pConvertSidToStringSidA)(PSID, LPSTR *);
 static BOOL (WINAPI *pOpenProcessToken)(HANDLE, DWORD, PHANDLE);
 static LONG (WINAPI *pRegDeleteKeyExA)(HKEY, LPCSTR, REGSAM, DWORD);
@@ -75,7 +76,8 @@ static const char component_dat[] =
     "dangler\t{6091DF25-EF96-45F1-B8E9-A9B1420C7A3C}\tTARGETDIR\t4\t\tregdata\n"
     "component\t\tMSITESTDIR\t0\t1\tfile\n"
     "service_comp\t{935A0A91-22A3-4F87-BCA8-928FFDFE2353}\tMSITESTDIR\t0\t\tservice_file\n"
-    "service_comp2\t{3F7B04A4-9521-4649-BDC9-0C8722740A49}\tMSITESTDIR\t0\t\tservice_file2";
+    "service_comp2\t{3F7B04A4-9521-4649-BDC9-0C8722740A49}\tMSITESTDIR\t0\t\tservice_file2\n"
+    "service_comp3\t{DBCD1502-20E3-423F-B53E-F37E263CDC7E}\tMSITESTDIR\t0\t\t\n";
 
 static const char directory_dat[] =
     "Directory\tDirectory_Parent\tDefaultDir\n"
@@ -112,7 +114,8 @@ static const char feature_comp_dat[] =
     "Two\tTwo\n"
     "feature\tcomponent\n"
     "service_feature\tservice_comp\n"
-    "service_feature\tservice_comp2";
+    "service_feature\tservice_comp2\n"
+    "service_feature\tservice_comp3";
 
 static const char file_dat[] =
     "File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
@@ -220,6 +223,14 @@ static const char service_install_dat[] =
     "TestService\t[SERVNAME]\t[SERVDISP]\t2\t3\t0\t\tservice1[~]+group1[~]service2[~]+group2[~][~]\tTestService\t\t-a arg\tservice_comp\tdescription\n"
     "TestService2\tSERVNAME2]\t[SERVDISP2]\t2\t3\t0\t\tservice1[~]+group1[~]service2[~]+group2[~][~]\tTestService2\t\t-a arg\tservice_comp2\tdescription";
 
+static const char service_install2_dat[] =
+    "ServiceInstall\tName\tDisplayName\tServiceType\tStartType\tErrorControl\t"
+    "LoadOrderGroup\tDependencies\tStartName\tPassword\tArguments\tComponent_\tDescription\n"
+    "s72\ts255\tL255\ti4\ti4\ti4\tS255\tS255\tS255\tS255\tS255\ts72\tL255\n"
+    "ServiceInstall\tServiceInstall\n"
+    "TestService\tTestService\tTestService\t2\t3\t0\t\t\tTestService\t\t\tservice_comp\t\n"
+    "TestService4\tTestService4\tTestService4\t2\t3\t0\t\t\tTestService4\t\t\tservice_comp3\t\n";
+
 static const char service_control_dat[] =
     "ServiceControl\tName\tEvent\tArguments\tWait\tComponent_\n"
     "s72\tl255\ti2\tL255\tI2\ts72\n"
@@ -1317,6 +1328,95 @@ static const char rei_install_exec_seq_dat[] =
     "PublishProduct\t\t5200\n"
     "InstallFinalize\t\t6000\n";
 
+static const char rpi_file_dat[] =
+    "File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
+    "s72\ts72\tl255\ti4\tS72\tS20\tI2\ti2\n"
+    "File\tFile\n"
+    "progid.txt\tprogid\tprogid.txt\t1000\t\t\t8192\t1\n";
+
+static const char rpi_feature_dat[] =
+    "Feature\tFeature_Parent\tTitle\tDescription\tDisplay\tLevel\tDirectory_\tAttributes\n"
+    "s38\tS38\tL64\tL255\tI2\ti2\tS72\ti2\n"
+    "Feature\tFeature\n"
+    "progid\t\t\tprogid feature\t1\t2\tMSITESTDIR\t0\n";
+
+static const char rpi_feature_comp_dat[] =
+    "Feature_\tComponent_\n"
+    "s38\ts72\n"
+    "FeatureComponents\tFeature_\tComponent_\n"
+    "progid\tprogid\n";
+
+static const char rpi_component_dat[] =
+    "Component\tComponentId\tDirectory_\tAttributes\tCondition\tKeyPath\n"
+    "s72\tS38\ts72\ti2\tS255\tS72\n"
+    "Component\tComponent\n"
+    "progid\t{89A98345-F8A1-422E-A48B-0250B5809F2D}\tMSITESTDIR\t0\t\tprogid.txt\n";
+
+static const char rpi_appid_dat[] =
+    "AppId\tRemoteServerName\tLocalService\tServiceParameters\tDllSurrogate\tActivateAtStorage\tRunAsInteractiveUser\n"
+    "s38\tS255\tS255\tS255\tS255\tI2\tI2\n"
+    "AppId\tAppId\n"
+    "{CFCC3B38-E683-497D-9AB4-CB40AAFE307F}\t\t\t\t\t\t\n";
+
+static const char rpi_class_dat[] =
+    "CLSID\tContext\tComponent_\tProgId_Default\tDescription\tAppId_\tFileTypeMask\tIcon_\tIconIndex\tDefInprocHandler\tArgument\tFeature_\tAttributes\n"
+    "s38\ts32\ts72\tS255\tL255\tS38\tS255\tS72\tI2\tS32\tS255\ts38\tI2\n"
+    "Class\tCLSID\tContext\tComponent_\n"
+    "{110913E7-86D1-4BF3-9922-BA103FCDDDFA}\tLocalServer\tprogid\tWinetest.Class.1\tdescription\t{CFCC3B38-E683-497D-9AB4-CB40AAFE307F}\tmask1;mask2\t\t\t2\t\tprogid\t\n"
+    "{904E6BC9-F57F-4412-B460-D40DE2F256E2}\tLocalServer\tprogid\tWinetest.VerClass\tdescription\t{CFCC3B38-E683-497D-9AB4-CB40AAFE307F}\tmask1;mask2\t\t\t2\t\tprogid\t\n"
+    "{57C413FB-CA02-498A-81F6-7E769BDB7C97}\tLocalServer\tprogid\t\tdescription\t{CFCC3B38-E683-497D-9AB4-CB40AAFE307F}\tmask1;mask2\t\t\t2\t\tprogid\t\n";
+
+static const char rpi_extension_dat[] =
+    "Extension\tComponent_\tProgId_\tMIME_\tFeature_\n"
+    "s255\ts72\tS255\tS64\ts38\n"
+    "Extension\tExtension\tComponent_\n"
+    "winetest\tprogid\tWinetest.Extension\t\tprogid\n";
+
+static const char rpi_verb_dat[] =
+    "Extension_\tVerb\tSequence\tCommand\tArgument\n"
+    "s255\ts32\tI2\tL255\tL255\n"
+    "Verb\tExtension_\tVerb\n"
+    "winetest\tOpen\t1\t&Open\t/argument\n";
+
+static const char rpi_progid_dat[] =
+    "ProgId\tProgId_Parent\tClass_\tDescription\tIcon_\tIconIndex\n"
+    "s255\tS255\tS38\tL255\tS72\tI2\n"
+    "ProgId\tProgId\n"
+    "Winetest.Class.1\t\t{110913E7-86D1-4BF3-9922-BA103FCDDDFA}\tdescription\t\t\n"
+    "Winetest.Class\tWinetest.Class.1\t\tdescription\t\t\n"
+    "Winetest.Class.2\t\t{110913E7-86D1-4BF3-9922-BA103FCDDDFA}\tdescription\t\t\n"
+    "Winetest.VerClass.1\t\t{904E6BC9-F57F-4412-B460-D40DE2F256E2}\tdescription\t\t\n"
+    "Winetest.VerClass\tWinetest.VerClass.1\t\tdescription\t\t\n"
+    "Winetest.NoProgIdClass.1\t\t{57C413FB-CA02-498A-81F6-7E769BDB7C97}\tdescription\t\t\n"
+    "Winetest.NoProgIdClass\tWinetest.NoProgIdClass.1\t\tdescription\t\t\n"
+    "Winetest.Orphaned\t\t\tdescription\t\t\n"
+    "Winetest.Orphaned2\t\t\tdescription\t\t\n"
+    "Winetest.Extension\t\t\tdescription\t\t\n";
+
+static const char rpi_install_exec_seq_dat[] =
+    "Action\tCondition\tSequence\n"
+    "s72\tS255\tI2\n"
+    "InstallExecuteSequence\tAction\n"
+    "LaunchConditions\t\t100\n"
+    "CostInitialize\t\t800\n"
+    "FileCost\t\t900\n"
+    "CostFinalize\t\t1000\n"
+    "InstallValidate\t\t1400\n"
+    "InstallInitialize\t\t1500\n"
+    "ProcessComponents\t\t1600\n"
+    "RemoveFiles\t\t1700\n"
+    "UnregisterClassInfo\t\t3000\n"
+    "UnregisterExtensionInfo\t\t3200\n"
+    "UnregisterProgIdInfo\t\t3400\n"
+    "InstallFiles\t\t3600\n"
+    "RegisterClassInfo\t\t4000\n"
+    "RegisterExtensionInfo\t\t4200\n"
+    "RegisterProgIdInfo\t\t4400\n"
+    "RegisterProduct\t\t5000\n"
+    "PublishFeatures\t\t5100\n"
+    "PublishProduct\t\t5200\n"
+    "InstallFinalize\t\t6000\n";
+
 static const char rmi_file_dat[] =
     "File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
     "s72\ts72\tl255\ti4\tS72\tS20\tI2\ti2\n"
@@ -1678,6 +1778,19 @@ static const msi_table sds_tables[] =
     ADD_TABLE(property)
 };
 
+static const msi_table sis_tables[] =
+{
+    ADD_TABLE(component),
+    ADD_TABLE(directory),
+    ADD_TABLE(feature),
+    ADD_TABLE(feature_comp),
+    ADD_TABLE(file),
+    ADD_TABLE(sds_install_exec_seq),
+    ADD_TABLE(service_install2),
+    ADD_TABLE(media),
+    ADD_TABLE(property)
+};
+
 static const msi_table sr_tables[] =
 {
     ADD_TABLE(component),
@@ -1868,6 +1981,23 @@ static const msi_table rei_tables[] =
     ADD_TABLE(property)
 };
 
+static const msi_table rpi_tables[] =
+{
+    ADD_TABLE(directory),
+    ADD_TABLE(rpi_component),
+    ADD_TABLE(rpi_feature),
+    ADD_TABLE(rpi_feature_comp),
+    ADD_TABLE(rpi_file),
+    ADD_TABLE(rpi_appid),
+    ADD_TABLE(rpi_class),
+    ADD_TABLE(rpi_extension),
+    ADD_TABLE(rpi_verb),
+    ADD_TABLE(rpi_progid),
+    ADD_TABLE(rpi_install_exec_seq),
+    ADD_TABLE(media),
+    ADD_TABLE(property)
+};
+
 static const msi_table rmi_tables[] =
 {
     ADD_TABLE(directory),
@@ -2105,6 +2235,7 @@ static void init_functionpointers(void)
     GET_PROC(hmsi, MsiGetComponentPathExA);
     GET_PROC(hmsi, MsiQueryFeatureStateExA);
 
+    GET_PROC(hadvapi32, CheckTokenMembership);
     GET_PROC(hadvapi32, ConvertSidToStringSidA);
     GET_PROC(hadvapi32, OpenProcessToken);
     GET_PROC(hadvapi32, RegDeleteKeyExA)
@@ -2119,9 +2250,26 @@ static void init_functionpointers(void)
 
 static BOOL is_process_limited(void)
 {
+    SID_IDENTIFIER_AUTHORITY NtAuthority = {SECURITY_NT_AUTHORITY};
+    PSID Group;
+    BOOL IsInGroup;
     HANDLE token;
 
-    if (!pOpenProcessToken) return FALSE;
+    if (!pCheckTokenMembership || !pOpenProcessToken) return FALSE;
+
+    if (!AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID,
+                                  DOMAIN_ALIAS_RID_ADMINS,
+                                  0, 0, 0, 0, 0, 0, &Group) ||
+        !pCheckTokenMembership(NULL, Group, &IsInGroup))
+    {
+        trace("Could not check if the current user is an administrator\n");
+        return FALSE;
+    }
+    if (!IsInGroup)
+    {
+        /* Only administrators have enough privileges for these tests */
+        return TRUE;
+    }
 
     if (pOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token))
     {
@@ -2188,8 +2336,8 @@ static INT_PTR CDECL get_open_info(char *pszName, USHORT *pdate, USHORT *ptime,
     DWORD attrs;
     BOOL res;
 
-    handle = CreateFile(pszName, GENERIC_READ, FILE_SHARE_READ, NULL,
-                        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
+    handle = CreateFileA(pszName, GENERIC_READ, FILE_SHARE_READ, NULL,
+                         OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
 
     ok(handle != INVALID_HANDLE_VALUE, "Failed to CreateFile %s\n", pszName);
 
@@ -2199,7 +2347,7 @@ static INT_PTR CDECL get_open_info(char *pszName, USHORT *pdate, USHORT *ptime,
     FileTimeToLocalFileTime(&finfo.ftLastWriteTime, &filetime);
     FileTimeToDosDateTime(&filetime, pdate, ptime);
 
-    attrs = GetFileAttributes(pszName);
+    attrs = GetFileAttributesA(pszName);
     ok(attrs != INVALID_FILE_ATTRIBUTES, "Failed to GetFileAttributes\n");
 
     return (INT_PTR)handle;
@@ -2254,7 +2402,7 @@ static void create_cab_file(const CHAR *name, DWORD max_size, const CHAR *files)
     {
         res = add_file(hfci, ptr, tcompTYPE_MSZIP);
         ok(res, "Failed to add file: %s\n", ptr);
-        ptr += lstrlen(ptr) + 1;
+        ptr += lstrlenA(ptr) + 1;
     }
 
     res = FCIFlushCabinet(hfci, FALSE, get_next_cabinet, progress);
@@ -2269,8 +2417,8 @@ static BOOL get_user_dirs(void)
     HKEY hkey;
     DWORD type, size;
 
-    if (RegOpenKey(HKEY_CURRENT_USER,
-                   "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", &hkey))
+    if (RegOpenKeyA(HKEY_CURRENT_USER,
+                    "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", &hkey))
         return FALSE;
 
     size = MAX_PATH;
@@ -2289,8 +2437,8 @@ static BOOL get_system_dirs(void)
     HKEY hkey;
     DWORD type, size;
 
-    if (RegOpenKey(HKEY_LOCAL_MACHINE,
-                   "Software\\Microsoft\\Windows\\CurrentVersion", &hkey))
+    if (RegOpenKeyA(HKEY_LOCAL_MACHINE,
+                    "Software\\Microsoft\\Windows\\CurrentVersion", &hkey))
         return FALSE;
 
     size = MAX_PATH;
@@ -2392,7 +2540,7 @@ static void delete_test_files(void)
 static void write_file(const CHAR *filename, const char *data, int data_size)
 {
     DWORD size;
-    HANDLE hf = CreateFile(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+    HANDLE hf = CreateFileA(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     WriteFile(hf, data, data_size, &size, NULL);
     CloseHandle(hf);
 }
@@ -2440,9 +2588,14 @@ static void create_database_wordcount(const CHAR *name, const msi_table *tables,
 {
     MSIHANDLE db;
     UINT r;
-    int j;
+    WCHAR *nameW;
+    int j, len;
 
-    r = MsiOpenDatabaseA(name, MSIDBOPEN_CREATE, &db);
+    len = MultiByteToWideChar( CP_ACP, 0, name, -1, NULL, 0 );
+    if (!(nameW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return;
+    MultiByteToWideChar( CP_ACP, 0, name, -1, nameW, len );
+
+    r = MsiOpenDatabaseW(nameW, MSIDBOPEN_CREATE, &db);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     /* import the tables into the database */
@@ -2464,6 +2617,7 @@ static void create_database_wordcount(const CHAR *name, const msi_table *tables,
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     MsiCloseHandle(db);
+    HeapFree( GetProcessHeap(), 0, nameW );
 }
 
 static BOOL notify_system_change(DWORD event_type, STATEMGRSTATUS *status)
@@ -2496,7 +2650,7 @@ static LONG delete_key( HKEY key, LPCSTR subkey, REGSAM access )
 
 static BOOL file_exists(LPCSTR file)
 {
-    return GetFileAttributes(file) != INVALID_FILE_ATTRIBUTES;
+    return GetFileAttributesA(file) != INVALID_FILE_ATTRIBUTES;
 }
 
 static BOOL pf_exists(LPCSTR file)
@@ -2512,7 +2666,7 @@ static BOOL pf_exists(LPCSTR file)
 
 static void delete_pfmsitest_files(void)
 {
-    SHFILEOPSTRUCT shfl;
+    SHFILEOPSTRUCTA shfl;
     CHAR path[MAX_PATH+11];
 
     lstrcpyA(path, PROG_FILES_DIR);
@@ -2525,7 +2679,7 @@ static void delete_pfmsitest_files(void)
     shfl.pTo = NULL;
     shfl.fFlags = FOF_FILESONLY | FOF_NOCONFIRMATION | FOF_NORECURSION | FOF_SILENT | FOF_NOERRORUI;
 
-    SHFileOperation(&shfl);
+    SHFileOperationA(&shfl);
 
     lstrcpyA(path, PROG_FILES_DIR);
     lstrcatA(path, "\\msitest");
@@ -2701,7 +2855,7 @@ static void test_register_product(void)
         return;
 
     get_date_str(date);
-    GetTempPath(MAX_PATH, temp);
+    GetTempPathA(MAX_PATH, temp);
 
     CreateDirectoryA("msitest", NULL);
     create_file("msitest\\maximus", 500);
@@ -2941,14 +3095,28 @@ static void test_register_product(void)
     RegCloseKey(hkey);
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
     HeapFree(GetProcessHeap(), 0, usersid);
 }
 
 static void test_publish_product(void)
 {
+    static const char prodpath[] =
+        "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\%s\\Products"
+        "\\84A88FD7F6998CE40A22FB59F6B9C2BB";
+    static const char cuprodpath[] =
+        "Software\\Microsoft\\Installer\\Products\\84A88FD7F6998CE40A22FB59F6B9C2BB";
+    static const char cuupgrades[] =
+        "Software\\Microsoft\\Installer\\UpgradeCodes\\51AAE0C44620A5E4788506E91F249BD2";
+    static const char badprod[] =
+        "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Products"
+        "\\84A88FD7F6998CE40A22FB59F6B9C2BB";
+    static const char machprod[] =
+        "Software\\Classes\\Installer\\Products\\84A88FD7F6998CE40A22FB59F6B9C2BB";
+    static const char machup[] =
+        "Software\\Classes\\Installer\\UpgradeCodes\\51AAE0C44620A5E4788506E91F249BD2";
     UINT r;
     LONG res;
     LPSTR usersid;
@@ -2960,19 +3128,6 @@ static void test_publish_product(void)
     BOOL old_installer = FALSE;
     REGSAM access = KEY_ALL_ACCESS;
 
-    static const CHAR prodpath[] = "Software\\Microsoft\\Windows\\CurrentVersion"
-                                   "\\Installer\\UserData\\%s\\Products"
-                                   "\\84A88FD7F6998CE40A22FB59F6B9C2BB";
-    static const CHAR cuprodpath[] = "Software\\Microsoft\\Installer\\Products"
-                                     "\\84A88FD7F6998CE40A22FB59F6B9C2BB";
-    static const CHAR cuupgrades[] = "Software\\Microsoft\\Installer\\UpgradeCodes"
-                                     "\\51AAE0C44620A5E4788506E91F249BD2";
-    static const CHAR badprod[] = "Software\\Microsoft\\Windows\\CurrentVersion"
-                                  "\\Installer\\Products"
-                                  "\\84A88FD7F6998CE40A22FB59F6B9C2BB";
-    static const CHAR machprod[] = "Software\\Classes\\Installer\\Products\\84A88FD7F6998CE40A22FB59F6B9C2BB";
-    static const CHAR machup[] = "Software\\Classes\\Installer\\UpgradeCodes\\51AAE0C44620A5E4788506E91F249BD2";
-
     if (is_process_limited())
     {
         skip("process is limited\n");
@@ -2982,7 +3137,7 @@ static void test_publish_product(void)
     if (!(usersid = get_user_sid()))
         return;
 
-    GetTempPath(MAX_PATH, temp);
+    GetTempPathA(MAX_PATH, temp);
 
     CreateDirectoryA("msitest", NULL);
     create_file("msitest\\maximus", 500);
@@ -3181,14 +3336,26 @@ machprod:
     RegCloseKey(hkey);
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
     HeapFree(GetProcessHeap(), 0, usersid);
 }
 
 static void test_publish_features(void)
 {
+    static const char cupath[] =
+        "Software\\Microsoft\\Installer\\Features\\84A88FD7F6998CE40A22FB59F6B9C2BB";
+    static const char udfeatpath[] =
+        "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\%s\\Products"
+        "\\84A88FD7F6998CE40A22FB59F6B9C2BB\\Features";
+    static const char udpridpath[] =
+        "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\%s\\Products"
+        "\\84A88FD7F6998CE40A22FB59F6B9C2BB";
+    static const char featkey[] =
+        "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Features";
+    static const char classfeat[] =
+        "Software\\Classes\\Installer\\Features\\84A88FD7F6998CE40A22FB59F6B9C2BB";
     UINT r;
     LONG res;
     HKEY hkey;
@@ -3196,19 +3363,6 @@ static void test_publish_features(void)
     CHAR keypath[MAX_PATH];
     REGSAM access = KEY_ALL_ACCESS;
 
-    static const CHAR cupath[] = "Software\\Microsoft\\Installer\\Features"
-                                 "\\84A88FD7F6998CE40A22FB59F6B9C2BB";
-    static const CHAR udfeatpath[] = "Software\\Microsoft\\Windows\\CurrentVersion"
-                                     "\\Installer\\UserData\\%s\\Products"
-                                     "\\84A88FD7F6998CE40A22FB59F6B9C2BB\\Features";
-    static const CHAR udpridpath[] = "Software\\Microsoft\\Windows\\CurrentVersion"
-                                     "\\Installer\\UserData\\%s\\Products"
-                                     "\\84A88FD7F6998CE40A22FB59F6B9C2BB";
-    static const CHAR featkey[] = "Software\\Microsoft\\Windows\\CurrentVersion"
-                                  "\\Installer\\Features";
-    static const CHAR classfeat[] = "Software\\Classes\\Installer\\Features"
-                                    "\\84A88FD7F6998CE40A22FB59F6B9C2BB";
-
     if (is_process_limited())
     {
         skip("process is limited\n");
@@ -3307,9 +3461,9 @@ static void test_publish_features(void)
     delete_key(HKEY_LOCAL_MACHINE, keypath, access);
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
     HeapFree(GetProcessHeap(), 0, usersid);
 }
 
@@ -3467,14 +3621,18 @@ error:
     HeapFree(GetProcessHeap(), 0, company);
     HeapFree(GetProcessHeap(), 0, owner);
 
-    DeleteFile(msifile);
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
     LocalFree(usersid);
 }
 
 static void test_process_components(void)
 {
+    static const char keyfmt[] =
+        "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\%s\\Components\\%s";
+    static const char compkey[] =
+        "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Components";
     UINT r;
     LONG res;
     DWORD size;
@@ -3485,12 +3643,6 @@ static void test_process_components(void)
     CHAR program_files_maximus[MAX_PATH];
     REGSAM access = KEY_ALL_ACCESS;
 
-    static const CHAR keyfmt[] =
-        "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\"
-        "UserData\\%s\\Components\\%s";
-    static const CHAR compkey[] =
-        "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Components";
-
     if (is_process_limited())
     {
         skip("process is limited\n");
@@ -3604,9 +3756,9 @@ static void test_process_components(void)
     RegCloseKey(comp);
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
     LocalFree(usersid);
 }
 
@@ -3634,7 +3786,7 @@ static void test_publish(void)
     }
 
     get_date_str(date);
-    GetTempPath(MAX_PATH, temp);
+    GetTempPathA(MAX_PATH, temp);
 
     if (is_wow64)
         access |= KEY_WOW64_64KEY;
@@ -3655,10 +3807,10 @@ static void test_publish(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
     state = 0xdead;
@@ -3685,10 +3837,10 @@ static void test_publish(void)
     ok(state == 0xdead, "got %d\n", state);
     ok(error == ERROR_SUCCESS, "got %u\n", error);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -3710,13 +3862,13 @@ static void test_publish(void)
     ok(pf_exists("msitest\\maximus"), "File not installed\n");
     ok(pf_exists("msitest"), "File not installed\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -3733,13 +3885,13 @@ static void test_publish(void)
     ok(pf_exists("msitest\\maximus"), "File not installed\n");
     ok(pf_exists("msitest"), "File not installed\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_DEFAULT, "Expected INSTALLSTATE_DEFAULT, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -3794,13 +3946,13 @@ static void test_publish(void)
     ok(pf_exists("msitest\\maximus"), "File deleted\n");
     ok(pf_exists("msitest"), "File deleted\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -3817,10 +3969,10 @@ static void test_publish(void)
     ok(pf_exists("msitest\\maximus"), "File not installed\n");
     ok(pf_exists("msitest"), "File not installed\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_DEFAULT, "Expected INSTALLSTATE_DEFAULT, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
 
     state = 0xdead;
@@ -3847,7 +3999,7 @@ static void test_publish(void)
     ok(state == INSTALLSTATE_LOCAL, "got %d\n", state);
     ok(error == ERROR_SUCCESS, "got %u\n", error);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -3901,13 +4053,13 @@ static void test_publish(void)
     ok(!pf_exists("msitest\\maximus"), "File not deleted\n");
     ok(!pf_exists("msitest"), "Directory not deleted\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -3924,13 +4076,13 @@ static void test_publish(void)
     ok(pf_exists("msitest\\maximus"), "File not installed\n");
     ok(pf_exists("msitest"), "File not installed\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_DEFAULT, "Expected INSTALLSTATE_DEFAULT, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -3984,13 +4136,13 @@ static void test_publish(void)
     ok(pf_exists("msitest\\maximus"), "File deleted\n");
     ok(pf_exists("msitest"), "Directory deleted\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_DEFAULT, "Expected INSTALLSTATE_DEFAULT, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -4044,13 +4196,13 @@ static void test_publish(void)
     ok(pf_exists("msitest\\maximus"), "File not installed\n");
     ok(pf_exists("msitest"), "File not installed\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_DEFAULT, "Expected INSTALLSTATE_DEFAULT, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -4104,13 +4256,13 @@ static void test_publish(void)
     ok(!pf_exists("msitest\\maximus"), "File not deleted\n");
     ok(!pf_exists("msitest"), "Directory not deleted\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -4127,13 +4279,13 @@ static void test_publish(void)
     ok(pf_exists("msitest\\maximus"), "File not installed\n");
     ok(pf_exists("msitest"), "File not installed\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_DEFAULT, "Expected INSTALLSTATE_DEFAULT, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_LOCAL, "Expected INSTALLSTATE_LOCAL, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -4187,13 +4339,13 @@ static void test_publish(void)
     ok(!pf_exists("msitest\\maximus"), "File not deleted\n");
     ok(!pf_exists("msitest"), "Directory not deleted\n");
 
-    state = MsiQueryProductState(prodcode);
+    state = MsiQueryProductStateA(prodcode);
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "feature");
+    state = MsiQueryFeatureStateA(prodcode, "feature");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
-    state = MsiQueryFeatureState(prodcode, "montecristo");
+    state = MsiQueryFeatureStateA(prodcode, "montecristo");
     ok(state == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", state);
 
     r = pMsiQueryComponentStateA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
@@ -4210,9 +4362,9 @@ static void test_publish(void)
 error:
     RegCloseKey(uninstall);
     RegCloseKey(uninstall_32node);
-    DeleteFile(msifile);
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
 }
 
 static void test_publish_sourcelist(void)
@@ -4255,7 +4407,7 @@ static void test_publish_sourcelist(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT, "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(size == MAX_PATH, "Expected %d, got %d\n", MAX_PATH, size);
     ok(!lstrcmpA(value, "aaa"), "Expected \"aaa\", got \"%s\"\n", value);
@@ -4277,7 +4429,7 @@ static void test_publish_sourcelist(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT, "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(size == MAX_PATH, "Expected %d, got %d\n", MAX_PATH, size);
     ok(!lstrcmpA(value, "aaa"), "Expected \"aaa\", got \"%s\"\n", value);
@@ -4299,7 +4451,7 @@ static void test_publish_sourcelist(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT, "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(size == MAX_PATH, "Expected %d, got %d\n", MAX_PATH, size);
     ok(!lstrcmpA(value, "aaa"), "Expected \"aaa\", got \"%s\"\n", value);
@@ -4321,7 +4473,7 @@ static void test_publish_sourcelist(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT, "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(size == MAX_PATH, "Expected %d, got %d\n", MAX_PATH, size);
     ok(!lstrcmpA(value, "aaa"), "Expected \"aaa\", got \"%s\"\n", value);
@@ -4343,7 +4495,7 @@ static void test_publish_sourcelist(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "msitest.msi"), "Expected 'msitest.msi', got %s\n", value);
     ok(size == 11, "Expected 11, got %d\n", size);
@@ -4351,7 +4503,7 @@ static void test_publish_sourcelist(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATH, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATHA, value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -4359,7 +4511,7 @@ static void test_publish_sourcelist(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_DISKPROMPT, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_DISKPROMPTA, value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -4370,7 +4522,7 @@ static void test_publish_sourcelist(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA, value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, path), "Expected \"%s\", got \"%s\"\n", path, value);
     ok(size == lstrlenA(path), "Expected %d, got %d\n", lstrlenA(path), size);
@@ -4378,7 +4530,7 @@ static void test_publish_sourcelist(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPE, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPEA, value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "n"), "Expected \"n\", got \"%s\"\n", value);
     ok(size == 1, "Expected 1, got %d\n", size);
@@ -4417,9 +4569,9 @@ static void test_publish_sourcelist(void)
     delete_pfmsitest_files();
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
 }
 
 static void create_pf_data(LPCSTR file, LPCSTR data, BOOL is_file)
@@ -4565,11 +4717,11 @@ static void test_remove_files(void)
     delete_pf("msitest", FALSE);
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\hydrogen");
-    DeleteFile("msitest\\helium");
-    DeleteFile("msitest\\lithium");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\hydrogen");
+    DeleteFileA("msitest\\helium");
+    DeleteFileA("msitest\\lithium");
+    RemoveDirectoryA("msitest");
 }
 
 static void test_move_files(void)
@@ -4690,33 +4842,33 @@ static void test_move_files(void)
     ok(DeleteFileA("bird"), "File moved\n");
 
 error:
-    DeleteFile("cameroon");
-    DeleteFile("djibouti");
-    DeleteFile("egypt");
-    DeleteFile("finland");
-    DeleteFile("gambai");
-    DeleteFile("honduras");
-    DeleteFile("japan");
-    DeleteFile("kenya");
-    DeleteFile("nauru");
-    DeleteFile("peru");
-    DeleteFile("apple");
-    DeleteFile("application");
-    DeleteFile("ape");
-    DeleteFile("foo");
-    DeleteFile("fao");
-    DeleteFile("fbod");
-    DeleteFile("budding");
-    DeleteFile("buddy");
-    DeleteFile("bud");
-    DeleteFile("bar");
-    DeleteFile("bur");
-    DeleteFile("bird");
-    DeleteFile("msitest\\india");
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("latvia");
-    RemoveDirectory("msitest");
-    DeleteFile(msifile);
+    DeleteFileA("cameroon");
+    DeleteFileA("djibouti");
+    DeleteFileA("egypt");
+    DeleteFileA("finland");
+    DeleteFileA("gambai");
+    DeleteFileA("honduras");
+    DeleteFileA("japan");
+    DeleteFileA("kenya");
+    DeleteFileA("nauru");
+    DeleteFileA("peru");
+    DeleteFileA("apple");
+    DeleteFileA("application");
+    DeleteFileA("ape");
+    DeleteFileA("foo");
+    DeleteFileA("fao");
+    DeleteFileA("fbod");
+    DeleteFileA("budding");
+    DeleteFileA("buddy");
+    DeleteFileA("bud");
+    DeleteFileA("bar");
+    DeleteFileA("bur");
+    DeleteFileA("bird");
+    DeleteFileA("msitest\\india");
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("latvia");
+    RemoveDirectoryA("msitest");
+    DeleteFileA(msifile);
 }
 
 static void test_duplicate_files(void)
@@ -4753,9 +4905,9 @@ static void test_duplicate_files(void)
     ok(delete_pf("msitest", FALSE), "Directory not created\n");
 
 error:
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
-    DeleteFile(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
+    DeleteFileA(msifile);
 }
 
 static void test_write_registry_values(void)
@@ -4909,9 +5061,9 @@ static void test_write_registry_values(void)
     RegDeleteKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Wine\\msitest");
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
 }
 
 static void test_envvar(void)
@@ -4971,7 +5123,7 @@ static void test_envvar(void)
     res = RegQueryValueExA(env, "MSITESTVAR1", NULL, &type, (LPBYTE)buffer, &size);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     ok(type == REG_SZ, "Expected REG_SZ, got %u\n", type);
-    ok(!lstrcmp(buffer, "1"), "Expected \"1\", got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "1"), "Expected \"1\", got %s\n", buffer);
 
     res = RegDeleteValueA(env, "MSITESTVAR1");
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
@@ -4982,7 +5134,7 @@ static void test_envvar(void)
     res = RegQueryValueExA(env, "MSITESTVAR2", NULL, &type, (LPBYTE)buffer, &size);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     ok(type == REG_SZ, "Expected REG_SZ, got %u\n", type);
-    ok(!lstrcmp(buffer, "1"), "Expected \"1\", got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "1"), "Expected \"1\", got %s\n", buffer);
 
     res = RegDeleteValueA(env, "MSITESTVAR2");
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
@@ -5023,7 +5175,7 @@ static void test_envvar(void)
         res = RegQueryValueExA(env, name, NULL, &type, (LPBYTE)buffer, &size);
         ok(res == ERROR_SUCCESS, "%d: Expected ERROR_SUCCESS, got %d\n", i, res);
         ok(type == REG_SZ, "%d: Expected REG_SZ, got %u\n", i, type);
-        ok(!lstrcmp(buffer, results[i - 11]), "%d: Expected %s, got %s\n", i, results[i - 11], buffer);
+        ok(!lstrcmpA(buffer, results[i - 11]), "%d: Expected %s, got %s\n", i, results[i - 11], buffer);
 
         res = RegDeleteValueA(env, name);
         ok(res == ERROR_SUCCESS, "%d: Expected ERROR_SUCCESS, got %d\n", i, res);
@@ -5050,7 +5202,7 @@ error:
     RegCloseKey(env);
 
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_create_remove_folder(void)
@@ -5103,7 +5255,7 @@ error:
     RemoveDirectoryA("msitest\\first");
     RemoveDirectoryA("msitest\\second");
     RemoveDirectoryA("msitest");
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_start_services(void)
@@ -5113,7 +5265,7 @@ static void test_start_services(void)
     BOOL ret;
     DWORD error = ERROR_SUCCESS;
 
-    scm = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+    scm = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
     if (!scm && GetLastError() == ERROR_ACCESS_DENIED)
     {
         skip("Not enough rights to perform tests\n");
@@ -5122,7 +5274,7 @@ static void test_start_services(void)
     ok(scm != NULL, "Failed to open the SC Manager\n");
     if (!scm) return;
 
-    service = OpenService(scm, "Spooler", SC_MANAGER_ALL_ACCESS);
+    service = OpenServiceA(scm, "Spooler", SC_MANAGER_ALL_ACCESS);
     if (!service && GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST)
     {
         win_skip("The 'Spooler' service does not exist\n");
@@ -5135,7 +5287,7 @@ static void test_start_services(void)
         return;
     }
 
-    ret = StartService(service, 0, NULL);
+    ret = StartServiceA(service, 0, NULL);
     if (!ret && (error = GetLastError()) != ERROR_SERVICE_ALREADY_RUNNING)
     {
         skip("Spooler service not available, skipping test\n");
@@ -5170,14 +5322,14 @@ static void test_start_services(void)
     ok(delete_pf("msitest", FALSE), "Directory not created\n");
 
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     if (error == ERROR_SUCCESS)
     {
         SERVICE_STATUS status;
 
-        scm = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
-        service = OpenService(scm, "Spooler", SC_MANAGER_ALL_ACCESS);
+        scm = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+        service = OpenServiceA(scm, "Spooler", SC_MANAGER_ALL_ACCESS);
 
         ret = ControlService(service, SERVICE_CONTROL_STOP, &status);
         ok(ret, "ControlService failed %u\n", GetLastError());
@@ -5199,7 +5351,7 @@ static void test_delete_services(void)
         return;
     }
 
-    manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+    manager = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
     ok(manager != NULL, "can't open service manager %u\n", GetLastError());
     if (!manager) return;
 
@@ -5224,7 +5376,7 @@ static void test_delete_services(void)
     }
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
-    manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+    manager = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
     ok(manager != NULL, "can't open service manager\n");
     if (!manager) goto error;
 
@@ -5253,7 +5405,79 @@ static void test_delete_services(void)
 
 error:
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
+}
+
+static void test_install_services(void)
+{
+    UINT r;
+    SC_HANDLE manager, service;
+    BOOL ret;
+
+    if (is_process_limited())
+    {
+        skip("process is limited\n");
+        return;
+    }
+
+    create_test_files();
+    create_database(msifile, sis_tables, sizeof(sis_tables) / sizeof(msi_table));
+
+    MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
+
+    r = MsiInstallProductA(msifile, NULL);
+    if (r == ERROR_INSTALL_PACKAGE_REJECTED)
+    {
+        skip("Not enough rights to perform tests\n");
+        goto error;
+    }
+    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+
+    manager = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+    ok(manager != NULL, "can't open service manager\n");
+    if (!manager) goto error;
+
+    service = OpenServiceA(manager, "TestService", GENERIC_ALL);
+    ok(service != NULL, "TestService not installed\n");
+    CloseServiceHandle(service);
+
+    service = OpenServiceA(manager, "TestService4", GENERIC_ALL);
+    ok(service == NULL, "TestService4 installed\n");
+    CloseServiceHandle(manager);
+
+    r = MsiInstallProductA(msifile, "REMOVE=ALL");
+    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), "Directory not created\n");
+    ok(delete_pf("msitest\\cabout\\four.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\cabout", FALSE), "Directory not created\n");
+    ok(delete_pf("msitest\\changed\\three.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\changed", FALSE), "Directory not created\n");
+    ok(delete_pf("msitest\\first\\two.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\first", FALSE), "Directory not created\n");
+    ok(delete_pf("msitest\\filename", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\one.txt", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\service.exe", TRUE), "File not installed\n");
+    ok(delete_pf("msitest\\service2.exe", TRUE), "File not installed\n");
+    ok(delete_pf("msitest", FALSE), "Directory not created\n");
+
+    manager = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+    ok(manager != NULL, "can't open service manager\n");
+    if (!manager) goto error;
+
+    service = OpenServiceA(manager, "TestService", GENERIC_ALL);
+    ok(service != NULL, "TestService doesn't exist\n");
+
+    ret = DeleteService( service );
+    ok( ret, "failed to delete service %u\n", GetLastError() );
+
+    CloseServiceHandle(service);
+    CloseServiceHandle(manager);
+
+error:
+    delete_test_files();
+    DeleteFileA(msifile);
 }
 
 static void test_self_registration(void)
@@ -5295,7 +5519,7 @@ static void test_self_registration(void)
 
 error:
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_register_font(void)
@@ -5351,7 +5575,7 @@ static void test_register_font(void)
 error:
     DeleteFileA("msitest\\font.ttf");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_validate_product_id(void)
@@ -5402,7 +5626,7 @@ static void test_validate_product_id(void)
 
 error:
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_install_remove_odbc(void)
@@ -5456,7 +5680,7 @@ error:
     DeleteFileA("msitest\\ODBCtranslator2.dll");
     DeleteFileA("msitest\\ODBCsetup.dll");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_register_typelib(void)
@@ -5495,7 +5719,7 @@ static void test_register_typelib(void)
 error:
     DeleteFileA("msitest\\typelib.dll");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_create_remove_shortcut(void)
@@ -5535,12 +5759,12 @@ static void test_create_remove_shortcut(void)
 error:
     DeleteFileA("msitest\\target.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_publish_components(void)
 {
-    static char keypath[] =
+    static const char keypath[] =
         "Software\\Microsoft\\Installer\\Components\\0CBCFA296AC907244845745CEEB2F8AA";
 
     UINT r;
@@ -5586,7 +5810,7 @@ static void test_publish_components(void)
 error:
     DeleteFileA("msitest\\english.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_remove_duplicate_files(void)
@@ -5636,7 +5860,7 @@ error:
     DeleteFileA("msitest\\original2.txt");
     DeleteFileA("msitest\\original3.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_remove_registry_values(void)
@@ -5755,7 +5979,7 @@ error:
 
     DeleteFileA("msitest\\registry.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_find_related_products(void)
@@ -5795,7 +6019,7 @@ static void test_find_related_products(void)
 error:
     DeleteFileA("msitest\\product.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_remove_ini_values(void)
@@ -5861,7 +6085,7 @@ static void test_remove_ini_values(void)
 error:
     DeleteFileA("msitest\\inifile.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_remove_env_strings(void)
@@ -5912,7 +6136,7 @@ static void test_remove_env_strings(void)
     res = RegQueryValueExA(key, "MSITESTVAR1", NULL, &type, (LPBYTE)buffer, &size);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     ok(type == REG_SZ, "expected REG_SZ, got %u\n", type);
-    ok(!lstrcmp(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
+    ok(!lstrcmpA(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
 
     type = REG_NONE;
     buffer[0] = 0;
@@ -5920,7 +6144,7 @@ static void test_remove_env_strings(void)
     res = RegQueryValueExA(key, "MSITESTVAR2", NULL, &type, (LPBYTE)buffer, &size);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     ok(type == REG_SZ, "expected REG_SZ, got %u\n", type);
-    ok(!lstrcmp(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
+    ok(!lstrcmpA(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
 
     type = REG_NONE;
     buffer[0] = 0;
@@ -5928,7 +6152,7 @@ static void test_remove_env_strings(void)
     res = RegQueryValueExA(key, "MSITESTVAR3", NULL, &type, (LPBYTE)buffer, &size);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     ok(type == REG_SZ, "expected REG_SZ, got %u\n", type);
-    ok(!lstrcmp(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
+    ok(!lstrcmpA(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
 
     type = REG_NONE;
     buffer[0] = 0;
@@ -5936,7 +6160,7 @@ static void test_remove_env_strings(void)
     res = RegQueryValueExA(key, "MSITESTVAR4", NULL, &type, (LPBYTE)buffer, &size);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     ok(type == REG_SZ, "expected REG_SZ, got %u\n", type);
-    ok(!lstrcmp(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
+    ok(!lstrcmpA(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
 
     type = REG_NONE;
     buffer[0] = 0;
@@ -5944,7 +6168,7 @@ static void test_remove_env_strings(void)
     res = RegQueryValueExA(key, "MSITESTVAR5", NULL, &type, (LPBYTE)buffer, &size);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     ok(type == REG_SZ, "expected REG_SZ, got %u\n", type);
-    ok(!lstrcmp(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
+    ok(!lstrcmpA(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
 
     RegCloseKey(key);
 
@@ -5966,7 +6190,7 @@ static void test_remove_env_strings(void)
     res = RegQueryValueExA(key, "MSITESTVAR3", NULL, &type, (LPBYTE)buffer, &size);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     ok(type == REG_SZ, "expected REG_SZ, got %u\n", type);
-    ok(!lstrcmp(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
+    ok(!lstrcmpA(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
     RegDeleteValueA(key, "MSITESTVAR3");
 
     res = RegQueryValueExA(key, "MSITESTVAR4", NULL, NULL, NULL, NULL);
@@ -5978,7 +6202,7 @@ static void test_remove_env_strings(void)
     res = RegQueryValueExA(key, "MSITESTVAR5", NULL, &type, (LPBYTE)buffer, &size);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     ok(type == REG_SZ, "expected REG_SZ, got %u\n", type);
-    ok(!lstrcmp(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
+    ok(!lstrcmpA(buffer, "1"), "expected \"1\", got \"%s\"\n", buffer);
     RegDeleteValueA(key, "MSITESTVAR5");
 
     ok(!delete_pf("msitest\\envvar.txt", TRUE), "file not removed\n");
@@ -5994,7 +6218,7 @@ error:
 
     DeleteFileA("msitest\\envvar.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_register_class_info(void)
@@ -6059,7 +6283,7 @@ static void test_register_class_info(void)
 error:
     DeleteFileA("msitest\\class.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_register_extension_info(void)
@@ -6111,7 +6335,133 @@ static void test_register_extension_info(void)
 error:
     DeleteFileA("msitest\\extension.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
+}
+
+static void test_register_progid_info(void)
+{
+    UINT r;
+    LONG res;
+    HKEY hkey;
+
+    if (is_process_limited())
+    {
+        skip("process is limited\n");
+        return;
+    }
+
+    create_test_files();
+    create_file("msitest\\progid.txt", 1000);
+    create_database(msifile, rpi_tables, sizeof(rpi_tables) / sizeof(msi_table));
+
+    res = RegCreateKeyExA(HKEY_CLASSES_ROOT, "Winetest.Orphaned", 0, NULL, 0,
+                          KEY_ALL_ACCESS, NULL, &hkey, NULL);
+    ok(res == ERROR_SUCCESS, "key not created\n");
+    RegCloseKey(hkey);
+
+    MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
+
+    r = MsiInstallProductA(msifile, NULL);
+    if (r == ERROR_INSTALL_PACKAGE_REJECTED)
+    {
+        skip("Not enough rights to perform tests\n");
+        goto error;
+    }
+    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+
+    if (is_64bit)
+        res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Wow6432Node\\CLSID\\{110913E7-86D1-4BF3-9922-BA103FCDDDFA}", &hkey);
+    else
+        res = RegOpenKeyA(HKEY_CLASSES_ROOT, "CLSID\\{110913E7-86D1-4BF3-9922-BA103FCDDDFA}", &hkey);
+    ok(res == ERROR_SUCCESS, "key not created\n");
+    RegCloseKey(hkey);
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class.1", &hkey);
+    ok(res == ERROR_SUCCESS, "key not created\n");
+    RegCloseKey(hkey);
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class", &hkey);
+    ok(res == ERROR_SUCCESS, "key not created\n");
+    RegCloseKey(hkey);
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class.2", &hkey);
+    ok(res == ERROR_SUCCESS, "key not created\n");
+    RegCloseKey(hkey);
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.VerClass.1", &hkey);
+    ok(res == ERROR_SUCCESS, "key not created\n");
+    RegCloseKey(hkey);
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.VerClass", &hkey);
+    ok(res == ERROR_SUCCESS, "key not created\n");
+    RegCloseKey(hkey);
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.NoProgIdClass.1", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key created\n");
+    if (res == ERROR_SUCCESS) RegCloseKey(hkey);
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.NoProgIdClass", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key created\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Orphaned", &hkey);
+    ok(res == ERROR_SUCCESS, "key deleted\n");
+    if (res == ERROR_SUCCESS) RegCloseKey(hkey);
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Orphaned2", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key created\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Extension", &hkey);
+    ok(res == ERROR_SUCCESS, "key not created\n");
+    RegCloseKey(hkey);
+
+    r = MsiInstallProductA(msifile, "REMOVE=ALL");
+    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+
+    if (is_64bit)
+        res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Wow6432Node\\CLSID\\{110913E7-86D1-4BF3-9922-BA103FCDDDFA}", &hkey);
+    else
+        res = RegOpenKeyA(HKEY_CLASSES_ROOT, "CLSID\\{110913E7-86D1-4BF3-9922-BA103FCDDDFA}", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key not removed\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class.1", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key not removed\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key not removed\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Class.2", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key not removed\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.VerClass.1", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key not removed\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.VerClass", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key not removed\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.NoProgIdClass.1", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key not removed\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.NoProgIdClass", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key not removed\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Orphaned", &hkey);
+    ok(res == ERROR_SUCCESS, "key deleted\n");
+    if (res == ERROR_SUCCESS) RegCloseKey(hkey);
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Orphaned2", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key not removed\n");
+
+    res = RegOpenKeyA(HKEY_CLASSES_ROOT, "Winetest.Extension", &hkey);
+    ok(res == ERROR_FILE_NOT_FOUND, "key not removed\n");
+
+    ok(!delete_pf("msitest\\progid.txt", TRUE), "file not removed\n");
+    ok(!delete_pf("msitest", FALSE), "directory not removed\n");
+
+error:
+    DeleteFileA("msitest\\progid.txt");
+    delete_test_files();
+    DeleteFileA(msifile);
+    RegDeleteKeyA(HKEY_CLASSES_ROOT, "Winetest.Orphaned");
 }
 
 static void test_register_mime_info(void)
@@ -6156,7 +6506,7 @@ static void test_register_mime_info(void)
 error:
     DeleteFileA("msitest\\mime.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_publish_assemblies(void)
@@ -6369,7 +6719,7 @@ done:
     DeleteFileA("msitest\\application_win32.txt");
     DeleteFileA("msitest\\application_dotnet.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_remove_existing_products(void)
@@ -6405,7 +6755,7 @@ static void test_remove_existing_products(void)
 error:
     DeleteFileA("msitest\\rep.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 START_TEST(action)
@@ -6421,7 +6771,7 @@ START_TEST(action)
         pIsWow64Process(GetCurrentProcess(), &is_wow64);
 
     GetCurrentDirectoryA(MAX_PATH, prev_path);
-    GetTempPath(MAX_PATH, temp_path);
+    GetTempPathA(MAX_PATH, temp_path);
     SetCurrentDirectoryA(temp_path);
 
     lstrcpyA(CURR_DIR, temp_path);
@@ -6469,6 +6819,7 @@ START_TEST(action)
     test_create_remove_folder();
     test_start_services();
     test_delete_services();
+    test_install_services();
     test_self_registration();
     test_register_font();
     test_validate_product_id();
@@ -6483,6 +6834,7 @@ START_TEST(action)
     test_remove_env_strings();
     test_register_class_info();
     test_register_extension_info();
+    test_register_progid_info();
     test_register_mime_info();
     test_publish_assemblies();
     test_remove_existing_products();
index c1c1d4a..7ffa22a 100644 (file)
@@ -34,6 +34,8 @@
 
 static BOOL is_wow64;
 
+static BOOL (WINAPI *pCheckTokenMembership)(HANDLE,PSID,PBOOL);
+static BOOL (WINAPI *pOpenProcessToken)(HANDLE, DWORD, PHANDLE);
 static LONG (WINAPI *pRegDeleteKeyExA)(HKEY, LPCSTR, REGSAM, DWORD);
 static BOOL (WINAPI *pIsWow64Process)(HANDLE, PBOOL);
 
@@ -216,12 +218,50 @@ static void init_functionpointers(void)
     if(!p ## func) \
       trace("GetProcAddress(%s) failed\n", #func);
 
+    GET_PROC(hadvapi32, CheckTokenMembership);
+    GET_PROC(hadvapi32, OpenProcessToken);
     GET_PROC(hadvapi32, RegDeleteKeyExA)
     GET_PROC(hkernel32, IsWow64Process)
 
 #undef GET_PROC
 }
 
+static BOOL is_process_limited(void)
+{
+    SID_IDENTIFIER_AUTHORITY NtAuthority = {SECURITY_NT_AUTHORITY};
+    PSID Group;
+    BOOL IsInGroup;
+    HANDLE token;
+
+    if (!pCheckTokenMembership || !pOpenProcessToken) return FALSE;
+
+    if (!AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID,
+                                  DOMAIN_ALIAS_RID_ADMINS,
+                                  0, 0, 0, 0, 0, 0, &Group) ||
+        !pCheckTokenMembership(NULL, Group, &IsInGroup))
+    {
+        trace("Could not check if the current user is an administrator\n");
+        return FALSE;
+    }
+    if (!IsInGroup)
+    {
+        /* Only administrators have enough privileges for these tests */
+        return TRUE;
+    }
+
+    if (pOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token))
+    {
+        BOOL ret;
+        TOKEN_ELEVATION_TYPE type = TokenElevationTypeDefault;
+        DWORD size;
+
+        ret = GetTokenInformation(token, TokenElevationType, &type, sizeof(type), &size);
+        CloseHandle(token);
+        return (ret && type == TokenElevationTypeLimited);
+    }
+    return FALSE;
+}
+
 static LONG delete_key_portable( HKEY key, LPCSTR subkey, REGSAM access )
 {
     if (pRegDeleteKeyExA)
@@ -237,9 +277,8 @@ static void write_file(const CHAR *filename, const char *data, int data_size)
 {
     DWORD size;
 
-    HANDLE hf = CreateFile(filename, GENERIC_WRITE, 0, NULL,
-                           CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-
+    HANDLE hf = CreateFileA(filename, GENERIC_WRITE, 0, NULL,
+                            CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     WriteFile(hf, data, data_size, &size, NULL);
     CloseHandle(hf);
 }
@@ -275,9 +314,14 @@ static void create_database(const CHAR *name, const msi_table *tables, int num_t
 {
     MSIHANDLE db;
     UINT r;
-    int j;
+    WCHAR *nameW;
+    int j, len;
+
+    len = MultiByteToWideChar( CP_ACP, 0, name, -1, NULL, 0 );
+    if (!(nameW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return;
+    MultiByteToWideChar( CP_ACP, 0, name, -1, nameW, len );
 
-    r = MsiOpenDatabaseA(name, MSIDBOPEN_CREATE, &db);
+    r = MsiOpenDatabaseW(nameW, MSIDBOPEN_CREATE, &db);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     /* import the tables into the database */
@@ -299,6 +343,7 @@ static void create_database(const CHAR *name, const msi_table *tables, int num_t
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     MsiCloseHandle(db);
+    HeapFree( GetProcessHeap(), 0, nameW );
 }
 
 static BOOL create_package(LPWSTR path)
@@ -333,13 +378,12 @@ static BOOL get_program_files_dir(LPSTR buf)
     HKEY hkey;
     DWORD type = REG_EXPAND_SZ, size;
 
-    if (RegOpenKey(HKEY_LOCAL_MACHINE,
-                   "Software\\Microsoft\\Windows\\CurrentVersion", &hkey))
+    if (RegOpenKeyA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion", &hkey))
         return FALSE;
 
     size = MAX_PATH;
-    if (RegQueryValueEx(hkey, "ProgramFilesDir (x86)", 0, &type, (LPBYTE)buf, &size) &&
-        RegQueryValueEx(hkey, "ProgramFilesDir", 0, &type, (LPBYTE)buf, &size))
+    if (RegQueryValueExA(hkey, "ProgramFilesDir (x86)", 0, &type, (LPBYTE)buf, &size) &&
+        RegQueryValueExA(hkey, "ProgramFilesDir", 0, &type, (LPBYTE)buf, &size))
         return FALSE;
 
     RegCloseKey(hkey);
@@ -356,7 +400,7 @@ static void create_file(const CHAR *name, DWORD size)
     WriteFile(file, name, strlen(name), &written, NULL);
     WriteFile(file, "\n", strlen("\n"), &written, NULL);
 
-    left = size - lstrlen(name) - 1;
+    left = size - lstrlenA(name) - 1;
 
     SetFilePointer(file, left, NULL, FILE_CURRENT);
     SetEndOfFile(file);
@@ -447,7 +491,7 @@ static CHAR string1[MAX_PATH], string2[MAX_PATH];
         ok(0, format, extra, string1, aString);  \
 
 /* exception checker */
-static WCHAR szSource[] = {'M','s','i',' ','A','P','I',' ','E','r','r','o','r',0};
+static const WCHAR szSource[] = {'M','s','i',' ','A','P','I',' ','E','r','r','o','r',0};
 
 #define ok_exception(hr, szDescription)           \
     if (hr == DISP_E_EXCEPTION) \
@@ -590,7 +634,7 @@ static void test_dispid(void)
 static void test_dispatch(void)
 {
     static WCHAR szOpenPackage[] = { 'O','p','e','n','P','a','c','k','a','g','e',0 };
-    static WCHAR szOpenPackageException[] = {'O','p','e','n','P','a','c','k','a','g','e',',','P','a','c','k','a','g','e','P','a','t','h',',','O','p','t','i','o','n','s',0};
+    static const WCHAR szOpenPackageException[] = {'O','p','e','n','P','a','c','k','a','g','e',',','P','a','c','k','a','g','e','P','a','t','h',',','O','p','t','i','o','n','s',0};
     static WCHAR szProductState[] = { 'P','r','o','d','u','c','t','S','t','a','t','e',0 };
     HRESULT hr;
     DISPID dispid;
@@ -1683,11 +1727,11 @@ static void test_SummaryInfo(IDispatch *pSummaryInfo, const msi_summary_info *in
 
 static void test_Database(IDispatch *pDatabase, BOOL readonly)
 {
-    static WCHAR szSql[] = { 'S','E','L','E','C','T',' ','`','F','e','a','t','u','r','e','`',' ','F','R','O','M',' ','`','F','e','a','t','u','r','e','`',' ','W','H','E','R','E',' ','`','F','e','a','t','u','r','e','_','P','a','r','e','n','t','`','=','\'','O','n','e','\'',0 };
-    static WCHAR szThree[] = { 'T','h','r','e','e',0 };
-    static WCHAR szTwo[] = { 'T','w','o',0 };
-    static WCHAR szStringDataField[] = { 'S','t','r','i','n','g','D','a','t','a',',','F','i','e','l','d',0 };
-    static WCHAR szModifyModeRecord[] = { 'M','o','d','i','f','y',',','M','o','d','e',',','R','e','c','o','r','d',0 };
+    static const WCHAR szSql[] = { 'S','E','L','E','C','T',' ','`','F','e','a','t','u','r','e','`',' ','F','R','O','M',' ','`','F','e','a','t','u','r','e','`',' ','W','H','E','R','E',' ','`','F','e','a','t','u','r','e','_','P','a','r','e','n','t','`','=','\'','O','n','e','\'',0 };
+    static const WCHAR szThree[] = { 'T','h','r','e','e',0 };
+    static const WCHAR szTwo[] = { 'T','w','o',0 };
+    static const WCHAR szStringDataField[] = { 'S','t','r','i','n','g','D','a','t','a',',','F','i','e','l','d',0 };
+    static const WCHAR szModifyModeRecord[] = { 'M','o','d','i','f','y',',','M','o','d','e',',','R','e','c','o','r','d',0 };
     IDispatch *pView = NULL, *pSummaryInfo = NULL;
     HRESULT hr;
 
@@ -1796,17 +1840,17 @@ static void test_Database(IDispatch *pDatabase, BOOL readonly)
 
 static void test_Session(IDispatch *pSession)
 {
-    static WCHAR szProductName[] = { 'P','r','o','d','u','c','t','N','a','m','e',0 };
-    static WCHAR szOne[] = { 'O','n','e',0 };
-    static WCHAR szOneStateFalse[] = { '!','O','n','e','>','0',0 };
-    static WCHAR szOneStateTrue[] = { '!','O','n','e','=','-','1',0 };
-    static WCHAR szOneActionFalse[] = { '$','O','n','e','=','-','1',0 };
-    static WCHAR szOneActionTrue[] = { '$','O','n','e','>','0',0 };
-    static WCHAR szCostInitialize[] = { 'C','o','s','t','I','n','i','t','i','a','l','i','z','e',0 };
-    static WCHAR szEmpty[] = { 0 };
-    static WCHAR szEquals[] = { '=',0 };
-    static WCHAR szPropertyName[] = { 'P','r','o','p','e','r','t','y',',','N','a','m','e',0 };
-    static WCHAR szModeFlag[] = { 'M','o','d','e',',','F','l','a','g',0 };
+    static const WCHAR szProductName[] = { 'P','r','o','d','u','c','t','N','a','m','e',0 };
+    static const WCHAR szOne[] = { 'O','n','e',0 };
+    static const WCHAR szOneStateFalse[] = { '!','O','n','e','>','0',0 };
+    static const WCHAR szOneStateTrue[] = { '!','O','n','e','=','-','1',0 };
+    static const WCHAR szOneActionFalse[] = { '$','O','n','e','=','-','1',0 };
+    static const WCHAR szOneActionTrue[] = { '$','O','n','e','>','0',0 };
+    static const WCHAR szCostInitialize[] = { 'C','o','s','t','I','n','i','t','i','a','l','i','z','e',0 };
+    static const WCHAR szEmpty[] = { 0 };
+    static const WCHAR szEquals[] = { '=',0 };
+    static const WCHAR szPropertyName[] = { 'P','r','o','p','e','r','t','y',',','N','a','m','e',0 };
+    static const WCHAR szModeFlag[] = { 'M','o','d','e',',','F','l','a','g',0 };
     WCHAR stringw[MAX_PATH];
     CHAR string[MAX_PATH];
     UINT len;
@@ -2321,7 +2365,7 @@ static UINT delete_registry_key(HKEY hkeyParent, LPCSTR subkey, REGSAM access)
     HKEY hkey;
     DWORD dwSize;
 
-    ret = RegOpenKeyEx(hkeyParent, subkey, 0, access, &hkey);
+    ret = RegOpenKeyExA(hkeyParent, subkey, 0, access, &hkey);
     if (ret != ERROR_SUCCESS) return ret;
     ret = RegQueryInfoKeyA(hkey, NULL, NULL, NULL, NULL, &dwSize, NULL, NULL, NULL, NULL, NULL, NULL);
     if (ret != ERROR_SUCCESS) return ret;
@@ -2348,7 +2392,7 @@ static UINT find_registry_key(HKEY hkeyParent, LPCSTR subkey, LPCSTR findkey, RE
 
     *phkey = 0;
 
-    ret = RegOpenKeyEx(hkeyParent, subkey, 0, access, &hkey);
+    ret = RegOpenKeyExA(hkeyParent, subkey, 0, access, &hkey);
     if (ret != ERROR_SUCCESS) return ret;
     ret = RegQueryInfoKeyA(hkey, NULL, NULL, NULL, NULL, &dwSize, NULL, NULL, NULL, NULL, NULL, NULL);
     if (ret != ERROR_SUCCESS) return ret;
@@ -2382,6 +2426,15 @@ static void test_Installer_InstallProduct(void)
     IDispatch *pStringList = NULL;
     REGSAM access = KEY_ALL_ACCESS;
 
+    if (is_process_limited())
+    {
+        /* In fact InstallProduct would succeed but then Windows XP
+         * would not allow us to clean up the registry!
+         */
+        skip("Installer_InstallProduct (insufficient privileges)\n");
+        return;
+    }
+
     if (is_wow64)
         access |= KEY_WOW64_64KEY;
 
@@ -2525,7 +2578,7 @@ static void test_Installer_InstallProduct(void)
     ok(res == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %d\n", res);
 
     /* Remove registry keys written by PublishProduct standard action */
-    res = RegOpenKey(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Installer", &hkey);
+    res = RegOpenKeyA(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Installer", &hkey);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
     res = delete_registry_key(hkey, "Products\\af054738b93a8cb43b12803b397f483b", KEY_ALL_ACCESS);
@@ -2542,8 +2595,8 @@ static void test_Installer_InstallProduct(void)
 
 static void test_Installer(void)
 {
-    static WCHAR szCreateRecordException[] = { 'C','r','e','a','t','e','R','e','c','o','r','d',',','C','o','u','n','t',0 };
-    static WCHAR szIntegerDataException[] = { 'I','n','t','e','g','e','r','D','a','t','a',',','F','i','e','l','d',0 };
+    static const WCHAR szCreateRecordException[] = { 'C','r','e','a','t','e','R','e','c','o','r','d',',','C','o','u','n','t',0 };
+    static const 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;
     IDispatch *pSession = NULL, *pDatabase = NULL, *pRecord = NULL, *pStringList = NULL;
@@ -2685,7 +2738,7 @@ START_TEST(automation)
     GetSystemTimeAsFileTime(&systemtime);
 
     GetCurrentDirectoryA(MAX_PATH, prev_path);
-    GetTempPath(MAX_PATH, temp_path);
+    GetTempPathA(MAX_PATH, temp_path);
     SetCurrentDirectoryA(temp_path);
 
     lstrcpyA(CURR_DIR, temp_path);
index 107502f..89d2c9e 100644 (file)
@@ -35,38 +35,39 @@ 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 const WCHAR msifile2W[] = {'w','i','n','e','t','s','t','2','-','d','b','.','m','s','i',0};
 
 static void test_msidatabase(void)
 {
     MSIHANDLE hdb = 0, hdb2 = 0;
     UINT res;
 
-    DeleteFile(msifile);
+    DeleteFileW(msifileW);
 
-    res = MsiOpenDatabase( msifile, msifile2, &hdb );
+    res = MsiOpenDatabaseW( msifileW, msifile2W, &hdb );
     ok( res == ERROR_OPEN_FAILED, "expected failure\n");
 
-    res = MsiOpenDatabase( msifile, (LPSTR) 0xff, &hdb );
+    res = MsiOpenDatabaseW( msifileW, (LPWSTR)0xff, &hdb );
     ok( res == ERROR_INVALID_PARAMETER, "expected failure\n");
 
     res = MsiCloseHandle( hdb );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
 
     /* create an empty database */
-    res = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb );
+    res = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb );
     ok( res == ERROR_SUCCESS , "Failed to create database\n" );
 
     res = MsiDatabaseCommit( hdb );
     ok( res == ERROR_SUCCESS , "Failed to commit database\n" );
 
-    ok( INVALID_FILE_ATTRIBUTES != GetFileAttributes( msifile ), "database should exist\n");
+    ok( GetFileAttributesA( msifile ) != INVALID_FILE_ATTRIBUTES, "database should exist\n");
 
     res = MsiCloseHandle( hdb );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
-    res = MsiOpenDatabase( msifile, msifile2, &hdb2 );
+    res = MsiOpenDatabaseW( msifileW, msifile2W, &hdb2 );
     ok( res == ERROR_SUCCESS , "Failed to open database\n" );
 
-    ok( INVALID_FILE_ATTRIBUTES != GetFileAttributes( msifile2 ), "database should exist\n");
+    ok( GetFileAttributesA( msifile2 ) != INVALID_FILE_ATTRIBUTES, "database should exist\n");
 
     res = MsiDatabaseCommit( hdb2 );
     ok( res == ERROR_SUCCESS , "Failed to commit database\n" );
@@ -74,15 +75,15 @@ static void test_msidatabase(void)
     res = MsiCloseHandle( hdb2 );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
 
-    res = MsiOpenDatabase( msifile, msifile2, &hdb2 );
+    res = MsiOpenDatabaseW( msifileW, msifile2W, &hdb2 );
     ok( res == ERROR_SUCCESS , "Failed to open database\n" );
 
     res = MsiCloseHandle( hdb2 );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
 
-    ok( INVALID_FILE_ATTRIBUTES == GetFileAttributes( msifile2 ), "uncommitted database should not exist\n");
+    ok( GetFileAttributesA( msifile2 ) == INVALID_FILE_ATTRIBUTES, "uncommitted database should not exist\n");
 
-    res = MsiOpenDatabase( msifile, msifile2, &hdb2 );
+    res = MsiOpenDatabaseW( msifileW, msifile2W, &hdb2 );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
 
     res = MsiDatabaseCommit( hdb2 );
@@ -91,9 +92,9 @@ static void test_msidatabase(void)
     res = MsiCloseHandle( hdb2 );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
 
-    ok( INVALID_FILE_ATTRIBUTES != GetFileAttributes( msifile2 ), "committed database should exist\n");
+    ok( GetFileAttributesA( msifile2 ) != INVALID_FILE_ATTRIBUTES, "committed database should exist\n");
 
-    res = MsiOpenDatabase( msifile, MSIDBOPEN_READONLY, &hdb );
+    res = MsiOpenDatabaseW( msifileW, MSIDBOPEN_READONLY, &hdb );
     ok( res == ERROR_SUCCESS , "Failed to open database\n" );
 
     res = MsiDatabaseCommit( hdb );
@@ -102,45 +103,45 @@ static void test_msidatabase(void)
     res = MsiCloseHandle( hdb );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
 
-    res = MsiOpenDatabase( msifile, MSIDBOPEN_DIRECT, &hdb );
+    res = MsiOpenDatabaseW( msifileW, MSIDBOPEN_DIRECT, &hdb );
     ok( res == ERROR_SUCCESS , "Failed to open database\n" );
 
     res = MsiCloseHandle( hdb );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
 
-    res = MsiOpenDatabase( msifile, MSIDBOPEN_TRANSACT, &hdb );
+    res = MsiOpenDatabaseW( msifileW, MSIDBOPEN_TRANSACT, &hdb );
     ok( res == ERROR_SUCCESS , "Failed to open database\n" );
 
     res = MsiCloseHandle( hdb );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
-    ok( INVALID_FILE_ATTRIBUTES != GetFileAttributes( msifile ), "database should exist\n");
+    ok( GetFileAttributesA( msifile ) != INVALID_FILE_ATTRIBUTES, "database should exist\n");
 
     /* MSIDBOPEN_CREATE deletes the database if MsiCommitDatabase isn't called */
-    res = MsiOpenDatabase( msifile, MSIDBOPEN_CREATE, &hdb );
+    res = MsiOpenDatabaseW( msifileW, MSIDBOPEN_CREATE, &hdb );
     ok( res == ERROR_SUCCESS , "Failed to open database\n" );
 
-    ok( INVALID_FILE_ATTRIBUTES != GetFileAttributes( msifile ), "database should exist\n");
+    ok( GetFileAttributesA( msifile ) != INVALID_FILE_ATTRIBUTES, "database should exist\n");
 
     res = MsiCloseHandle( hdb );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
 
-    ok( INVALID_FILE_ATTRIBUTES == GetFileAttributes( msifile ), "database should exist\n");
+    ok( GetFileAttributesA( msifile ) == INVALID_FILE_ATTRIBUTES, "database should exist\n");
 
-    res = MsiOpenDatabase( msifile, MSIDBOPEN_CREATE, &hdb );
+    res = MsiOpenDatabaseW( msifileW, MSIDBOPEN_CREATE, &hdb );
     ok( res == ERROR_SUCCESS , "Failed to open database\n" );
 
     res = MsiDatabaseCommit( hdb );
     ok( res == ERROR_SUCCESS , "Failed to commit database\n" );
 
-    ok( INVALID_FILE_ATTRIBUTES != GetFileAttributes( msifile ), "database should exist\n");
+    ok( GetFileAttributesA( msifile ) != INVALID_FILE_ATTRIBUTES, "database should exist\n");
 
     res = MsiCloseHandle( hdb );
     ok( res == ERROR_SUCCESS , "Failed to close database\n" );
 
-    res = DeleteFile( msifile2 );
+    res = DeleteFileA( msifile2 );
     ok( res == TRUE, "Failed to delete database\n" );
 
-    res = DeleteFile( msifile );
+    res = DeleteFileA( msifile );
     ok( res == TRUE, "Failed to delete database\n" );
 }
 
@@ -153,7 +154,7 @@ static UINT do_query(MSIHANDLE hdb, const char *query, MSIHANDLE *phrec)
         *phrec = 0;
 
     /* open a select query */
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     if (r != ERROR_SUCCESS)
         return r;
     r = MsiViewExecute(hview, 0);
@@ -174,7 +175,7 @@ static UINT run_query( MSIHANDLE hdb, MSIHANDLE hrec, const char *query )
     MSIHANDLE hview = 0;
     UINT r;
 
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     if( r != ERROR_SUCCESS )
         return r;
 
@@ -303,17 +304,17 @@ static void test_msiinsert(void)
     char buf[80];
     DWORD sz;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     /* just MsiOpenDatabase should not create a file */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     /* create a table */
     query = "CREATE TABLE `phone` ( "
             "`id` INT, `name` CHAR(32), `number` CHAR(32) "
             "PRIMARY KEY `id`)";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -323,7 +324,7 @@ static void test_msiinsert(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     query = "SELECT * FROM phone WHERE number = '8675309'";
-    r = MsiDatabaseOpenView(hdb, query, &hview2);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview2);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview2, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -333,7 +334,7 @@ static void test_msiinsert(void)
     /* insert a value into it */
     query = "INSERT INTO `phone` ( `id`, `name`, `number` )"
         "VALUES('1', 'Abe', '8675309')";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -370,11 +371,11 @@ static void test_msiinsert(void)
     r = MsiRecordGetInteger(hrec, 1);
     ok(r == 1, "field 1 contents wrong\n");
     sz = sizeof buf;
-    r = MsiRecordGetString(hrec, 2, buf, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buf, &sz);
     ok(r == ERROR_SUCCESS, "field 2 content fetch failed\n");
     ok(!strcmp(buf,"Abe"), "field 2 content incorrect\n");
     sz = sizeof buf;
-    r = MsiRecordGetString(hrec, 3, buf, &sz);
+    r = MsiRecordGetStringA(hrec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "field 3 content fetch failed\n");
     ok(!strcmp(buf,"8675309"), "field 3 content incorrect\n");
 
@@ -410,22 +411,22 @@ static void test_msiinsert(void)
     /* now try a few bad INSERT xqueries */
     query = "INSERT INTO `phone` ( `id`, `name`, `number` )"
         "VALUES(?, ?)";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "MsiDatabaseOpenView failed\n");
 
     /* construct a record to insert */
     hrec = MsiCreateRecord(4);
     r = MsiRecordSetInteger(hrec, 1, 2);
     ok(r == ERROR_SUCCESS, "MsiRecordSetInteger failed\n");
-    r = MsiRecordSetString(hrec, 2, "Adam");
+    r = MsiRecordSetStringA(hrec, 2, "Adam");
     ok(r == ERROR_SUCCESS, "MsiRecordSetString failed\n");
-    r = MsiRecordSetString(hrec, 3, "96905305");
+    r = MsiRecordSetStringA(hrec, 3, "96905305");
     ok(r == ERROR_SUCCESS, "MsiRecordSetString failed\n");
 
     /* insert another value, using a record and wildcards */
     query = "INSERT INTO `phone` ( `id`, `name`, `number` )"
         "VALUES(?, ?, ?)";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
 
     if (r == ERROR_SUCCESS)
@@ -449,7 +450,7 @@ static void test_msiinsert(void)
     r = MsiCloseHandle(hdb);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
-    r = DeleteFile(msifile);
+    r = DeleteFileA(msifile);
     ok(r == TRUE, "file didn't exist after commit\n");
 }
 
@@ -462,7 +463,7 @@ static void test_msidecomposedesc(void)
     DWORD len;
     HMODULE hmod;
 
-    hmod = GetModuleHandle("msi.dll");
+    hmod = GetModuleHandleA("msi.dll");
     pMsiDecomposeDescriptorA = (void*)GetProcAddress(hmod, "MsiDecomposeDescriptorA");
     if (!pMsiDecomposeDescriptorA)
         return;
@@ -527,7 +528,7 @@ static UINT try_query_param( MSIHANDLE hdb, LPCSTR szQuery, MSIHANDLE hrec )
     MSIHANDLE htab = 0;
     UINT res;
 
-    res = MsiDatabaseOpenView( hdb, szQuery, &htab );
+    res = MsiDatabaseOpenViewA( hdb, szQuery, &htab );
     if(res == ERROR_SUCCESS )
     {
         UINT r;
@@ -558,7 +559,7 @@ static UINT try_insert_query( MSIHANDLE hdb, LPCSTR szQuery )
     UINT r;
 
     hrec = MsiCreateRecord( 1 );
-    MsiRecordSetString( hrec, 1, "Hello");
+    MsiRecordSetStringA( hrec, 1, "Hello");
 
     r = try_query_param( hdb, szQuery, hrec );
 
@@ -571,10 +572,10 @@ static void test_msibadqueries(void)
     MSIHANDLE hdb = 0;
     UINT r;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     /* just MsiOpenDatabase should not create a file */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     r = MsiDatabaseCommit( hdb );
@@ -584,7 +585,7 @@ static void test_msibadqueries(void)
     ok(r == ERROR_SUCCESS , "Failed to close database\n");
 
     /* open it readonly */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_READONLY, &hdb );
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_READONLY, &hdb );
     ok(r == ERROR_SUCCESS , "Failed to open database r/o\n");
 
     /* add a table to it */
@@ -595,7 +596,7 @@ static void test_msibadqueries(void)
     ok(r == ERROR_SUCCESS , "Failed to close database r/o\n");
 
     /* open it read/write */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_TRANSACT, &hdb );
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_TRANSACT, &hdb );
     ok(r == ERROR_SUCCESS , "Failed to open database r/w\n");
 
     /* a bunch of test queries that fail with the native MSI */
@@ -781,7 +782,7 @@ static void test_msibadqueries(void)
     r = MsiCloseHandle( hdb );
     ok(r == ERROR_SUCCESS , "Failed to close database transact\n");
 
-    r = DeleteFile( msifile );
+    r = DeleteFileA( msifile );
     ok(r == TRUE, "file didn't exist after commit\n");
 }
 
@@ -794,10 +795,10 @@ static void test_viewmodify(void)
     char buffer[0x100];
     DWORD sz;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     /* just MsiOpenDatabase should not create a file */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     query = "CREATE TABLE `phone` ( "
@@ -822,39 +823,39 @@ static void test_viewmodify(void)
     /* check what the error function reports without doing anything */
     sz = 0;
     /* passing NULL as the 3rd param make function to crash on older platforms */
-    err = MsiViewGetError( 0, NULL, &sz );
+    err = MsiViewGetErrorA( 0, NULL, &sz );
     ok(err == MSIDBERROR_INVALIDARG, "MsiViewGetError return\n");
 
     /* open a view */
     query = "SELECT * FROM `phone`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
 
     /* see what happens with a good hview and bad args */
-    err = MsiViewGetError( hview, NULL, NULL );
+    err = MsiViewGetErrorA( hview, NULL, NULL );
     ok(err == MSIDBERROR_INVALIDARG || err == MSIDBERROR_NOERROR,
        "MsiViewGetError returns %u (expected -3)\n", err);
-    err = MsiViewGetError( hview, buffer, NULL );
+    err = MsiViewGetErrorA( hview, buffer, NULL );
     ok(err == MSIDBERROR_INVALIDARG, "MsiViewGetError return\n");
 
     /* see what happens with a zero length buffer */
     sz = 0;
     buffer[0] = 'x';
-    err = MsiViewGetError( hview, buffer, &sz );
+    err = MsiViewGetErrorA( hview, buffer, &sz );
     ok(err == MSIDBERROR_MOREDATA, "MsiViewGetError return\n");
     ok(buffer[0] == 'x', "buffer cleared\n");
     ok(sz == 0, "size not zero\n");
 
     /* ok this one is strange */
     sz = 0;
-    err = MsiViewGetError( hview, NULL, &sz );
+    err = MsiViewGetErrorA( hview, NULL, &sz );
     ok(err == MSIDBERROR_NOERROR, "MsiViewGetError return\n");
     ok(sz == 0, "size not zero\n");
 
     /* see if it really has an error */
     sz = sizeof buffer;
     buffer[0] = 'x';
-    err = MsiViewGetError( hview, buffer, &sz );
+    err = MsiViewGetErrorA( hview, buffer, &sz );
     ok(err == MSIDBERROR_NOERROR, "MsiViewGetError return\n");
     ok(buffer[0] == 0, "buffer not cleared\n");
     ok(sz == 0, "size not zero\n");
@@ -875,7 +876,7 @@ static void test_viewmodify(void)
 
     sz = sizeof buffer;
     buffer[0] = 'x';
-    err = MsiViewGetError( hview, buffer, &sz );
+    err = MsiViewGetErrorA( hview, buffer, &sz );
     ok(err == MSIDBERROR_NOERROR, "MsiViewGetError return\n");
     ok(buffer[0] == 0, "buffer not cleared\n");
     ok(sz == 0, "size not zero\n");
@@ -888,9 +889,9 @@ static void test_viewmodify(void)
 
     r = MsiRecordSetInteger(hrec, 1, 1);
     ok(r == ERROR_SUCCESS, "failed to set integer\n");
-    r = MsiRecordSetString(hrec, 2, "bob");
+    r = MsiRecordSetStringA(hrec, 2, "bob");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
-    r = MsiRecordSetString(hrec, 3, "7654321");
+    r = MsiRecordSetStringA(hrec, 3, "7654321");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
 
     r = MsiViewExecute(hview, 0);
@@ -907,7 +908,7 @@ static void test_viewmodify(void)
 
     sz = sizeof buffer;
     buffer[0] = 'x';
-    err = MsiViewGetError( hview, buffer, &sz );
+    err = MsiViewGetErrorA( hview, buffer, &sz );
     ok(err == MSIDBERROR_DUPLICATEKEY, "MsiViewGetError returned %u\n", err);
     ok(!strcmp(buffer, "id"), "expected \"id\" c, got \"%s\"\n", buffer);
     ok(sz == 2, "size not 2\n");
@@ -934,9 +935,9 @@ static void test_viewmodify(void)
 
     r = MsiRecordSetInteger(hrec, 1, 10);
     ok(r == ERROR_SUCCESS, "failed to set integer\n");
-    r = MsiRecordSetString(hrec, 2, "pepe");
+    r = MsiRecordSetStringA(hrec, 2, "pepe");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
-    r = MsiRecordSetString(hrec, 3, "7654321");
+    r = MsiRecordSetStringA(hrec, 3, "7654321");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
 
     r = MsiViewModify(hview, MSIMODIFY_MERGE, hrec );
@@ -953,7 +954,7 @@ static void test_viewmodify(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     query = "SELECT * FROM `phone`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
 
     r = MsiViewExecute(hview, 0);
@@ -966,17 +967,17 @@ static void test_viewmodify(void)
     ok(r == 1, "Expected 1, got %d\n", r);
 
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
-    ok(!lstrcmp(buffer, "bob"), "Expected bob, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "bob"), "Expected bob, got %s\n", buffer);
 
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 3, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
     ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
-    ok(!lstrcmp(buffer, "7654321"), "Expected 7654321, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "7654321"), "Expected 7654321, got %s\n", buffer);
 
     /* update the view, non-primary key */
-    r = MsiRecordSetString(hrec, 3, "3141592");
+    r = MsiRecordSetStringA(hrec, 3, "3141592");
     ok(r == ERROR_SUCCESS, "MsiRecordSetString failed\n");
 
     r = MsiViewModify(hview, MSIMODIFY_UPDATE, hrec);
@@ -1002,7 +1003,7 @@ static void test_viewmodify(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     query = "SELECT * FROM `phone`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
 
     r = MsiViewExecute(hview, 0);
@@ -1015,14 +1016,14 @@ static void test_viewmodify(void)
     ok(r == 1, "Expected 1, got %d\n", r);
 
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
-    ok(!lstrcmp(buffer, "bob"), "Expected bob, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "bob"), "Expected bob, got %s\n", buffer);
 
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 3, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
     ok(r == ERROR_SUCCESS, "MsiRecordGetString failed\n");
-    ok(!lstrcmp(buffer, "3141592"), "Expected 3141592, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "3141592"), "Expected 3141592, got %s\n", buffer);
 
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
@@ -1033,9 +1034,9 @@ static void test_viewmodify(void)
 
     r = MsiRecordSetInteger(hrec, 1, 3);
     ok(r == ERROR_SUCCESS, "failed to set integer\n");
-    r = MsiRecordSetString(hrec, 2, "jane");
+    r = MsiRecordSetStringA(hrec, 2, "jane");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
-    r = MsiRecordSetString(hrec, 3, "112358");
+    r = MsiRecordSetStringA(hrec, 3, "112358");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
 
     r = MsiViewModify(hview, MSIMODIFY_UPDATE, hrec);
@@ -1050,9 +1051,9 @@ static void test_viewmodify(void)
 
     r = MsiRecordSetInteger(hrec, 1, 1);
     ok(r == ERROR_SUCCESS, "failed to set integer\n");
-    r = MsiRecordSetString(hrec, 2, "jane");
+    r = MsiRecordSetStringA(hrec, 2, "jane");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
-    r = MsiRecordSetString(hrec, 3, "112358");
+    r = MsiRecordSetStringA(hrec, 3, "112358");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
 
     r = MsiViewModify(hview, MSIMODIFY_UPDATE, hrec);
@@ -1065,9 +1066,9 @@ static void test_viewmodify(void)
 
     r = MsiRecordSetInteger(hrec, 1, 2);
     ok(r == ERROR_SUCCESS, "failed to set integer\n");
-    r = MsiRecordSetString(hrec, 2, "nick");
+    r = MsiRecordSetStringA(hrec, 2, "nick");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
-    r = MsiRecordSetString(hrec, 3, "141421");
+    r = MsiRecordSetStringA(hrec, 3, "141421");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
 
     r = MsiViewExecute(hview, 0);
@@ -1083,7 +1084,7 @@ static void test_viewmodify(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     query = "SELECT * FROM `phone` WHERE `id` = 1";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -1093,7 +1094,7 @@ static void test_viewmodify(void)
     /* change the id to match the second row */
     r = MsiRecordSetInteger(hrec, 1, 2);
     ok(r == ERROR_SUCCESS, "failed to set integer\n");
-    r = MsiRecordSetString(hrec, 2, "jerry");
+    r = MsiRecordSetStringA(hrec, 2, "jerry");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
 
     r = MsiViewModify(hview, MSIMODIFY_UPDATE, hrec);
@@ -1108,7 +1109,7 @@ static void test_viewmodify(void)
 
     /* broader search */
     query = "SELECT * FROM `phone` ORDER BY `id`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -1118,7 +1119,7 @@ static void test_viewmodify(void)
     /* change the id to match the second row */
     r = MsiRecordSetInteger(hrec, 1, 2);
     ok(r == ERROR_SUCCESS, "failed to set integer\n");
-    r = MsiRecordSetString(hrec, 2, "jerry");
+    r = MsiRecordSetStringA(hrec, 2, "jerry");
     ok(r == ERROR_SUCCESS, "failed to set string\n");
 
     r = MsiViewModify(hview, MSIMODIFY_UPDATE, hrec);
@@ -1140,10 +1141,10 @@ static MSIHANDLE create_db(void)
     MSIHANDLE hdb = 0;
     UINT res;
 
-    DeleteFile(msifile);
+    DeleteFileW(msifileW);
 
     /* create an empty database */
-    res = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb );
+    res = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb );
     ok( res == ERROR_SUCCESS , "Failed to create database\n" );
     if( res != ERROR_SUCCESS )
         return hdb;
@@ -1166,7 +1167,7 @@ static void test_getcolinfo(void)
     ok( hdb, "failed to create db\n");
 
     /* tables should be present */
-    r = MsiDatabaseOpenView(hdb, "select * from _Tables", &hview);
+    r = MsiDatabaseOpenViewA(hdb, "select * from _Tables", &hview);
     ok( r == ERROR_SUCCESS, "failed to open query\n");
 
     r = MsiViewExecute(hview, 0);
@@ -1177,7 +1178,7 @@ static void test_getcolinfo(void)
     r = MsiViewGetColumnInfo( hview, MSICOLINFO_NAMES, &rec );
     ok( r == ERROR_SUCCESS, "failed to get names\n");
     sz = sizeof buffer;
-    r = MsiRecordGetString(rec, 1, buffer, &sz );
+    r = MsiRecordGetStringA(rec, 1, buffer, &sz );
     ok( r == ERROR_SUCCESS, "failed to get string\n");
     ok( !strcmp(buffer,"Name"), "_Tables has wrong column name\n");
     r = MsiCloseHandle( rec );
@@ -1188,7 +1189,7 @@ static void test_getcolinfo(void)
     r = MsiViewGetColumnInfo( hview, MSICOLINFO_TYPES, &rec );
     ok( r == ERROR_SUCCESS, "failed to get names\n");
     sz = sizeof buffer;
-    r = MsiRecordGetString(rec, 1, buffer, &sz );
+    r = MsiRecordGetStringA(rec, 1, buffer, &sz );
     ok( r == ERROR_SUCCESS, "failed to get string\n");
     ok( !strcmp(buffer,"s64"), "_Tables has wrong column type\n");
     r = MsiCloseHandle( rec );
@@ -1219,7 +1220,7 @@ static MSIHANDLE get_column_info(MSIHANDLE hdb, const char *query, MSICOLINFO ty
     MSIHANDLE hview = 0, rec = 0;
     UINT r;
 
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     if( r != ERROR_SUCCESS )
         return r;
 
@@ -1241,7 +1242,7 @@ static UINT get_columns_table_type(MSIHANDLE hdb, const char *table, UINT field)
 
     sprintf(query, "select * from `_Columns` where  `Table` = '%s'", table );
 
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     if( r != ERROR_SUCCESS )
         return r;
 
@@ -1271,7 +1272,7 @@ static BOOL check_record( MSIHANDLE rec, UINT field, LPCSTR val )
     DWORD sz;
 
     sz = sizeof buffer;
-    r = MsiRecordGetString( rec, field, buffer, &sz );
+    r = MsiRecordGetStringA( rec, field, buffer, &sz );
     return (r == ERROR_SUCCESS ) && !strcmp(val, buffer);
 }
 
@@ -1397,17 +1398,17 @@ static void test_msiexport(void)
         "phone\tid\r\n"
         "1\tAbe\t8675309\r\n";
 
-    DeleteFile(msifile);
+    DeleteFileW(msifileW);
 
     /* just MsiOpenDatabase should not create a file */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     /* create a table */
     query = "CREATE TABLE `phone` ( "
             "`id` INT, `name` CHAR(32), `number` CHAR(32) "
             "PRIMARY KEY `id`)";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -1419,7 +1420,7 @@ static void test_msiexport(void)
     /* insert a value into it */
     query = "INSERT INTO `phone` ( `id`, `name`, `number` )"
         "VALUES('1', 'Abe', '8675309')";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -1428,32 +1429,32 @@ static void test_msiexport(void)
     r = MsiCloseHandle(hview);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
-    GetCurrentDirectory(MAX_PATH, path);
+    GetCurrentDirectoryA(MAX_PATH, path);
 
-    r = MsiDatabaseExport(hdb, "phone", path, file);
+    r = MsiDatabaseExportA(hdb, "phone", path, file);
     ok(r == ERROR_SUCCESS, "MsiDatabaseExport failed\n");
 
     MsiCloseHandle(hdb);
 
-    lstrcat(path, "\\");
-    lstrcat(path, file);
+    lstrcatA(path, "\\");
+    lstrcatA(path, file);
 
     /* check the data that was written */
     length = 0;
     memset(buffer, 0, sizeof buffer);
-    handle = CreateFile(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
+    handle = CreateFileA(path, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
     if (handle != INVALID_HANDLE_VALUE)
     {
         ReadFile(handle, buffer, sizeof buffer, &length, NULL);
         CloseHandle(handle);
-        DeleteFile(path);
+        DeleteFileA(path);
     }
     else
         ok(0, "failed to open file %s\n", path);
 
     ok( length == strlen(expected), "length of data wrong\n");
-    ok( !lstrcmp(buffer, expected), "data doesn't match\n");
-    DeleteFile(msifile);
+    ok( !lstrcmpA(buffer, expected), "data doesn't match\n");
+    DeleteFileA(msifile);
 }
 
 static void test_longstrings(void)
@@ -1466,9 +1467,9 @@ static void test_longstrings(void)
     UINT r;
     const DWORD STRING_LENGTH = 0x10005;
 
-    DeleteFile(msifile);
+    DeleteFileW(msifileW);
     /* just MsiOpenDatabase should not create a file */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     /* create a table */
@@ -1476,7 +1477,7 @@ static void test_longstrings(void)
         "CREATE TABLE `strings` ( `id` INT, `val` CHAR(0) PRIMARY KEY `id`)");
     ok(r == ERROR_SUCCESS, "query failed\n");
 
-    /* try a insert a very long string */
+    /* try to insert a very long string */
     str = HeapAlloc(GetProcessHeap(), 0, STRING_LENGTH+sizeof insert_query);
     len = strchr(insert_query, 'Z') - insert_query;
     strcpy(str, insert_query);
@@ -1491,10 +1492,10 @@ static void test_longstrings(void)
     ok(r == ERROR_SUCCESS, "MsiDatabaseCommit failed\n");
     MsiCloseHandle(hdb);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_READONLY, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_READONLY, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
-    r = MsiDatabaseOpenView(hdb, "select * from `strings` where `id` = 1", &hview);
+    r = MsiDatabaseOpenViewA(hdb, "select * from `strings` where `id` = 1", &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
 
     r = MsiViewExecute(hview, 0);
@@ -1506,13 +1507,13 @@ static void test_longstrings(void)
     MsiViewClose(hview);
     MsiCloseHandle(hview);
 
-    r = MsiRecordGetString(hrec, 2, NULL, &len);
+    r = MsiRecordGetStringA(hrec, 2, NULL, &len);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     ok(len == STRING_LENGTH, "string length wrong\n");
 
     MsiCloseHandle(hrec);
     MsiCloseHandle(hdb);
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void create_file_data(LPCSTR name, LPCSTR data, DWORD size)
@@ -1564,7 +1565,7 @@ static void test_streamtable(void)
 
     MsiCloseHandle( hdb );
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_TRANSACT, &hdb );
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_TRANSACT, &hdb );
     ok( r == ERROR_SUCCESS , "Failed to open database\n" );
 
     /* check the column types */
@@ -1585,7 +1586,7 @@ static void test_streamtable(void)
 
     MsiCloseHandle( rec );
 
-    r = MsiDatabaseOpenView( hdb,
+    r = MsiDatabaseOpenViewA( hdb,
             "SELECT * FROM `_Streams` WHERE `Name` = '\5SummaryInformation'", &view );
     ok( r == ERROR_SUCCESS, "Failed to open database view: %u\n", r );
 
@@ -1611,7 +1612,7 @@ static void test_streamtable(void)
 
     MsiCloseHandle( hsi );
 
-    r = MsiDatabaseOpenView( hdb,
+    r = MsiDatabaseOpenViewA( hdb,
             "SELECT * FROM `_Streams` WHERE `Name` = '\5SummaryInformation'", &view );
     ok( r == ERROR_SUCCESS, "Failed to open database view: %u\n", r );
 
@@ -1629,14 +1630,14 @@ static void test_streamtable(void)
     create_file( "test.txt" );
 
     rec = MsiCreateRecord( 2 );
-    MsiRecordSetString( rec, 1, "data" );
+    MsiRecordSetStringA( rec, 1, "data" );
 
-    r = MsiRecordSetStream( rec, 2, "test.txt" );
+    r = MsiRecordSetStreamA( rec, 2, "test.txt" );
     ok( r == ERROR_SUCCESS, "Failed to add stream data to the record: %d\n", r);
 
-    DeleteFile("test.txt");
+    DeleteFileA("test.txt");
 
-    r = MsiDatabaseOpenView( hdb,
+    r = MsiDatabaseOpenViewA( hdb,
             "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &view );
     ok( r == ERROR_SUCCESS, "Failed to open database view: %d\n", r);
 
@@ -1651,14 +1652,14 @@ static void test_streamtable(void)
     create_file( "test1.txt" );
 
     rec = MsiCreateRecord( 2 );
-    MsiRecordSetString( rec, 1, "data1" );
+    MsiRecordSetStringA( rec, 1, "data1" );
 
-    r = MsiRecordSetStream( rec, 2, "test1.txt" );
+    r = MsiRecordSetStreamA( rec, 2, "test1.txt" );
     ok( r == ERROR_SUCCESS, "Failed to add stream data to the record: %d\n", r);
 
-    DeleteFile("test1.txt");
+    DeleteFileA("test1.txt");
 
-    r = MsiDatabaseOpenView( hdb,
+    r = MsiDatabaseOpenViewA( hdb,
             "INSERT INTO `_Streams` ( `Name`, `Data` ) VALUES ( ?, ? )", &view );
     ok( r == ERROR_SUCCESS, "Failed to open database view: %d\n", r);
 
@@ -1669,7 +1670,7 @@ static void test_streamtable(void)
     MsiViewClose( view );
     MsiCloseHandle( view );
 
-    r = MsiDatabaseOpenView( hdb,
+    r = MsiDatabaseOpenViewA( hdb,
             "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data'", &view );
     ok( r == ERROR_SUCCESS, "Failed to open database view: %d\n", r);
 
@@ -1680,21 +1681,21 @@ static void test_streamtable(void)
     ok( r == ERROR_SUCCESS, "Failed to fetch record: %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString( rec, 1, file, &size );
+    r = MsiRecordGetStringA( rec, 1, file, &size );
     ok( r == ERROR_SUCCESS, "Failed to get string: %d\n", r);
-    ok( !lstrcmp(file, "data"), "Expected 'data', got %s\n", file);
+    ok( !lstrcmpA(file, "data"), "Expected 'data', got %s\n", file);
 
     size = MAX_PATH;
     memset(buf, 0, MAX_PATH);
     r = MsiRecordReadStream( rec, 2, buf, &size );
     ok( r == ERROR_SUCCESS, "Failed to get stream: %d\n", r);
-    ok( !lstrcmp(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf);
+    ok( !lstrcmpA(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf);
 
     MsiCloseHandle( rec );
     MsiViewClose( view );
     MsiCloseHandle( view );
 
-    r = MsiDatabaseOpenView( hdb,
+    r = MsiDatabaseOpenViewA( hdb,
             "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data1'", &view );
     ok( r == ERROR_SUCCESS, "Failed to open database view: %d\n", r);
 
@@ -1705,15 +1706,15 @@ static void test_streamtable(void)
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString( rec, 1, file, &size );
+    r = MsiRecordGetStringA( rec, 1, file, &size );
     ok( r == ERROR_SUCCESS, "Failed to get string: %d\n", r);
-    ok( !lstrcmp(file, "data1"), "Expected 'data1', got %s\n", file);
+    ok( !lstrcmpA(file, "data1"), "Expected 'data1', got %s\n", file);
 
     size = MAX_PATH;
     memset(buf, 0, MAX_PATH);
     r = MsiRecordReadStream( rec, 2, buf, &size );
     ok( r == ERROR_SUCCESS, "Failed to get stream: %d\n", r);
-    ok( !lstrcmp(buf, "test1.txt\n"), "Expected 'test1.txt\\n', got %s\n", buf);
+    ok( !lstrcmpA(buf, "test1.txt\n"), "Expected 'test1.txt\\n', got %s\n", buf);
 
     MsiCloseHandle( rec );
     MsiViewClose( view );
@@ -1723,12 +1724,12 @@ static void test_streamtable(void)
     create_file( "test2.txt" );
     rec = MsiCreateRecord( 1 );
 
-    r = MsiRecordSetStream( rec, 1, "test2.txt" );
+    r = MsiRecordSetStreamA( rec, 1, "test2.txt" );
     ok( r == ERROR_SUCCESS, "Failed to add stream data to the record: %d\n", r);
 
-    DeleteFile("test2.txt");
+    DeleteFileA("test2.txt");
 
-    r = MsiDatabaseOpenView( hdb,
+    r = MsiDatabaseOpenViewA( hdb,
             "UPDATE `_Streams` SET `Data` = ? WHERE `Name` = 'data1'", &view );
     ok( r == ERROR_SUCCESS, "Failed to open database view: %d\n", r);
 
@@ -1739,7 +1740,7 @@ static void test_streamtable(void)
     MsiViewClose( view );
     MsiCloseHandle( view );
 
-    r = MsiDatabaseOpenView( hdb,
+    r = MsiDatabaseOpenViewA( hdb,
             "SELECT `Name`, `Data` FROM `_Streams` WHERE `Name` = 'data1'", &view );
     ok( r == ERROR_SUCCESS, "Failed to open database view: %d\n", r);
 
@@ -1750,21 +1751,21 @@ static void test_streamtable(void)
     ok( r == ERROR_SUCCESS, "Failed to fetch record: %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString( rec, 1, file, &size );
+    r = MsiRecordGetStringA( rec, 1, file, &size );
     ok( r == ERROR_SUCCESS, "Failed to get string: %d\n", r);
-    ok( !lstrcmp(file, "data1"), "Expected 'data1', got %s\n", file);
+    ok( !lstrcmpA(file, "data1"), "Expected 'data1', got %s\n", file);
 
     size = MAX_PATH;
     memset(buf, 0, MAX_PATH);
     r = MsiRecordReadStream( rec, 2, buf, &size );
     ok( r == ERROR_SUCCESS, "Failed to get stream: %d\n", r);
-    todo_wine ok( !lstrcmp(buf, "test2.txt\n"), "Expected 'test2.txt\\n', got %s\n", buf);
+    todo_wine ok( !lstrcmpA(buf, "test2.txt\n"), "Expected 'test2.txt\\n', got %s\n", buf);
 
     MsiCloseHandle( rec );
     MsiViewClose( view );
     MsiCloseHandle( view );
     MsiCloseHandle( hdb );
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_binary(void)
@@ -1777,7 +1778,7 @@ static void test_binary(void)
     UINT r;
 
     /* insert a file into the Binary table */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb );
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb );
     ok( r == ERROR_SUCCESS , "Failed to open database\n" );
 
     query = "CREATE TABLE `Binary` ( `Name` CHAR(72) NOT NULL, `ID` INT NOT NULL, `Data` OBJECT  PRIMARY KEY `Name`, `ID`)";
@@ -1786,9 +1787,9 @@ static void test_binary(void)
 
     create_file( "test.txt" );
     rec = MsiCreateRecord( 1 );
-    r = MsiRecordSetStream( rec, 1, "test.txt" );
+    r = MsiRecordSetStreamA( rec, 1, "test.txt" );
     ok( r == ERROR_SUCCESS, "Failed to add stream data to the record: %d\n", r);
-    DeleteFile( "test.txt" );
+    DeleteFileA( "test.txt" );
 
     query = "INSERT INTO `Binary` ( `Name`, `ID`, `Data` ) VALUES ( 'filename1', 1, ? )";
     r = run_query( hdb, rec, query );
@@ -1804,7 +1805,7 @@ static void test_binary(void)
     ok( r == ERROR_SUCCESS , "Failed to close database\n" );
 
     /* read file from the Stream table */
-    r = MsiOpenDatabase( msifile, MSIDBOPEN_READONLY, &hdb );
+    r = MsiOpenDatabaseW( msifileW, MSIDBOPEN_READONLY, &hdb );
     ok( r == ERROR_SUCCESS , "Failed to open database\n" );
 
     query = "SELECT * FROM `_Streams`";
@@ -1812,15 +1813,15 @@ static void test_binary(void)
     ok( r == ERROR_SUCCESS, "SELECT query failed: %d\n", r );
 
     size = MAX_PATH;
-    r = MsiRecordGetString( rec, 1, file, &size );
+    r = MsiRecordGetStringA( rec, 1, file, &size );
     ok( r == ERROR_SUCCESS, "Failed to get string: %d\n", r );
-    ok( !lstrcmp(file, "Binary.filename1.1"), "Expected 'Binary.filename1.1', got %s\n", file );
+    ok( !lstrcmpA(file, "Binary.filename1.1"), "Expected 'Binary.filename1.1', got %s\n", file );
 
     size = MAX_PATH;
     memset( buf, 0, MAX_PATH );
     r = MsiRecordReadStream( rec, 2, buf, &size );
     ok( r == ERROR_SUCCESS, "Failed to get stream: %d\n", r );
-    ok( !lstrcmp(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf );
+    ok( !lstrcmpA(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf );
 
     r = MsiCloseHandle( rec );
     ok( r == ERROR_SUCCESS , "Failed to close record handle\n" );
@@ -1831,15 +1832,15 @@ static void test_binary(void)
     ok( r == ERROR_SUCCESS, "SELECT query failed: %d\n", r );
 
     size = MAX_PATH;
-    r = MsiRecordGetString( rec, 1, file, &size );
+    r = MsiRecordGetStringA( rec, 1, file, &size );
     ok( r == ERROR_SUCCESS, "Failed to get string: %d\n", r );
-    ok( !lstrcmp(file, "filename1"), "Expected 'filename1', got %s\n", file );
+    ok( !lstrcmpA(file, "filename1"), "Expected 'filename1', got %s\n", file );
 
     size = MAX_PATH;
     memset( buf, 0, MAX_PATH );
     r = MsiRecordReadStream( rec, 3, buf, &size );
     ok( r == ERROR_SUCCESS, "Failed to get stream: %d\n", r );
-    ok( !lstrcmp(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf );
+    ok( !lstrcmpA(buf, "test.txt\n"), "Expected 'test.txt\\n', got %s\n", buf );
 
     r = MsiCloseHandle( rec );
     ok( r == ERROR_SUCCESS , "Failed to close record handle\n" );
@@ -1847,7 +1848,7 @@ static void test_binary(void)
     r = MsiCloseHandle( hdb );
     ok( r == ERROR_SUCCESS , "Failed to close database\n" );
 
-    DeleteFile( msifile );
+    DeleteFileA( msifile );
 }
 
 static void test_where_not_in_selected(void)
@@ -1918,7 +1919,7 @@ static void test_where_not_in_selected(void)
     ok(r == S_OK, "cannot add entry to CATable table:%d\n", r );
     query = "Select IESTable.Condition from CATable, IESTable where "
             "CATable.Action = IESTable.Action and CATable.Type = 32";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(view, 0);
@@ -1940,8 +1941,7 @@ static void test_where_not_in_selected(void)
     MsiCloseHandle(view);
 
     MsiCloseHandle( hdb );
-    DeleteFile(msifile);
-
+    DeleteFileA(msifile);
 }
 
 
@@ -2001,7 +2001,7 @@ static void test_where(void)
     MsiCloseHandle( rec );
 
     query = "SELECT `DiskId` FROM `Media` WHERE `LastSequence` >= 1 AND DiskId >= 0";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(view, 0);
@@ -2014,20 +2014,18 @@ static void test_where(void)
     ok( count == 1, "Expected 1 record fields, got %d\n", count );
 
     size = MAX_PATH;
-    r = MsiRecordGetString( rec, 1, buf, &size );
+    r = MsiRecordGetStringA( rec, 1, buf, &size );
     ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-    ok( !lstrcmp( buf, "2" ),
-        "For (row %d, column 1) expected '%d', got %s\n", 0, 2, buf );
+    ok( !lstrcmpA( buf, "2" ), "For (row %d, column 1) expected '%d', got %s\n", 0, 2, buf );
     MsiCloseHandle( rec );
 
     r = MsiViewFetch(view, &rec);
     ok( r == ERROR_SUCCESS, "failed to fetch view: %d\n", r );
 
     size = MAX_PATH;
-    r = MsiRecordGetString( rec, 1, buf, &size );
+    r = MsiRecordGetStringA( rec, 1, buf, &size );
     ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-    ok( !lstrcmp( buf, "3" ),
-        "For (row %d, column 1) expected '%d', got %s\n", 1, 3, buf );
+    ok( !lstrcmpA( buf, "3" ), "For (row %d, column 1) expected '%d', got %s\n", 1, 3, buf );
     MsiCloseHandle( rec );
 
     r = MsiViewFetch(view, &rec);
@@ -2069,10 +2067,10 @@ static void test_where(void)
     MsiCloseHandle( rec );
 
     rec = MsiCreateRecord(1);
-    MsiRecordSetString(rec, 1, "");
+    MsiRecordSetStringA(rec, 1, "");
 
     query = "SELECT * FROM `Media` WHERE `DiskPrompt` = ?";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, rec);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -2087,7 +2085,7 @@ static void test_where(void)
     MsiCloseHandle(view);
 
     MsiCloseHandle( hdb );
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static CHAR CURR_DIR[MAX_PATH];
@@ -2137,9 +2135,8 @@ static void write_file(const CHAR *filename, const char *data, int data_size)
 {
     DWORD size;
 
-    HANDLE hf = CreateFile(filename, GENERIC_WRITE, 0, NULL,
-                           CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-
+    HANDLE hf = CreateFileA(filename, GENERIC_WRITE, 0, NULL,
+                            CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     WriteFile(hf, data, data_size, &size, NULL);
     CloseHandle(hf);
 }
@@ -2148,7 +2145,7 @@ static UINT add_table_to_db(MSIHANDLE hdb, LPCSTR table_data)
 {
     UINT r;
 
-    write_file("temp_file", table_data, (lstrlen(table_data) - 1) * sizeof(char));
+    write_file("temp_file", table_data, (lstrlenA(table_data) - 1) * sizeof(char));
     r = MsiDatabaseImportA(hdb, CURR_DIR, "temp_file");
     DeleteFileA("temp_file");
 
@@ -2166,7 +2163,7 @@ static void test_suminfo_import(void)
 
     GetCurrentDirectoryA(MAX_PATH, CURR_DIR);
 
-    r = MsiOpenDatabaseA(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     r = add_table_to_db(hdb, suminfo);
@@ -2286,7 +2283,7 @@ static void test_msiimport(void)
 
     GetCurrentDirectoryA(MAX_PATH, CURR_DIR);
 
-    r = MsiOpenDatabaseA(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = add_table_to_db(hdb, test_data);
@@ -2302,7 +2299,7 @@ static void test_msiimport(void)
     ok(r == ERROR_FUNCTION_FAILED, "Expected ERROR_FUNCTION_FAILED, got %d\n", r);
 
     query = "SELECT * FROM `TestTable`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewGetColumnInfo(view, MSICOLINFO_NAMES, &rec);
@@ -2363,7 +2360,7 @@ static void test_msiimport(void)
     MsiCloseHandle(view);
 
     query = "SELECT * FROM `TwoPrimary`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewGetColumnInfo(view, MSICOLINFO_NAMES, &rec);
@@ -2412,7 +2409,7 @@ static void test_msiimport(void)
     MsiCloseHandle(view);
 
     query = "SELECT * FROM `Table`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewGetColumnInfo(view, MSICOLINFO_NAMES, &rec);
@@ -2443,7 +2440,7 @@ static void test_msiimport(void)
     MsiCloseHandle(view);
 
     query = "SELECT * FROM `Table`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewExecute(view, 0);
@@ -2499,15 +2496,15 @@ static void test_binary_import(void)
     /* create files to import */
     write_file("bin_import.idt", bin_import_dat,
           (sizeof(bin_import_dat) - 1) * sizeof(char));
-    CreateDirectory("bin_import", NULL);
+    CreateDirectoryA("bin_import", NULL);
     create_file_data("bin_import/filename1.ibd", "just some words", 15);
 
     /* import files into database */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok( r == ERROR_SUCCESS , "Failed to open database\n");
 
-    GetCurrentDirectory(MAX_PATH, path);
-    r = MsiDatabaseImport(hdb, path, "bin_import.idt");
+    GetCurrentDirectoryA(MAX_PATH, path);
+    r = MsiDatabaseImportA(hdb, path, "bin_import.idt");
     ok(r == ERROR_SUCCESS , "Failed to import Binary table\n");
 
     /* read file from the Binary table */
@@ -2516,16 +2513,15 @@ static void test_binary_import(void)
     ok(r == ERROR_SUCCESS, "SELECT query failed: %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(rec, 1, file, &size);
+    r = MsiRecordGetStringA(rec, 1, file, &size);
     ok(r == ERROR_SUCCESS, "Failed to get string: %d\n", r);
-    ok(!lstrcmp(file, "filename1"), "Expected 'filename1', got %s\n", file);
+    ok(!lstrcmpA(file, "filename1"), "Expected 'filename1', got %s\n", file);
 
     size = MAX_PATH;
     memset(buf, 0, MAX_PATH);
     r = MsiRecordReadStream(rec, 2, buf, &size);
     ok(r == ERROR_SUCCESS, "Failed to get stream: %d\n", r);
-    ok(!lstrcmp(buf, "just some words"),
-        "Expected 'just some words', got %s\n", buf);
+    ok(!lstrcmpA(buf, "just some words"), "Expected 'just some words', got %s\n", buf);
 
     r = MsiCloseHandle(rec);
     ok(r == ERROR_SUCCESS , "Failed to close record handle\n");
@@ -2533,9 +2529,9 @@ static void test_binary_import(void)
     r = MsiCloseHandle(hdb);
     ok(r == ERROR_SUCCESS , "Failed to close database\n");
 
-    DeleteFile("bin_import/filename1.ibd");
-    RemoveDirectory("bin_import");
-    DeleteFile("bin_import.idt");
+    DeleteFileA("bin_import/filename1.ibd");
+    RemoveDirectoryA("bin_import");
+    DeleteFileA("bin_import.idt");
 }
 
 static void test_markers(void)
@@ -2548,9 +2544,9 @@ static void test_markers(void)
     ok( hdb, "failed to create db\n");
 
     rec = MsiCreateRecord(3);
-    MsiRecordSetString(rec, 1, "Table");
-    MsiRecordSetString(rec, 2, "Apples");
-    MsiRecordSetString(rec, 3, "Oranges");
+    MsiRecordSetStringA(rec, 1, "Table");
+    MsiRecordSetStringA(rec, 2, "Apples");
+    MsiRecordSetStringA(rec, 3, "Oranges");
 
     /* try a legit create */
     query = "CREATE TABLE `Table` ( `One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
@@ -2560,7 +2556,7 @@ static void test_markers(void)
 
     /* try table name as marker */
     rec = MsiCreateRecord(1);
-    MsiRecordSetString(rec, 1, "Fable");
+    MsiRecordSetStringA(rec, 1, "Fable");
     query = "CREATE TABLE `?` ( `One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -2573,13 +2569,13 @@ static void test_markers(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* try table name as marker without backticks */
-    MsiRecordSetString(rec, 1, "Mable");
+    MsiRecordSetStringA(rec, 1, "Mable");
     query = "CREATE TABLE ? ( `One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
 
     /* try one column name as marker */
-    MsiRecordSetString(rec, 1, "One");
+    MsiRecordSetStringA(rec, 1, "One");
     query = "CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`)";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
@@ -2587,8 +2583,8 @@ static void test_markers(void)
 
     /* try column names as markers */
     rec = MsiCreateRecord(2);
-    MsiRecordSetString(rec, 1, "One");
-    MsiRecordSetString(rec, 2, "Two");
+    MsiRecordSetStringA(rec, 1, "One");
+    MsiRecordSetStringA(rec, 2, "Two");
     query = "CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `One`)";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
@@ -2596,9 +2592,9 @@ static void test_markers(void)
 
     /* try names with backticks */
     rec = MsiCreateRecord(3);
-    MsiRecordSetString(rec, 1, "One");
-    MsiRecordSetString(rec, 2, "Two");
-    MsiRecordSetString(rec, 3, "One");
+    MsiRecordSetStringA(rec, 1, "One");
+    MsiRecordSetStringA(rec, 2, "Two");
+    MsiRecordSetStringA(rec, 3, "One");
     query = "CREATE TABLE `Mable` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `?`)";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
@@ -2616,7 +2612,7 @@ static void test_markers(void)
 
     /* try one long marker */
     rec = MsiCreateRecord(1);
-    MsiRecordSetString(rec, 1, "`One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`");
+    MsiRecordSetStringA(rec, 1, "`One` SHORT NOT NULL, `Two` CHAR(255) PRIMARY KEY `One`");
     query = "CREATE TABLE `Mable` ( ? )";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
@@ -2624,10 +2620,10 @@ static void test_markers(void)
 
     /* try all names as markers */
     rec = MsiCreateRecord(4);
-    MsiRecordSetString(rec, 1, "Mable");
-    MsiRecordSetString(rec, 2, "One");
-    MsiRecordSetString(rec, 3, "Two");
-    MsiRecordSetString(rec, 4, "One");
+    MsiRecordSetStringA(rec, 1, "Mable");
+    MsiRecordSetStringA(rec, 2, "One");
+    MsiRecordSetStringA(rec, 3, "Two");
+    MsiRecordSetStringA(rec, 4, "One");
     query = "CREATE TABLE `?` ( `?` SHORT NOT NULL, `?` CHAR(255) PRIMARY KEY `?`)";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
@@ -2644,7 +2640,7 @@ static void test_markers(void)
     /* try values as markers */
     rec = MsiCreateRecord(2);
     MsiRecordSetInteger(rec, 1, 4);
-    MsiRecordSetString(rec, 2, "hi");
+    MsiRecordSetStringA(rec, 2, "hi");
     query = "INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, '?' )";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -2652,10 +2648,10 @@ static void test_markers(void)
 
     /* try column names and values as markers */
     rec = MsiCreateRecord(4);
-    MsiRecordSetString(rec, 1, "One");
-    MsiRecordSetString(rec, 2, "Two");
+    MsiRecordSetStringA(rec, 1, "One");
+    MsiRecordSetStringA(rec, 2, "Two");
     MsiRecordSetInteger(rec, 3, 5);
-    MsiRecordSetString(rec, 4, "hi");
+    MsiRecordSetStringA(rec, 4, "hi");
     query = "INSERT INTO `Table` ( `?`, `?` ) VALUES ( ?, '?' )";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
@@ -2663,8 +2659,8 @@ static void test_markers(void)
 
     /* try column names as markers */
     rec = MsiCreateRecord(2);
-    MsiRecordSetString(rec, 1, "One");
-    MsiRecordSetString(rec, 2, "Two");
+    MsiRecordSetStringA(rec, 1, "One");
+    MsiRecordSetStringA(rec, 2, "Two");
     query = "INSERT INTO `Table` ( `?`, `?` ) VALUES ( 3, 'yellow' )";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
@@ -2672,7 +2668,7 @@ static void test_markers(void)
 
     /* try table name as a marker */
     rec = MsiCreateRecord(1);
-    MsiRecordSetString(rec, 1, "Table");
+    MsiRecordSetStringA(rec, 1, "Table");
     query = "INSERT INTO `?` ( `One`, `Two` ) VALUES ( 2, 'green' )";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -2680,9 +2676,9 @@ static void test_markers(void)
 
     /* try table name and values as markers */
     rec = MsiCreateRecord(3);
-    MsiRecordSetString(rec, 1, "Table");
+    MsiRecordSetStringA(rec, 1, "Table");
     MsiRecordSetInteger(rec, 2, 10);
-    MsiRecordSetString(rec, 3, "haha");
+    MsiRecordSetStringA(rec, 3, "haha");
     query = "INSERT INTO `?` ( `One`, `Two` ) VALUES ( ?, '?' )";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_FUNCTION_FAILED, "Expected ERROR_FUNCTION_FAILED, got %d\n", r);
@@ -2690,11 +2686,11 @@ static void test_markers(void)
 
     /* try all markers */
     rec = MsiCreateRecord(5);
-    MsiRecordSetString(rec, 1, "Table");
-    MsiRecordSetString(rec, 1, "One");
-    MsiRecordSetString(rec, 1, "Two");
+    MsiRecordSetStringA(rec, 1, "Table");
+    MsiRecordSetStringA(rec, 1, "One");
+    MsiRecordSetStringA(rec, 1, "Two");
     MsiRecordSetInteger(rec, 2, 10);
-    MsiRecordSetString(rec, 3, "haha");
+    MsiRecordSetStringA(rec, 3, "haha");
     query = "INSERT INTO `?` ( `?`, `?` ) VALUES ( ?, '?' )";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
@@ -2702,8 +2698,8 @@ static void test_markers(void)
 
     /* insert an integer as a string */
     rec = MsiCreateRecord(2);
-    MsiRecordSetString(rec, 1, "11");
-    MsiRecordSetString(rec, 2, "hi");
+    MsiRecordSetStringA(rec, 1, "11");
+    MsiRecordSetStringA(rec, 2, "hi");
     query = "INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, '?' )";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -2712,7 +2708,7 @@ static void test_markers(void)
     /* leave off the '' for the string */
     rec = MsiCreateRecord(2);
     MsiRecordSetInteger(rec, 1, 12);
-    MsiRecordSetString(rec, 2, "hi");
+    MsiRecordSetStringA(rec, 2, "hi");
     query = "INSERT INTO `Table` ( `One`, `Two` ) VALUES ( ?, ? )";
     r = run_query(hdb, rec, query);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -2739,7 +2735,7 @@ static void test_handle_limit(void)
     for (i=0; i<MY_NVIEWS; i++) {
         static char szQueryBuf[256] = "SELECT * from `_Tables`";
         hviews[i] = 0xdeadbeeb;
-        r = MsiDatabaseOpenView(hdb, szQueryBuf, &hviews[i]);
+        r = MsiDatabaseOpenViewA(hdb, szQueryBuf, &hviews[i]);
         if( r != ERROR_SUCCESS || hviews[i] == 0xdeadbeeb || 
             hviews[i] == 0 || (i && (hviews[i] == hviews[i-1])))
             break;
@@ -2769,19 +2765,19 @@ static void generate_transform(void)
     UINT r;
 
     /* start with two identical databases */
-    CopyFile(msifile2, msifile, FALSE);
+    CopyFileA(msifile2, msifile, FALSE);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_TRANSACT, &hdb1 );
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_TRANSACT, &hdb1 );
     ok( r == ERROR_SUCCESS , "Failed to create database\n" );
 
     r = MsiDatabaseCommit( hdb1 );
     ok( r == ERROR_SUCCESS , "Failed to commit database\n" );
 
-    r = MsiOpenDatabase(msifile2, MSIDBOPEN_READONLY, &hdb2 );
+    r = MsiOpenDatabaseW(msifile2W, MSIDBOPEN_READONLY, &hdb2 );
     ok( r == ERROR_SUCCESS , "Failed to create database\n" );
 
     /* the transform between two identical database should be empty */
-    r = MsiDatabaseGenerateTransform(hdb1, hdb2, NULL, 0, 0);
+    r = MsiDatabaseGenerateTransformA(hdb1, hdb2, NULL, 0, 0);
     todo_wine {
     ok( r == ERROR_NO_DATA, "return code %d, should be ERROR_NO_DATA\n", r );
     }
@@ -2811,7 +2807,7 @@ static void generate_transform(void)
     ok(r == ERROR_SUCCESS, "failed to set integer\n");
 
     write_file("testdata.bin", "naengmyon", 9);
-    r = MsiRecordSetStream(hrec, 2, "testdata.bin");
+    r = MsiRecordSetStreamA(hrec, 2, "testdata.bin");
     ok(r == ERROR_SUCCESS, "failed to set stream\n");
 
     query = "INSERT INTO `BINARY` ( `ID`, `BLOB` ) VALUES ( ?, ? )";
@@ -2844,13 +2840,13 @@ static void generate_transform(void)
     /* database needs to be committed */
     MsiDatabaseCommit(hdb1);
 
-    r = MsiDatabaseGenerateTransform(hdb1, hdb2, mstfile, 0, 0);
+    r = MsiDatabaseGenerateTransformA(hdb1, hdb2, mstfile, 0, 0);
     ok( r == ERROR_SUCCESS, "return code %d, should be ERROR_SUCCESS\n", r );
 
     MsiCloseHandle( hdb1 );
     MsiCloseHandle( hdb2 );
 
-    DeleteFile("testdata.bin");
+    DeleteFileA("testdata.bin");
 }
 
 /* data for generating a transform */
@@ -2985,33 +2981,33 @@ static UINT set_summary_info(MSIHANDLE hdb)
     MSIHANDLE suminfo;
 
     /* build summary info */
-    res = MsiGetSummaryInformation(hdb, NULL, 7, &suminfo);
+    res = MsiGetSummaryInformationA(hdb, NULL, 7, &suminfo);
     ok( res == ERROR_SUCCESS , "Failed to open summaryinfo\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,2, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,2, VT_LPSTR, 0,NULL,
                         "Installation Database");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,3, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,3, VT_LPSTR, 0,NULL,
                         "Installation Database");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,4, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,4, VT_LPSTR, 0,NULL,
                         "Wine Hackers");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,7, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,7, VT_LPSTR, 0,NULL,
                     ";1033,2057");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,9, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,9, VT_LPSTR, 0,NULL,
                     "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo, 14, VT_I4, 100, NULL, NULL);
+    res = MsiSummaryInfoSetPropertyA(suminfo, 14, VT_I4, 100, NULL, NULL);
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo, 15, VT_I4, 0, NULL, NULL);
+    res = MsiSummaryInfoSetPropertyA(suminfo, 15, VT_I4, 0, NULL, NULL);
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
     res = MsiSummaryInfoPersist(suminfo);
@@ -3023,15 +3019,15 @@ static UINT set_summary_info(MSIHANDLE hdb)
     return res;
 }
 
-static MSIHANDLE create_package_db(LPCSTR filename)
+static MSIHANDLE create_package_db(const WCHAR *filename)
 {
     MSIHANDLE hdb = 0;
     UINT res;
 
-    DeleteFile(msifile);
+    DeleteFileW(msifileW);
 
     /* create an empty database */
-    res = MsiOpenDatabase(filename, MSIDBOPEN_CREATE, &hdb );
+    res = MsiOpenDatabaseW(filename, MSIDBOPEN_CREATE, &hdb );
     ok( res == ERROR_SUCCESS , "Failed to create database\n" );
     if( res != ERROR_SUCCESS )
         return hdb;
@@ -3055,7 +3051,7 @@ static UINT package_from_db(MSIHANDLE hdb, MSIHANDLE *handle)
     MSIHANDLE hPackage;
 
     sprintf(szPackage, "#%u", hdb);
-    res = MsiOpenPackage(szPackage, &hPackage);
+    res = MsiOpenPackageA(szPackage, &hPackage);
     if (res != ERROR_SUCCESS)
         return res;
 
@@ -3078,11 +3074,11 @@ static void test_try_transform(void)
     DWORD sz;
     char buffer[MAX_PATH];
 
-    DeleteFile(msifile);
-    DeleteFile(mstfile);
+    DeleteFileA(msifile);
+    DeleteFileA(mstfile);
 
     /* create the database */
-    hdb = create_package_db(msifile);
+    hdb = create_package_db(msifileW);
     ok(hdb, "Failed to create package db\n");
 
     query = "CREATE TABLE `MOO` ( `NOO` SHORT NOT NULL, `OOO` CHAR(255) PRIMARY KEY `NOO`)";
@@ -3110,7 +3106,7 @@ static void test_try_transform(void)
     ok(r == ERROR_SUCCESS, "failed to set integer\n");
 
     write_file("testdata.bin", "lamyon", 6);
-    r = MsiRecordSetStream(hrec, 2, "testdata.bin");
+    r = MsiRecordSetStreamA(hrec, 2, "testdata.bin");
     ok(r == ERROR_SUCCESS, "failed to set stream\n");
 
     query = "INSERT INTO `BINARY` ( `ID`, `BLOB` ) VALUES ( ?, ? )";
@@ -3135,10 +3131,10 @@ static void test_try_transform(void)
     else
         generate_transform_manual();
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_DIRECT, &hdb );
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_DIRECT, &hdb );
     ok( r == ERROR_SUCCESS , "Failed to create database\n" );
 
-    r = MsiDatabaseApplyTransform( hdb, mstfile, 0 );
+    r = MsiDatabaseApplyTransformA( hdb, mstfile, 0 );
     ok( r == ERROR_SUCCESS, "return code %d, should be ERROR_SUCCESS\n", r );
 
     MsiDatabaseCommit( hdb );
@@ -3194,7 +3190,7 @@ static void test_try_transform(void)
     /* check the validity of the table with a deleted row */
     hrec = 0;
     query = "select * from `MOO`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "open view failed\n");
 
     r = MsiViewExecute(hview, 0);
@@ -3207,7 +3203,7 @@ static void test_try_transform(void)
     ok(r == 1, "Expected 1, got %d\n", r);
 
     sz = sizeof buffer;
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "record get string failed\n");
     ok(!lstrcmpA(buffer, "c"), "Expected c, got %s\n", buffer);
 
@@ -3226,7 +3222,7 @@ static void test_try_transform(void)
     ok(r == 2, "Expected 2, got %d\n", r);
 
     sz = sizeof buffer;
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "record get string failed\n");
     ok(!lstrcmpA(buffer, "b"), "Expected b, got %s\n", buffer);
 
@@ -3255,16 +3251,16 @@ static void test_try_transform(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     sz = MAX_PATH;
-    r = MsiGetProperty(hpkg, "prop", buffer, &sz);
+    r = MsiGetPropertyA(hpkg, "prop", buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "val"), "Expected val, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "val"), "Expected val, got %s\n", buffer);
 
     MsiCloseHandle(hpkg);
 
 error:
     MsiCloseHandle(hdb);
-    DeleteFile(msifile);
-    DeleteFile(mstfile);
+    DeleteFileA(msifile);
+    DeleteFileA(mstfile);
 }
 
 struct join_res
@@ -3484,7 +3480,7 @@ static void test_join(void)
             "FROM `Component`, `FeatureComponents` "
             "WHERE `Component`.`Component` = `FeatureComponents`.`Component_` "
             "ORDER BY `Feature_`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3497,15 +3493,15 @@ static void test_join(void)
         ok( count == 2, "Expected 2 record fields, got %d\n", count );
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 1, buf, &size );
+        r = MsiRecordGetStringA( hrec, 1, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        ok( !lstrcmp( buf, join_res_first[i].one ),
+        ok( !lstrcmpA( buf, join_res_first[i].one ),
             "For (row %d, column 1) expected '%s', got %s\n", i, join_res_first[i].one, buf );
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 2, buf, &size );
+        r = MsiRecordGetStringA( hrec, 2, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        ok( !lstrcmp( buf, join_res_first[i].two ),
+        ok( !lstrcmpA( buf, join_res_first[i].two ),
             "For (row %d, column 2) expected '%s', got %s\n", i, join_res_first[i].two, buf );
 
         i++;
@@ -3521,7 +3517,7 @@ static void test_join(void)
     /* try a join without a WHERE condition */
     query = "SELECT `Component`.`ComponentId`, `FeatureComponents`.`Feature_` "
             "FROM `Component`, `FeatureComponents` ";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3541,7 +3537,7 @@ static void test_join(void)
     query = "SELECT DISTINCT Component, ComponentId FROM FeatureComponents, Component "
             "WHERE FeatureComponents.Component_=Component.Component "
             "AND (Feature_='nasalis') ORDER BY Feature_";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3555,15 +3551,15 @@ static void test_join(void)
         ok( count == 2, "Expected 2 record fields, got %d\n", count );
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 1, buf, &size );
+        r = MsiRecordGetStringA( hrec, 1, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_second[i].one ))
+        if( lstrcmpA( buf, join_res_second[i].one ))
             data_correct = FALSE;
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 2, buf, &size );
+        r = MsiRecordGetStringA( hrec, 2, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_second[i].two ))
+        if( lstrcmpA( buf, join_res_second[i].two ))
             data_correct = FALSE;
 
         i++;
@@ -3582,7 +3578,7 @@ static void test_join(void)
             "FROM `StdDlls`, `Binary` "
             "WHERE `StdDlls`.`Binary_` = `Binary`.`Name` "
             "ORDER BY `File`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3596,15 +3592,15 @@ static void test_join(void)
         ok( count == 2, "Expected 2 record fields, got %d\n", count );
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 1, buf, &size );
+        r = MsiRecordGetStringA( hrec, 1, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_third[i].one ) )
+        if( lstrcmpA( buf, join_res_third[i].one ) )
             data_correct = FALSE;
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 2, buf, &size );
+        r = MsiRecordGetStringA( hrec, 2, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_third[i].two ) )
+        if( lstrcmpA( buf, join_res_third[i].two ) )
             data_correct = FALSE;
 
         i++;
@@ -3623,7 +3619,7 @@ static void test_join(void)
             "FROM `StdDlls`, `Binary` "
             "WHERE `StdDlls`.`File` = `Binary`.`Data` "
             "ORDER BY `Name`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3637,15 +3633,15 @@ static void test_join(void)
         ok( count == 2, "Expected 2 record fields, got %d\n", count );
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 1, buf, &size );
+        r = MsiRecordGetStringA( hrec, 1, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_fourth[i].one ))
+        if( lstrcmpA( buf, join_res_fourth[i].one ))
             data_correct = FALSE;
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 2, buf, &size );
+        r = MsiRecordGetStringA( hrec, 2, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_fourth[i].two ))
+        if( lstrcmpA( buf, join_res_fourth[i].two ))
             data_correct = FALSE;
 
         i++;
@@ -3664,7 +3660,7 @@ static void test_join(void)
             "WHERE `Component`.`Component` = 'zygomatic' "
             "AND `FeatureComponents`.`Component_` = 'maxilla' "
             "ORDER BY `Feature_`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3678,15 +3674,15 @@ static void test_join(void)
         ok( count == 2, "Expected 2 record fields, got %d\n", count );
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 1, buf, &size );
+        r = MsiRecordGetStringA( hrec, 1, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_fifth[i].one ))
+        if( lstrcmpA( buf, join_res_fifth[i].one ))
             data_correct = FALSE;
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 2, buf, &size );
+        r = MsiRecordGetStringA( hrec, 2, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_fifth[i].two ))
+        if( lstrcmpA( buf, join_res_fifth[i].two ))
             data_correct = FALSE;
 
         i++;
@@ -3704,7 +3700,7 @@ static void test_join(void)
             "FROM `Component`, `FeatureComponents` "
             "WHERE `Component` = 'zygomatic' "
             "ORDER BY `Feature_`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3718,15 +3714,15 @@ static void test_join(void)
         ok( count == 2, "Expected 2 record fields, got %d\n", count );
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 1, buf, &size );
+        r = MsiRecordGetStringA( hrec, 1, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_sixth[i].one ))
+        if( lstrcmpA( buf, join_res_sixth[i].one ))
             data_correct = FALSE;
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 2, buf, &size );
+        r = MsiRecordGetStringA( hrec, 2, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_sixth[i].two ))
+        if( lstrcmpA( buf, join_res_sixth[i].two ))
             data_correct = FALSE;
 
         i++;
@@ -3745,7 +3741,7 @@ static void test_join(void)
             "WHERE `Component` = 'zygomatic' "
             "AND `Feature_` = 'nasalis' "
             "ORDER BY `Feature_`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3759,15 +3755,15 @@ static void test_join(void)
         ok( count == 2, "Expected 2 record fields, got %d\n", count );
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 1, buf, &size );
+        r = MsiRecordGetStringA( hrec, 1, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_seventh[i].one ))
+        if( lstrcmpA( buf, join_res_seventh[i].one ))
             data_correct = FALSE;
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 2, buf, &size );
+        r = MsiRecordGetStringA( hrec, 2, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_seventh[i].two ))
+        if( lstrcmpA( buf, join_res_seventh[i].two ))
             data_correct = FALSE;
 
         i++;
@@ -3783,7 +3779,7 @@ static void test_join(void)
 
     query = "SELECT `StdDlls`.`File`, `Binary`.`Data` "
             "FROM `StdDlls`, `Binary` ";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3797,15 +3793,15 @@ static void test_join(void)
         ok( count == 2, "Expected 2 record fields, got %d\n", count );
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 1, buf, &size );
+        r = MsiRecordGetStringA( hrec, 1, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_eighth[i].one ))
+        if( lstrcmpA( buf, join_res_eighth[i].one ))
             data_correct = FALSE;
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 2, buf, &size );
+        r = MsiRecordGetStringA( hrec, 2, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_eighth[i].four ))
+        if( lstrcmpA( buf, join_res_eighth[i].four ))
             data_correct = FALSE;
 
         i++;
@@ -3820,7 +3816,7 @@ static void test_join(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `StdDlls`, `Binary` ";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3834,27 +3830,27 @@ static void test_join(void)
         ok( count == 4, "Expected 4 record fields, got %d\n", count );
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 1, buf, &size );
+        r = MsiRecordGetStringA( hrec, 1, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_eighth[i].one ))
+        if( lstrcmpA( buf, join_res_eighth[i].one ))
             data_correct = FALSE;
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 2, buf, &size );
+        r = MsiRecordGetStringA( hrec, 2, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_eighth[i].two ))
+        if( lstrcmpA( buf, join_res_eighth[i].two ))
             data_correct = FALSE;
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 3, buf, &size );
+        r = MsiRecordGetStringA( hrec, 3, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_eighth[i].three ))
+        if( lstrcmpA( buf, join_res_eighth[i].three ))
             data_correct = FALSE;
 
         size = MAX_PATH;
-        r = MsiRecordGetString( hrec, 4, buf, &size );
+        r = MsiRecordGetStringA( hrec, 4, buf, &size );
         ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-        if( lstrcmp( buf, join_res_eighth[i].four ))
+        if( lstrcmpA( buf, join_res_eighth[i].four ))
             data_correct = FALSE;
 
         i++;
@@ -3869,7 +3865,7 @@ static void test_join(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `One`, `Two`, `Three` ";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3918,7 +3914,7 @@ static void test_join(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `Four`, `Five`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3931,7 +3927,7 @@ static void test_join(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `Nonexistent`, `One`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_BAD_QUERY_SYNTAX,
         "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r );
 
@@ -3940,7 +3936,7 @@ static void test_join(void)
             "FROM `Component`, `FeatureComponents` "
             "WHERE `Component`.`Component` = `FeatureComponents`.`Component_` "
             "ORDER BY `Feature_`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok( r == ERROR_SUCCESS, "failed to open view: %d\n", r );
 
     r = MsiViewExecute(hview, 0);
@@ -3949,7 +3945,7 @@ static void test_join(void)
     r = MsiViewFetch(hview, &hrec);
     ok( r == ERROR_SUCCESS, "failed to fetch view: %d\n", r );
 
-    r = MsiRecordSetString( hrec, 1, "epicranius" );
+    r = MsiRecordSetStringA( hrec, 1, "epicranius" );
     ok( r == ERROR_SUCCESS, "failed to set string: %d\n", r );
 
     r = MsiViewModify(hview, MSIMODIFY_UPDATE, hrec);
@@ -3963,7 +3959,7 @@ static void test_join(void)
     r = MsiViewModify(hview, MSIMODIFY_DELETE, hrec);
     ok( r == ERROR_FUNCTION_FAILED, "unexpected result: %d\n", r );
 
-    r = MsiRecordSetString( hrec, 2, "epicranius" );
+    r = MsiRecordSetStringA( hrec, 2, "epicranius" );
     ok( r == ERROR_SUCCESS, "failed to set string: %d\n", r );
 
     /* primary key cannot be updated */
@@ -3974,7 +3970,7 @@ static void test_join(void)
     MsiViewClose(hview);
     MsiCloseHandle(hview);
 
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
 
     r = MsiViewExecute(hview, 0);
@@ -3984,16 +3980,16 @@ static void test_join(void)
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
 
     size = MAX_PATH;
-    r = MsiRecordGetString( hrec, 1, buf, &size );
+    r = MsiRecordGetStringA( hrec, 1, buf, &size );
     ok( r == ERROR_SUCCESS, "failed to get record string: %d\n", r );
-    ok( !lstrcmp( buf, "epicranius" ), "expected 'epicranius', got %s\n", buf );
+    ok( !lstrcmpA( buf, "epicranius" ), "expected 'epicranius', got %s\n", buf );
 
     MsiCloseHandle(hrec);
     MsiViewClose(hview);
     MsiCloseHandle(hview);
 
     MsiCloseHandle(hdb);
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_temporary_table(void)
@@ -4005,46 +4001,46 @@ static void test_temporary_table(void)
     char buf[0x10];
     DWORD sz;
 
-    cond = MsiDatabaseIsTablePersistent(0, NULL);
+    cond = MsiDatabaseIsTablePersistentA(0, NULL);
     ok( cond == MSICONDITION_ERROR, "wrong return condition\n");
 
     hdb = create_db();
     ok( hdb, "failed to create db\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, NULL);
+    cond = MsiDatabaseIsTablePersistentA(hdb, NULL);
     ok( cond == MSICONDITION_ERROR, "wrong return condition\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "_Tables");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "_Tables");
     ok( cond == MSICONDITION_NONE, "wrong return condition\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "_Columns");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "_Columns");
     ok( cond == MSICONDITION_NONE, "wrong return condition\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "_Storages");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "_Storages");
     ok( cond == MSICONDITION_NONE, "wrong return condition\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "_Streams");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "_Streams");
     ok( cond == MSICONDITION_NONE, "wrong return condition\n");
 
     query = "CREATE TABLE `P` ( `B` SHORT NOT NULL, `C` CHAR(255) PRIMARY KEY `C`)";
     r = run_query(hdb, 0, query);
     ok(r == ERROR_SUCCESS, "failed to add table\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "P");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "P");
     ok( cond == MSICONDITION_TRUE, "wrong return condition\n");
 
     query = "CREATE TABLE `P2` ( `B` SHORT NOT NULL, `C` CHAR(255) PRIMARY KEY `C`) HOLD";
     r = run_query(hdb, 0, query);
     ok(r == ERROR_SUCCESS, "failed to add table\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "P2");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "P2");
     ok( cond == MSICONDITION_TRUE, "wrong return condition\n");
 
     query = "CREATE TABLE `T` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`) HOLD";
     r = run_query(hdb, 0, query);
     ok(r == ERROR_SUCCESS, "failed to add table\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "T");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "T");
     ok( cond == MSICONDITION_FALSE, "wrong return condition\n");
 
     query = "CREATE TABLE `T2` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`)";
@@ -4052,25 +4048,25 @@ static void test_temporary_table(void)
     ok(r == ERROR_SUCCESS, "failed to add table\n");
 
     query = "SELECT * FROM `T2`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_BAD_QUERY_SYNTAX,
        "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "T2");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "T2");
     ok( cond == MSICONDITION_NONE, "wrong return condition\n");
 
     query = "CREATE TABLE `T3` ( `B` SHORT NOT NULL TEMPORARY, `C` CHAR(255) PRIMARY KEY `C`)";
     r = run_query(hdb, 0, query);
     ok(r == ERROR_SUCCESS, "failed to add table\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "T3");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "T3");
     ok( cond == MSICONDITION_TRUE, "wrong return condition\n");
 
     query = "CREATE TABLE `T4` ( `B` SHORT NOT NULL, `C` CHAR(255) TEMPORARY PRIMARY KEY `C`)";
     r = run_query(hdb, 0, query);
     ok(r == ERROR_FUNCTION_FAILED, "failed to add table\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "T4");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "T4");
     ok( cond == MSICONDITION_NONE, "wrong return condition\n");
 
     query = "CREATE TABLE `T5` ( `B` SHORT NOT NULL TEMP, `C` CHAR(255) TEMP PRIMARY KEY `C`) HOLD";
@@ -4078,18 +4074,18 @@ static void test_temporary_table(void)
     ok(r == ERROR_BAD_QUERY_SYNTAX, "failed to add table\n");
 
     query = "select * from `T`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "failed to query table\n");
     r = MsiViewGetColumnInfo(view, MSICOLINFO_TYPES, &rec);
     ok(r == ERROR_SUCCESS, "failed to get column info\n");
 
     sz = sizeof buf;
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "failed to get string\n");
     ok( 0 == strcmp("G255", buf), "wrong column type\n");
 
     sz = sizeof buf;
-    r = MsiRecordGetString(rec, 2, buf, &sz);
+    r = MsiRecordGetStringA(rec, 2, buf, &sz);
     ok(r == ERROR_SUCCESS, "failed to get string\n");
     ok( 0 == strcmp("j2", buf), "wrong column type\n");
 
@@ -4114,8 +4110,7 @@ static void test_temporary_table(void)
     if (rec) MsiCloseHandle( rec );
 
     MsiCloseHandle( hdb );
-
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_alter(void)
@@ -4132,7 +4127,7 @@ static void test_alter(void)
     r = run_query(hdb, 0, query);
     ok(r == ERROR_SUCCESS, "failed to add table\n");
 
-    cond = MsiDatabaseIsTablePersistent(hdb, "T");
+    cond = MsiDatabaseIsTablePersistentA(hdb, "T");
     ok( cond == MSICONDITION_FALSE, "wrong return condition\n");
 
     query = "ALTER TABLE `T` HOLD";
@@ -4292,7 +4287,7 @@ static void test_alter(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     MsiCloseHandle( hdb );
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_integers(void)
@@ -4303,7 +4298,7 @@ static void test_integers(void)
     UINT r;
 
     /* just MsiOpenDatabase should not create a file */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     /* create a table */
@@ -4312,7 +4307,7 @@ static void test_integers(void)
             "`five` SHORT NOT NULL, `six` INT NOT NULL, "
             "`seven` INTEGER NOT NULL, `eight` LONG NOT NULL "
             "PRIMARY KEY `one`)";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -4322,7 +4317,7 @@ static void test_integers(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     query = "SELECT * FROM `integers`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewGetColumnInfo(view, MSICOLINFO_NAMES, &rec);
@@ -4359,7 +4354,7 @@ static void test_integers(void)
     /* insert values into it, NULL where NOT NULL is specified */
     query = "INSERT INTO `integers` ( `one`, `two`, `three`, `four`, `five`, `six`, `seven`, `eight` )"
         "VALUES('', '', '', '', '', '', '', '')";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_FUNCTION_FAILED, "Expected ERROR_FUNCTION_FAILED, got %d\n", r);
@@ -4379,7 +4374,7 @@ static void test_integers(void)
     /* insert legitimate values into it */
     query = "INSERT INTO `integers` ( `one`, `two`, `three`, `four`, `five`, `six`, `seven`, `eight` )"
         "VALUES('', '2', '', '4', '5', '6', '7', '8')";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4418,7 +4413,7 @@ static void test_integers(void)
     r = MsiCloseHandle(hdb);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
-    r = DeleteFile(msifile);
+    r = DeleteFileA(msifile);
     ok(r == TRUE, "file didn't exist after commit\n");
 }
 
@@ -4431,7 +4426,7 @@ static void test_update(void)
     UINT r;
 
     /* just MsiOpenDatabase should not create a file */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     /* create the Control table */
@@ -4440,7 +4435,7 @@ static void test_update(void)
         "`X` SHORT NOT NULL, `Y` SHORT NOT NULL, `Width` SHORT NOT NULL, `Height` SHORT NOT NULL,"
         "`Attributes` LONG, `Property` CHAR(50), `Text` CHAR(0) LOCALIZABLE, "
         "`Control_Next` CHAR(50), `Help` CHAR(50) LOCALIZABLE PRIMARY KEY `Dialog_`, `Control`)";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -4454,7 +4449,7 @@ static void test_update(void)
         "`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, "
         "`Property`, `Text`, `Control_Next`, `Help` )"
         "VALUES('ErrorDialog', 'ErrorText', '1', '5', '5', '5', '5', '', '', '', '')";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4468,7 +4463,7 @@ static void test_update(void)
         "`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, "
         "`Property`, `Text`, `Control_Next`, `Help` )"
         "VALUES('ErrorDialog', 'Button', '1', '5', '5', '5', '5', '', '', '', '')";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4482,7 +4477,7 @@ static void test_update(void)
         "`Dialog_`, `Control`, `Type`, `X`, `Y`, `Width`, `Height`, "
         "`Property`, `Text`, `Control_Next`, `Help` )"
         "VALUES('AnotherDialog', 'ErrorText', '1', '5', '5', '5', '5', '', '', '', '')";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4493,22 +4488,22 @@ static void test_update(void)
 
     /* bad table */
     query = "UPDATE `NotATable` SET `Text` = 'this is text' WHERE `Dialog_` = 'ErrorDialog'";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
 
     /* bad set column */
     query = "UPDATE `Control` SET `NotAColumn` = 'this is text' WHERE `Dialog_` = 'ErrorDialog'";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
 
     /* bad where condition */
     query = "UPDATE `Control` SET `Text` = 'this is text' WHERE `NotAColumn` = 'ErrorDialog'";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
 
     /* just the dialog_ specified */
     query = "UPDATE `Control` SET `Text` = 'this is text' WHERE `Dialog_` = 'ErrorDialog'";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4519,7 +4514,7 @@ static void test_update(void)
 
     /* check the modified text */
     query = "SELECT `Text` FROM `Control` WHERE `Control` = 'ErrorText'";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4528,9 +4523,9 @@ static void test_update(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(rec, 1, result, &size);
+    r = MsiRecordGetStringA(rec, 1, result, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(result, "this is text"), "Expected `this is text`, got %s\n", result);
+    ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
 
     MsiCloseHandle(rec);
 
@@ -4538,9 +4533,9 @@ static void test_update(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(rec, 1, result, &size);
+    r = MsiRecordGetStringA(rec, 1, result, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrlen(result), "Expected an empty string, got %s\n", result);
+    ok(!lstrlenA(result), "Expected an empty string, got %s\n", result);
 
     MsiCloseHandle(rec);
 
@@ -4554,7 +4549,7 @@ static void test_update(void)
 
     /* dialog_ and control specified */
     query = "UPDATE `Control` SET `Text` = 'this is text' WHERE `Dialog_` = 'ErrorDialog' AND `Control` = 'ErrorText'";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4565,7 +4560,7 @@ static void test_update(void)
 
     /* check the modified text */
     query = "SELECT `Text` FROM `Control` WHERE `Control` = 'ErrorText'";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4574,9 +4569,9 @@ static void test_update(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(rec, 1, result, &size);
+    r = MsiRecordGetStringA(rec, 1, result, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(result, "this is text"), "Expected `this is text`, got %s\n", result);
+    ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
 
     MsiCloseHandle(rec);
 
@@ -4584,9 +4579,9 @@ static void test_update(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(rec, 1, result, &size);
+    r = MsiRecordGetStringA(rec, 1, result, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrlen(result), "Expected an empty string, got %s\n", result);
+    ok(!lstrlenA(result), "Expected an empty string, got %s\n", result);
 
     MsiCloseHandle(rec);
 
@@ -4600,7 +4595,7 @@ static void test_update(void)
 
     /* no where condition */
     query = "UPDATE `Control` SET `Text` = 'this is text'";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4611,7 +4606,7 @@ static void test_update(void)
 
     /* check the modified text */
     query = "SELECT `Text` FROM `Control`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4620,9 +4615,9 @@ static void test_update(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(rec, 1, result, &size);
+    r = MsiRecordGetStringA(rec, 1, result, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(result, "this is text"), "Expected `this is text`, got %s\n", result);
+    ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
 
     MsiCloseHandle(rec);
 
@@ -4630,9 +4625,9 @@ static void test_update(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(rec, 1, result, &size);
+    r = MsiRecordGetStringA(rec, 1, result, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(result, "this is text"), "Expected `this is text`, got %s\n", result);
+    ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
 
     MsiCloseHandle(rec);
 
@@ -4640,9 +4635,9 @@ static void test_update(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(rec, 1, result, &size);
+    r = MsiRecordGetStringA(rec, 1, result, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(result, "this is text"), "Expected `this is text`, got %s\n", result);
+    ok(!lstrcmpA(result, "this is text"), "Expected `this is text`, got %s\n", result);
 
     MsiCloseHandle(rec);
 
@@ -4676,7 +4671,7 @@ static void test_update(void)
 
     rec = MsiCreateRecord(2);
     MsiRecordSetInteger(rec, 1, 8);
-    MsiRecordSetString(rec, 2, "two");
+    MsiRecordSetStringA(rec, 2, "two");
 
     query = "UPDATE `Apple` SET `Pear` = ? WHERE `Orange` = ?";
     r = run_query(hdb, rec, query);
@@ -4685,7 +4680,7 @@ static void test_update(void)
     MsiCloseHandle(rec);
 
     query = "SELECT `Pear` FROM `Apple` ORDER BY `Orange`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -4725,7 +4720,7 @@ static void test_update(void)
     r = MsiCloseHandle(hdb);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_special_tables(void)
@@ -4734,7 +4729,7 @@ static void test_special_tables(void)
     MSIHANDLE hdb = 0;
     UINT r;
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     query = "CREATE TABLE `_Properties` ( "
@@ -4774,7 +4769,7 @@ static void test_tables_order(void)
     char buffer[100];
     DWORD sz;
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     query = "CREATE TABLE `foo` ( "
@@ -4798,7 +4793,7 @@ static void test_tables_order(void)
        be in the same order as these names are created in
        the strings table. */
     query = "SELECT * FROM `_Tables`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -4806,27 +4801,27 @@ static void test_tables_order(void)
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "foo"), "Expected foo, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "bar"), "Expected bar, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "bar"), "Expected bar, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
@@ -4839,7 +4834,7 @@ static void test_tables_order(void)
        be in the same order as these names are created in
        the strings table. */
     query = "SELECT * FROM `_Columns`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -4847,65 +4842,65 @@ static void test_tables_order(void)
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "foo"), "Expected foo, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 3, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 3, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "bar"), "Expected bar, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "bar"), "Expected bar, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 3, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "baz"), "Expected baz, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "baz"), "Expected baz, got %s\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 3, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "foo"), "Expected foo, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "bar"), "Expected bar, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "bar"), "Expected bar, got %s\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 3, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "foo"), "Expected foo, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "foo"), "Expected foo, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
@@ -4917,7 +4912,7 @@ static void test_tables_order(void)
     r = MsiCloseHandle(hdb);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_rows_order(void)
@@ -4928,7 +4923,7 @@ static void test_rows_order(void)
     char buffer[100];
     DWORD sz;
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     query = "CREATE TABLE `foo` ( "
@@ -4988,7 +4983,7 @@ static void test_rows_order(void)
        in the string table.  */
 
     query = "SELECT * FROM `bar`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -4996,52 +4991,52 @@ static void test_rows_order(void)
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "A"), "Expected A, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "A"), "Expected A, got %s\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "B"), "Expected B, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "B"), "Expected B, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "C"), "Expected E, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "C"), "Expected E, got %s\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "E"), "Expected E, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "E"), "Expected E, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "D"), "Expected D, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "D"), "Expected D, got %s\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "E"), "Expected E, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "E"), "Expected E, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "F"), "Expected F, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "F"), "Expected F, got %s\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "A"), "Expected A, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "A"), "Expected A, got %s\n", buffer);
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "failed to close record\n");
 
@@ -5053,7 +5048,7 @@ static void test_rows_order(void)
     r = MsiCloseHandle(hdb);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_collation(void)
@@ -5093,7 +5088,7 @@ static void test_collation(void)
     WCHAR bufferW[100];
     DWORD sz;
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     query = "CREATE TABLE `bar` ( "
@@ -5130,7 +5125,7 @@ static void test_collation(void)
     ok(r == ERROR_SUCCESS, "cannot create table %u\n", r);
 
     query = "SELECT * FROM `bar`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5138,25 +5133,25 @@ static void test_collation(void)
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "\2"), "Expected \\2, got '%s'\n", buffer);
+    ok(!lstrcmpA(buffer, "\2"), "Expected \\2, got '%s'\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "A"), "Expected A, got '%s'\n", buffer);
+    ok(!lstrcmpA(buffer, "A"), "Expected A, got '%s'\n", buffer);
     MsiCloseHandle(hrec);
 
     r = MsiViewFetch(hview, &hrec);
     ok(r == ERROR_SUCCESS, "MsiViewFetch failed\n");
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "\1"), "Expected \\1, got '%s'\n", buffer);
+    ok(!lstrcmpA(buffer, "\1"), "Expected \\1, got '%s'\n", buffer);
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "B"), "Expected B, got '%s'\n", buffer);
+    ok(!lstrcmpA(buffer, "B"), "Expected B, got '%s'\n", buffer);
     MsiCloseHandle(hrec);
 
     r = MsiViewFetch(hview, &hrec);
@@ -5219,7 +5214,7 @@ static void test_collation(void)
     r = MsiCloseHandle(hdb);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_select_markers(void)
@@ -5254,11 +5249,11 @@ static void test_select_markers(void)
     ok(r == S_OK, "cannot add file to the Media table: %d\n", r);
 
     rec = MsiCreateRecord(2);
-    MsiRecordSetString(rec, 1, "apple");
-    MsiRecordSetString(rec, 2, "two");
+    MsiRecordSetStringA(rec, 1, "apple");
+    MsiRecordSetStringA(rec, 2, "two");
 
     query = "SELECT * FROM `Table` WHERE `One`=? AND `Two`=? ORDER BY `Three`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewExecute(view, rec);
@@ -5268,14 +5263,14 @@ static void test_select_markers(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(res, 1, buf, &size);
+    r = MsiRecordGetStringA(res, 1, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buf, "apple"), "Expected apple, got %s\n", buf);
+    ok(!lstrcmpA(buf, "apple"), "Expected apple, got %s\n", buf);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(res, 2, buf, &size);
+    r = MsiRecordGetStringA(res, 2, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buf, "two"), "Expected two, got %s\n", buf);
+    ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
 
     r = MsiRecordGetInteger(res, 3);
     ok(r == 1, "Expected 1, got %d\n", r);
@@ -5286,14 +5281,14 @@ static void test_select_markers(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(res, 1, buf, &size);
+    r = MsiRecordGetStringA(res, 1, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buf, "apple"), "Expected apple, got %s\n", buf);
+    ok(!lstrcmpA(buf, "apple"), "Expected apple, got %s\n", buf);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(res, 2, buf, &size);
+    r = MsiRecordGetStringA(res, 2, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buf, "two"), "Expected two, got %s\n", buf);
+    ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
 
     r = MsiRecordGetInteger(res, 3);
     ok(r == 2, "Expected 2, got %d\n", r);
@@ -5308,11 +5303,11 @@ static void test_select_markers(void)
     MsiCloseHandle(view);
 
     rec = MsiCreateRecord(2);
-    MsiRecordSetString(rec, 1, "one");
+    MsiRecordSetStringA(rec, 1, "one");
     MsiRecordSetInteger(rec, 2, 1);
 
     query = "SELECT * FROM `Table` WHERE `Two`<>? AND `Three`>? ORDER BY `Three`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, rec);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5321,14 +5316,14 @@ static void test_select_markers(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(res, 1, buf, &size);
+    r = MsiRecordGetStringA(res, 1, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buf, "apple"), "Expected apple, got %s\n", buf);
+    ok(!lstrcmpA(buf, "apple"), "Expected apple, got %s\n", buf);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(res, 2, buf, &size);
+    r = MsiRecordGetStringA(res, 2, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buf, "two"), "Expected two, got %s\n", buf);
+    ok(!lstrcmpA(buf, "two"), "Expected two, got %s\n", buf);
 
     r = MsiRecordGetInteger(res, 3);
     ok(r == 2, "Expected 2, got %d\n", r);
@@ -5339,14 +5334,14 @@ static void test_select_markers(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(res, 1, buf, &size);
+    r = MsiRecordGetStringA(res, 1, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buf, "banana"), "Expected banana, got %s\n", buf);
+    ok(!lstrcmpA(buf, "banana"), "Expected banana, got %s\n", buf);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(res, 2, buf, &size);
+    r = MsiRecordGetStringA(res, 2, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buf, "three"), "Expected three, got %s\n", buf);
+    ok(!lstrcmpA(buf, "three"), "Expected three, got %s\n", buf);
 
     r = MsiRecordGetInteger(res, 3);
     ok(r == 3, "Expected 3, got %d\n", r);
@@ -5360,7 +5355,7 @@ static void test_select_markers(void)
     MsiViewClose(view);
     MsiCloseHandle(view);
     MsiCloseHandle(hdb);
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_viewmodify_update(void)
@@ -5370,9 +5365,9 @@ static void test_viewmodify_update(void)
     const char *query;
     UINT r;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     query = "CREATE TABLE `table` (`A` INT, `B` INT PRIMARY KEY `A`)";
@@ -5392,7 +5387,7 @@ static void test_viewmodify_update(void)
     ok(r == ERROR_SUCCESS, "query failed\n");
 
     query = "SELECT `B` FROM `table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5414,7 +5409,7 @@ static void test_viewmodify_update(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     query = "SELECT * FROM `table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5461,7 +5456,7 @@ static void test_viewmodify_update(void)
 
     /* loop through all elements */
     query = "SELECT `B` FROM `table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5488,7 +5483,7 @@ static void test_viewmodify_update(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     query = "SELECT * FROM `table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5538,7 +5533,7 @@ static void test_viewmodify_update(void)
     ok(r == ERROR_SUCCESS, "query failed\n");
 
     query = "INSERT INTO `table2` (`A`, `B`) VALUES (?, ?)";
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
 
     test_max = 100;
@@ -5564,7 +5559,7 @@ static void test_viewmodify_update(void)
 
     /* Update. */
     query = "SELECT * FROM `table2` ORDER BY `B`";
-    r = MsiDatabaseOpenView( hdb, query, &hview);
+    r = MsiDatabaseOpenViewA( hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute( hview, 0 );
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5593,7 +5588,7 @@ static void test_viewmodify_update(void)
 
     /* Recheck. */
     query = "SELECT * FROM `table2` ORDER BY `B`";
-    r = MsiDatabaseOpenView( hdb, query, &hview);
+    r = MsiDatabaseOpenViewA( hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute( hview, 0 );
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5628,9 +5623,9 @@ static void test_viewmodify_assign(void)
     UINT r;
 
     /* setup database */
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     query = "CREATE TABLE `table` (`A` INT, `B` INT PRIMARY KEY `A`)";
@@ -5639,7 +5634,7 @@ static void test_viewmodify_assign(void)
 
     /* assign to view, new primary key */
     query = "SELECT * FROM `table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5664,7 +5659,7 @@ static void test_viewmodify_assign(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     query = "SELECT * FROM `table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5689,7 +5684,7 @@ static void test_viewmodify_assign(void)
 
     /* assign to view, primary key matches */
     query = "SELECT * FROM `table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5714,7 +5709,7 @@ static void test_viewmodify_assign(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     query = "SELECT * FROM `table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -5790,9 +5785,9 @@ static void test_stringtable(void)
     static const WCHAR moo[] = {0x4840, 0x3e16, 0x4818, 0}; /* MOO */
     static const WCHAR aar[] = {0x4840, 0x3a8a, 0x481b, 0}; /* AAR */
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "CREATE TABLE `MOO` (`A` INT, `B` CHAR(72) PRIMARY KEY `A`)";
@@ -5815,7 +5810,7 @@ static void test_stringtable(void)
 
     /* open a view */
     query = "SELECT * FROM `MOO`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5824,7 +5819,7 @@ static void test_stringtable(void)
 
     r = MsiRecordSetInteger(hrec, 1, 3);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    r = MsiRecordSetString(hrec, 2, "three");
+    r = MsiRecordSetStringA(hrec, 2, "three");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* insert a nonpersistent row */
@@ -5854,11 +5849,11 @@ static void test_stringtable(void)
     r = MsiCloseHandle(hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_READONLY, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_READONLY, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `MOO`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewExecute(hview, 0);
@@ -5874,9 +5869,9 @@ static void test_stringtable(void)
     ok(r == 1, "Expected 1, got %d\n", r);
 
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "one"), "Expected one, got '%s'\n", buffer);
+    ok(!lstrcmpA(buffer, "one"), "Expected one, got '%s'\n", buffer);
 
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5892,7 +5887,7 @@ static void test_stringtable(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `AAR`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewExecute(hview, 0);
@@ -5908,9 +5903,9 @@ static void test_stringtable(void)
     ok(r == 2, "Expected 2, got %d\n", r);
 
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "two"), "Expected two, got '%s'\n", buffer);
+    ok(!lstrcmpA(buffer, "two"), "Expected two, got '%s'\n", buffer);
 
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5925,9 +5920,9 @@ static void test_stringtable(void)
     ok(r == 5, "Expected 5, got %d\n", r);
 
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "five"), "Expected five, got '%s'\n", buffer);
+    ok(!lstrcmpA(buffer, "five"), "Expected five, got '%s'\n", buffer);
 
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6017,10 +6012,10 @@ static void test_viewmodify_delete(void)
     char buffer[0x100];
     DWORD sz;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     /* just MsiOpenDatabase should not create a file */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "CREATE TABLE `phone` ( "
@@ -6045,7 +6040,7 @@ static void test_viewmodify_delete(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `phone` WHERE `id` <= 2";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6073,7 +6068,7 @@ static void test_viewmodify_delete(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `phone`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6084,14 +6079,14 @@ static void test_viewmodify_delete(void)
     ok(r == 3, "Expected 3, got %d\n", r);
 
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 2, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "Cindy"), "Expected Cindy, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "Cindy"), "Expected Cindy, got %s\n", buffer);
 
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 3, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 3, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "2937550"), "Expected 2937550, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "2937550"), "Expected 2937550, got %s\n", buffer);
 
     r = MsiCloseHandle(hrec);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6192,9 +6187,9 @@ static void test_defaultdatabase(void)
     MSIHANDLE hdb;
     IStorage *stg = NULL;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiDatabaseCommit(hdb);
@@ -6260,7 +6255,7 @@ static void test_order(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT `A`, `B` FROM `Mesa` ORDER BY `C`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6305,7 +6300,7 @@ static void test_order(void)
     MsiCloseHandle(hview);
 
     query = "SELECT `A`, `D` FROM `Mesa`, `Sideboard` ORDER BY `F`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6416,7 +6411,7 @@ static void test_order(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `Empty` ORDER BY `A`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6444,7 +6439,7 @@ static void test_order(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `Buffet` WHERE `One` = 'dos' ORDER BY `Two`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6453,9 +6448,9 @@ static void test_order(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     sz = sizeof(buffer);
-    r = MsiRecordGetString(hrec, 1, buffer, &sz);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "dos"), "Expected \"dos\", got \"%s\"\n", buffer);
+    ok(!lstrcmpA(buffer, "dos"), "Expected \"dos\", got \"%s\"\n", buffer);
 
     r = MsiRecordGetInteger(hrec, 2);
     ok(r == 3, "Expected 3, got %d\n", r);
@@ -6476,9 +6471,9 @@ static void test_viewmodify_delete_temporary(void)
     const char *query;
     UINT r;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "CREATE TABLE `Table` ( `A` SHORT PRIMARY KEY `A` )";
@@ -6486,7 +6481,7 @@ static void test_viewmodify_delete_temporary(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `Table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6526,7 +6521,7 @@ static void test_viewmodify_delete_temporary(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `Table` WHERE  `A` = 2";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6541,7 +6536,7 @@ static void test_viewmodify_delete_temporary(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `Table` WHERE  `A` = 3";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6556,7 +6551,7 @@ static void test_viewmodify_delete_temporary(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `Table` ORDER BY `A`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6594,9 +6589,9 @@ static void test_deleterow(void)
     UINT r;
     DWORD size;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
@@ -6620,11 +6615,11 @@ static void test_deleterow(void)
 
     MsiCloseHandle(hdb);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_READONLY, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_READONLY, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `Table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6661,9 +6656,9 @@ static void test_quotes(void)
     UINT r;
     DWORD size;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
@@ -6702,7 +6697,7 @@ static void test_quotes(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `Table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewExecute(hview, 0);
@@ -6712,9 +6707,9 @@ static void test_quotes(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(hrec, 1, buf, &size);
+    r = MsiRecordGetStringA(hrec, 1, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buf, "This is a \"string\" ok"),
+    ok(!lstrcmpA(buf, "This is a \"string\" ok"),
        "Expected \"This is a \"string\" ok\", got %s\n", buf);
 
     MsiCloseHandle(hrec);
@@ -6733,7 +6728,7 @@ static void test_quotes(void)
     DeleteFileA("import.idt");
 
     query = "SELECT * FROM `Table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewExecute(hview, 0);
@@ -6743,9 +6738,9 @@ static void test_quotes(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(hrec, 1, buf, &size);
+    r = MsiRecordGetStringA(hrec, 1, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buf, "This is a new 'string' ok"),
+    ok(!lstrcmpA(buf, "This is a new 'string' ok"),
        "Expected \"This is a new 'string' ok\", got %s\n", buf);
 
     MsiCloseHandle(hrec);
@@ -6767,9 +6762,9 @@ static void test_carriagereturn(void)
     UINT r;
     DWORD size;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "CREATE TABLE `Table`\r ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
@@ -6900,7 +6895,7 @@ static void test_carriagereturn(void)
        "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
 
     query = "SELECT * FROM `_Tables`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6953,9 +6948,9 @@ static void test_noquotes(void)
     UINT r;
     DWORD size;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "CREATE TABLE Table ( `A` CHAR(72) NOT NULL PRIMARY KEY `A` )";
@@ -6975,7 +6970,7 @@ static void test_noquotes(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `_Tables`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -7017,7 +7012,7 @@ static void test_noquotes(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `_Columns`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -7107,7 +7102,7 @@ static void test_noquotes(void)
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
 
     query = "SELECT * FROM Table2";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -7119,7 +7114,7 @@ static void test_noquotes(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `Table` WHERE A = 'hi'";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -7161,10 +7156,10 @@ static void test_forcecodepage(void)
     char buffer[MAX_PATH];
     UINT r;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     GetCurrentDirectoryA(MAX_PATH, CURR_DIR);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `_ForceCodepage`";
@@ -7188,14 +7183,14 @@ static void test_forcecodepage(void)
 
     MsiCloseHandle(hdb);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_DIRECT, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_DIRECT, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `_ForceCodepage`";
     r = run_query(hdb, 0, query);
     ok(r == ERROR_BAD_QUERY_SYNTAX, "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
 
-    r = MsiDatabaseExport(hdb, "_ForceCodepage", CURR_DIR, "forcecodepage.idt");
+    r = MsiDatabaseExportA(hdb, "_ForceCodepage", CURR_DIR, "forcecodepage.idt");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     read_file_data("forcecodepage.idt", buffer);
@@ -7207,7 +7202,7 @@ static void test_forcecodepage(void)
     r = MsiDatabaseImportA(hdb, CURR_DIR, "forcecodepage.idt");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
-    r = MsiDatabaseExport(hdb, "_ForceCodepage", CURR_DIR, "forcecodepage.idt");
+    r = MsiDatabaseExportA(hdb, "_ForceCodepage", CURR_DIR, "forcecodepage.idt");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     read_file_data("forcecodepage.idt", buffer);
@@ -7232,9 +7227,9 @@ static void test_viewmodify_refresh(void)
     UINT r;
     DWORD size;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "CREATE TABLE `Table` ( `A` CHAR(72) NOT NULL, `B` INT PRIMARY KEY `A` )";
@@ -7246,7 +7241,7 @@ static void test_viewmodify_refresh(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `Table`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -7279,7 +7274,7 @@ static void test_viewmodify_refresh(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `Table` WHERE `B` = 3";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -7320,9 +7315,9 @@ static void test_where_viewmodify(void)
     const char *query;
     UINT r;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "CREATE TABLE `Table` ( `A` INT, `B` INT PRIMARY KEY `A` )";
@@ -7343,7 +7338,7 @@ static void test_where_viewmodify(void)
 
     /* `B` = 3 doesn't match, but the view shouldn't be executed */
     query = "SELECT * FROM `Table` WHERE `B` = 3";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     hrec = MsiCreateRecord(2);
@@ -7358,7 +7353,7 @@ static void test_where_viewmodify(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `Table` WHERE `A` = 7";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -7382,7 +7377,7 @@ static void test_where_viewmodify(void)
     MsiCloseHandle(hview);
 
     query = "SELECT * FROM `Table` WHERE `A` = 7";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -7467,7 +7462,7 @@ static void test_storages_table(void)
 
     MsiCloseHandle(hdb);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_TRANSACT, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_TRANSACT, &hdb);
     ok(r == ERROR_SUCCESS , "Failed to open database\n");
 
     /* check the column types */
@@ -7489,15 +7484,15 @@ static void test_storages_table(void)
     create_storage("storage.bin");
 
     hrec = MsiCreateRecord(2);
-    MsiRecordSetString(hrec, 1, "stgname");
+    MsiRecordSetStringA(hrec, 1, "stgname");
 
-    r = MsiRecordSetStream(hrec, 2, "storage.bin");
+    r = MsiRecordSetStreamA(hrec, 2, "storage.bin");
     ok(r == ERROR_SUCCESS, "Failed to add stream data to the hrecord: %d\n", r);
 
     DeleteFileA("storage.bin");
 
     query = "INSERT INTO `_Storages` (`Name`, `Data`) VALUES (?, ?)";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Failed to open database hview: %d\n", r);
 
     r = MsiViewExecute(hview, hrec);
@@ -7508,7 +7503,7 @@ static void test_storages_table(void)
     MsiCloseHandle(hview);
 
     query = "SELECT `Name`, `Data` FROM `_Storages`";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Failed to open database hview: %d\n", r);
 
     r = MsiViewExecute(hview, 0);
@@ -7518,15 +7513,15 @@ static void test_storages_table(void)
     ok(r == ERROR_SUCCESS, "Failed to fetch hrecord: %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(hrec, 1, file, &size);
+    r = MsiRecordGetStringA(hrec, 1, file, &size);
     ok(r == ERROR_SUCCESS, "Failed to get string: %d\n", r);
-    ok(!lstrcmp(file, "stgname"), "Expected \"stgname\", got \"%s\"\n", file);
+    ok(!lstrcmpA(file, "stgname"), "Expected \"stgname\", got \"%s\"\n", file);
 
     size = MAX_PATH;
     lstrcpyA(buf, "apple");
     r = MsiRecordReadStream(hrec, 2, buf, &size);
     ok(r == ERROR_INVALID_DATA, "Expected ERROR_INVALID_DATA, got %d\n", r);
-    ok(!lstrcmp(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
+    ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
     ok(size == 0, "Expected 0, got %d\n", size);
 
     MsiCloseHandle(hrec);
@@ -7577,7 +7572,7 @@ static void test_dbtopackage(void)
     UINT r;
 
     /* create an empty database, transact mode */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Failed to create database\n");
 
     set_summary_info(hdb);
@@ -7592,7 +7587,7 @@ static void test_dbtopackage(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     sprintf(package, "#%u", hdb);
-    r = MsiOpenPackage(package, &hpkg);
+    r = MsiOpenPackageA(package, &hpkg);
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
@@ -7603,19 +7598,19 @@ static void test_dbtopackage(void)
     /* property is not set yet */
     size = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiGetProperty(hpkg, "MYPROP", buf, &size);
+    r = MsiGetPropertyA(hpkg, "MYPROP", buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(size == 0, "Expected 0, got %d\n", size);
 
     /* run the custom action to set the property */
-    r = MsiDoAction(hpkg, "SetProp");
+    r = MsiDoActionA(hpkg, "SetProp");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* property is now set */
     size = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiGetProperty(hpkg, "MYPROP", buf, &size);
+    r = MsiGetPropertyA(hpkg, "MYPROP", buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "grape"), "Expected \"grape\", got \"%s\"\n", buf);
     ok(size == 5, "Expected 5, got %d\n", size);
@@ -7623,13 +7618,13 @@ static void test_dbtopackage(void)
     MsiCloseHandle(hpkg);
 
     /* reset the package */
-    r = MsiOpenPackage(package, &hpkg);
+    r = MsiOpenPackageA(package, &hpkg);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* property is not set anymore */
     size = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiGetProperty(hpkg, "MYPROP", buf, &size);
+    r = MsiGetPropertyA(hpkg, "MYPROP", buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     todo_wine
     {
@@ -7641,7 +7636,7 @@ static void test_dbtopackage(void)
     MsiCloseHandle(hpkg);
 
     /* create an empty database, direct mode */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATEDIRECT, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATEDIRECT, &hdb);
     ok(r == ERROR_SUCCESS, "Failed to create database\n");
 
     set_summary_info(hdb);
@@ -7656,25 +7651,25 @@ static void test_dbtopackage(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     sprintf(package, "#%u", hdb);
-    r = MsiOpenPackage(package, &hpkg);
+    r = MsiOpenPackageA(package, &hpkg);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* property is not set yet */
     size = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiGetProperty(hpkg, "MYPROP", buf, &size);
+    r = MsiGetPropertyA(hpkg, "MYPROP", buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(size == 0, "Expected 0, got %d\n", size);
 
     /* run the custom action to set the property */
-    r = MsiDoAction(hpkg, "SetProp");
+    r = MsiDoActionA(hpkg, "SetProp");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* property is now set */
     size = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiGetProperty(hpkg, "MYPROP", buf, &size);
+    r = MsiGetPropertyA(hpkg, "MYPROP", buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "grape"), "Expected \"grape\", got \"%s\"\n", buf);
     ok(size == 5, "Expected 5, got %d\n", size);
@@ -7682,13 +7677,13 @@ static void test_dbtopackage(void)
     MsiCloseHandle(hpkg);
 
     /* reset the package */
-    r = MsiOpenPackage(package, &hpkg);
+    r = MsiOpenPackageA(package, &hpkg);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* property is not set anymore */
     size = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiGetProperty(hpkg, "MYPROP", buf, &size);
+    r = MsiGetPropertyA(hpkg, "MYPROP", buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     todo_wine
     {
@@ -7711,7 +7706,7 @@ static void test_droptable(void)
     DWORD size;
     UINT r;
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "CREATE TABLE `One` ( `A` INT PRIMARY KEY `A` )";
@@ -7924,16 +7919,17 @@ static void test_droptable(void)
 
 static void test_dbmerge(void)
 {
+    static const WCHAR refdbW[] = {'r','e','f','d','b','.','m','s','i',0};
     MSIHANDLE hdb, href, hview, hrec;
     CHAR buf[MAX_PATH];
     LPCSTR query;
     DWORD size;
     UINT r;
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
-    r = MsiOpenDatabase("refdb.msi", MSIDBOPEN_CREATE, &href);
+    r = MsiOpenDatabaseW(refdbW, MSIDBOPEN_CREATE, &href);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* hDatabase is invalid */
@@ -8252,12 +8248,12 @@ static void test_dbmerge(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(hrec, 1, buf, &size);
+    r = MsiRecordGetStringA(hrec, 1, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "Table"), "Expected \"Table\", got \"%s\"\n", buf);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(hrec, 2, buf, &size);
+    r = MsiRecordGetStringA(hrec, 2, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "NumRowMergeConflicts"),
        "Expected \"NumRowMergeConflicts\", got \"%s\"\n", buf);
@@ -8268,12 +8264,12 @@ static void test_dbmerge(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(hrec, 1, buf, &size);
+    r = MsiRecordGetStringA(hrec, 1, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "s255"), "Expected \"s255\", got \"%s\"\n", buf);
 
     size = MAX_PATH;
-    r = MsiRecordGetString(hrec, 2, buf, &size);
+    r = MsiRecordGetStringA(hrec, 2, buf, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "i2"), "Expected \"i2\", got \"%s\"\n", buf);
 
@@ -8542,7 +8538,7 @@ static void test_dbmerge(void)
     MsiCloseHandle(hdb);
     MsiCloseHandle(href);
     DeleteFileA(msifile);
-    DeleteFileA("refdb.msi");
+    DeleteFileW(refdbW);
     DeleteFileA("codepage.idt");
     DeleteFileA("binary.dat");
 }
@@ -8593,7 +8589,7 @@ static void test_select_with_tablenames(void)
      * actually selects the right data */
 
     query = "SELECT T1.A, T2.B FROM T1,T2";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -8699,7 +8695,7 @@ static void test_insertorder(void)
        "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
 
     query = "SELECT * FROM `T`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -8736,7 +8732,7 @@ static void test_insertorder(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `T`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -8805,7 +8801,7 @@ static void test_columnorder(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `T`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewGetColumnInfo(view, MSICOLINFO_TYPES, &rec);
@@ -8813,31 +8809,31 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("s255", buf), "Expected \"s255\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 2, buf, &sz);
+    r = MsiRecordGetStringA(rec, 2, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("I2", buf), "Expected \"I2\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("S255", buf), "Expected \"S255\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 4, buf, &sz);
+    r = MsiRecordGetStringA(rec, 4, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("i2", buf), "Expected \"i2\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 5, buf, &sz);
+    r = MsiRecordGetStringA(rec, 5, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("i2", buf), "Expected \"i2\", got \"%s\"\n", buf);
 
@@ -8848,31 +8844,31 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("D", buf), "Expected \"D\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 2, buf, &sz);
+    r = MsiRecordGetStringA(rec, 2, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("E", buf), "Expected \"E\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("A", buf), "Expected \"A\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 4, buf, &sz);
+    r = MsiRecordGetStringA(rec, 4, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("C", buf), "Expected \"C\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 5, buf, &sz);
+    r = MsiRecordGetStringA(rec, 5, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("B", buf), "Expected \"B\", got \"%s\"\n", buf);
 
@@ -8891,7 +8887,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("bc", buf), "Expected \"bc\", got \"%s\"\n", buf);
 
@@ -8900,7 +8896,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("a", buf), "Expected \"a\", got \"%s\"\n", buf);
 
@@ -8913,7 +8909,7 @@ static void test_columnorder(void)
     MsiCloseHandle(rec);
 
     query = "SELECT * FROM `_Columns` WHERE `Table` = 'T'";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -8923,7 +8919,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("T", buf), "Expected \"T\", got \"%s\"\n", buf);
 
@@ -8932,7 +8928,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("D", buf), "Expected \"D\", got \"%s\"\n", buf);
 
@@ -8943,7 +8939,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("T", buf), "Expected \"T\", got \"%s\"\n", buf);
 
@@ -8952,7 +8948,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("E", buf), "Expected \"E\", got \"%s\"\n", buf);
 
@@ -8963,7 +8959,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("T", buf), "Expected \"T\", got \"%s\"\n", buf);
 
@@ -8972,7 +8968,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("A", buf), "Expected \"A\", got \"%s\"\n", buf);
 
@@ -8983,7 +8979,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("T", buf), "Expected \"T\", got \"%s\"\n", buf);
 
@@ -8992,7 +8988,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("C", buf), "Expected \"C\", got \"%s\"\n", buf);
 
@@ -9003,7 +8999,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("T", buf), "Expected \"T\", got \"%s\"\n", buf);
 
@@ -9012,7 +9008,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("B", buf), "Expected \"B\", got \"%s\"\n", buf);
 
@@ -9031,7 +9027,7 @@ static void test_columnorder(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     query = "SELECT * FROM `Z`";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiViewGetColumnInfo(view, MSICOLINFO_TYPES, &rec);
@@ -9039,31 +9035,31 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("i2", buf), "Expected \"i2\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 2, buf, &sz);
+    r = MsiRecordGetStringA(rec, 2, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("S255", buf), "Expected \"S255\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("s255", buf), "Expected \"s255\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 4, buf, &sz);
+    r = MsiRecordGetStringA(rec, 4, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("I2", buf), "Expected \"I2\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 5, buf, &sz);
+    r = MsiRecordGetStringA(rec, 5, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("i2", buf), "Expected \"i2\", got \"%s\"\n", buf);
 
@@ -9074,31 +9070,31 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("C", buf), "Expected \"C\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 2, buf, &sz);
+    r = MsiRecordGetStringA(rec, 2, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("A", buf), "Expected \"A\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("D", buf), "Expected \"D\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 4, buf, &sz);
+    r = MsiRecordGetStringA(rec, 4, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("E", buf), "Expected \"E\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 5, buf, &sz);
+    r = MsiRecordGetStringA(rec, 5, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("B", buf), "Expected \"B\", got \"%s\"\n", buf);
 
@@ -9120,13 +9116,13 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 2, buf, &sz);
+    r = MsiRecordGetStringA(rec, 2, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("a", buf), "Expected \"a\", got \"%s\"\n", buf);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("bc", buf), "Expected \"bc\", got \"%s\"\n", buf);
 
@@ -9139,7 +9135,7 @@ static void test_columnorder(void)
     MsiCloseHandle(rec);
 
     query = "SELECT * FROM `_Columns` WHERE `Table` = 'T'";
-    r = MsiDatabaseOpenView(hdb, query, &view);
+    r = MsiDatabaseOpenViewA(hdb, query, &view);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(view, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -9149,7 +9145,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("T", buf), "Expected \"T\", got \"%s\"\n", buf);
 
@@ -9158,7 +9154,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("D", buf), "Expected \"D\", got \"%s\"\n", buf);
 
@@ -9169,7 +9165,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("T", buf), "Expected \"T\", got \"%s\"\n", buf);
 
@@ -9178,7 +9174,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("E", buf), "Expected \"E\", got \"%s\"\n", buf);
 
@@ -9189,7 +9185,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("T", buf), "Expected \"T\", got \"%s\"\n", buf);
 
@@ -9198,7 +9194,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("A", buf), "Expected \"A\", got \"%s\"\n", buf);
 
@@ -9209,7 +9205,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("T", buf), "Expected \"T\", got \"%s\"\n", buf);
 
@@ -9218,7 +9214,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("C", buf), "Expected \"C\", got \"%s\"\n", buf);
 
@@ -9229,7 +9225,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("T", buf), "Expected \"T\", got \"%s\"\n", buf);
 
@@ -9238,7 +9234,7 @@ static void test_columnorder(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "kiwi");
-    r = MsiRecordGetString(rec, 3, buf, &sz);
+    r = MsiRecordGetStringA(rec, 3, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA("B", buf), "Expected \"B\", got \"%s\"\n", buf);
 
@@ -9266,7 +9262,7 @@ static void test_createtable(void)
     ok(hdb, "failed to create db\n");
 
     query = "CREATE TABLE `blah` (`foo` CHAR(72) NOT NULL PRIMARY KEY `foo`)";
-    res = MsiDatabaseOpenView( hdb, query, &htab );
+    res = MsiDatabaseOpenViewA( hdb, query, &htab );
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     if(res == ERROR_SUCCESS )
     {
@@ -9277,7 +9273,7 @@ static void test_createtable(void)
         todo_wine ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
         size = sizeof(buffer);
-        res = MsiRecordGetString(hrec, 1, buffer, &size );
+        res = MsiRecordGetStringA(hrec, 1, buffer, &size );
         todo_wine ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
         MsiCloseHandle( hrec );
 
@@ -9289,7 +9285,7 @@ static void test_createtable(void)
     }
 
     query = "CREATE TABLE `a` (`b` INT PRIMARY KEY `b`)";
-    res = MsiDatabaseOpenView( hdb, query, &htab );
+    res = MsiDatabaseOpenViewA( hdb, query, &htab );
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
     if(res == ERROR_SUCCESS )
     {
@@ -9303,7 +9299,7 @@ static void test_createtable(void)
         ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
         query = "SELECT * FROM `a`";
-        res = MsiDatabaseOpenView( hdb, query, &htab );
+        res = MsiDatabaseOpenViewA( hdb, query, &htab );
         ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
         res = MsiViewGetColumnInfo( htab, MSICOLINFO_NAMES, &hrec );
@@ -9311,7 +9307,7 @@ static void test_createtable(void)
 
         buffer[0] = 0;
         size = sizeof(buffer);
-        res = MsiRecordGetString(hrec, 1, buffer, &size );
+        res = MsiRecordGetStringA(hrec, 1, buffer, &size );
         ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
         ok(!strcmp(buffer,"b"), "b != %s\n", buffer);
         MsiCloseHandle( hrec );
@@ -9328,11 +9324,11 @@ static void test_createtable(void)
         res = MsiCloseHandle(hdb);
         ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
-        res = MsiOpenDatabase(msifile, MSIDBOPEN_TRANSACT, &hdb );
+        res = MsiOpenDatabaseW(msifileW, MSIDBOPEN_TRANSACT, &hdb );
         ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
         query = "SELECT * FROM `a`";
-        res = MsiDatabaseOpenView( hdb, query, &htab );
+        res = MsiDatabaseOpenViewA( hdb, query, &htab );
         ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
         res = MsiViewGetColumnInfo( htab, MSICOLINFO_NAMES, &hrec );
@@ -9340,7 +9336,7 @@ static void test_createtable(void)
 
         buffer[0] = 0;
         size = sizeof(buffer);
-        res = MsiRecordGetString(hrec, 1, buffer, &size );
+        res = MsiRecordGetStringA(hrec, 1, buffer, &size );
         ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
         ok(!strcmp(buffer,"b"), "b != %s\n", buffer);
 
@@ -9374,7 +9370,7 @@ static void test_embedded_nulls(void)
     MSIHANDLE hdb, hrec;
     char buffer[32];
 
-    r = MsiOpenDatabaseA( msifile, MSIDBOPEN_CREATE, &hdb );
+    r = MsiOpenDatabaseW( msifileW, MSIDBOPEN_CREATE, &hdb );
     ok( r == ERROR_SUCCESS, "failed to open database %u\n", r );
 
     GetCurrentDirectoryA( MAX_PATH, CURR_DIR );
@@ -9403,9 +9399,9 @@ static void test_select_column_names(void)
     char buffer[32];
     UINT r, size;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
-    r = MsiOpenDatabase( msifile, MSIDBOPEN_CREATE, &hdb );
+    r = MsiOpenDatabaseW( msifileW, MSIDBOPEN_CREATE, &hdb );
     ok( r == ERROR_SUCCESS , "failed to open database: %u\n", r );
 
     r = try_query( hdb, "CREATE TABLE `t` (`a` CHAR NOT NULL, `b` CHAR PRIMARY KEY `a`)");
@@ -9444,7 +9440,7 @@ static void test_select_column_names(void)
     r = try_query( hdb, "INSERT INTO `t` ( `a`, `b` ) VALUES( '3', '4' )" );
     ok( r == ERROR_SUCCESS , "query failed: %u\n", r );
 
-    r = MsiDatabaseOpenView( hdb, "SELECT '' FROM `t`", &view );
+    r = MsiDatabaseOpenViewA( hdb, "SELECT '' FROM `t`", &view );
     ok( r == ERROR_SUCCESS, "failed to open database view: %u\n", r );
 
     r = MsiViewExecute( view, 0 );
@@ -9498,7 +9494,7 @@ static void test_select_column_names(void)
     MsiViewClose( view );
     MsiCloseHandle( view );
 
-    r = MsiDatabaseOpenView( hdb, "SELECT `a`, '' FROM `t`", &view );
+    r = MsiDatabaseOpenViewA( hdb, "SELECT `a`, '' FROM `t`", &view );
     ok( r == ERROR_SUCCESS, "failed to open database view: %u\n", r );
 
     r = MsiViewExecute( view, 0 );
@@ -9531,7 +9527,7 @@ static void test_select_column_names(void)
     MsiViewClose( view );
     MsiCloseHandle( view );
 
-    r = MsiDatabaseOpenView( hdb, "SELECT '', `a` FROM `t`", &view );
+    r = MsiDatabaseOpenViewA( hdb, "SELECT '', `a` FROM `t`", &view );
     ok( r == ERROR_SUCCESS, "failed to open database view: %u\n", r );
 
     r = MsiViewExecute( view, 0 );
@@ -9574,7 +9570,7 @@ static void test_select_column_names(void)
     MsiViewClose( view );
     MsiCloseHandle( view );
 
-    r = MsiDatabaseOpenView( hdb, "SELECT `a`, '', `b` FROM `t`", &view );
+    r = MsiDatabaseOpenViewA( hdb, "SELECT `a`, '', `b` FROM `t`", &view );
     ok( r == ERROR_SUCCESS, "failed to open database view: %u\n", r );
 
     r = MsiViewExecute( view, 0 );
index c181037..8ed4bbb 100644 (file)
 #include "wine/test.h"
 
 static const char msifile[] = "winetest-format.msi";
+static const WCHAR msifileW[] =
+    {'w','i','n','e','t','e','s','t','-','f','o','r','m','a','t','.','m','s','i',0};
 
 static UINT run_query( MSIHANDLE hdb, const char *query )
 {
     MSIHANDLE hview = 0;
     UINT r;
 
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     if( r != ERROR_SUCCESS )
         return r;
 
@@ -155,33 +157,33 @@ static UINT set_summary_info(MSIHANDLE hdb)
     MSIHANDLE suminfo;
 
     /* build summary info */
-    res = MsiGetSummaryInformation(hdb, NULL, 7, &suminfo);
+    res = MsiGetSummaryInformationA(hdb, NULL, 7, &suminfo);
     ok( res == ERROR_SUCCESS , "Failed to open summaryinfo\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,2, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,2, VT_LPSTR, 0,NULL,
                         "Installation Database");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,3, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,3, VT_LPSTR, 0,NULL,
                         "Installation Database");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,4, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,4, VT_LPSTR, 0,NULL,
                         "Wine Hackers");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,7, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,7, VT_LPSTR, 0,NULL,
                     ";1033");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,9, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,9, VT_LPSTR, 0,NULL,
                     "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo, 14, VT_I4, 100, NULL, NULL);
+    res = MsiSummaryInfoSetPropertyA(suminfo, 14, VT_I4, 100, NULL, NULL);
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo, 15, VT_I4, 0, NULL, NULL);
+    res = MsiSummaryInfoSetPropertyA(suminfo, 15, VT_I4, 0, NULL, NULL);
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
     res = MsiSummaryInfoPersist(suminfo);
@@ -198,10 +200,10 @@ static MSIHANDLE create_package_db(void)
     MSIHANDLE hdb = 0;
     UINT res;
 
-    DeleteFile(msifile);
+    DeleteFileW(msifileW);
 
     /* create an empty database */
-    res = MsiOpenDatabase(msifile, MSIDBOPEN_CREATEDIRECT, &hdb );
+    res = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATEDIRECT, &hdb );
     ok( res == ERROR_SUCCESS , "Failed to create database %u\n", res );
     if( res != ERROR_SUCCESS )
         return 0;
@@ -234,7 +236,7 @@ static UINT package_from_db(MSIHANDLE hdb, MSIHANDLE *handle)
     MSIHANDLE hPackage;
 
     sprintf(szPackage, "#%u", hdb);
-    res = MsiOpenPackage(szPackage, &hPackage);
+    res = MsiOpenPackageA(szPackage, &hPackage);
     if (res != ERROR_SUCCESS)
         return res;
 
@@ -265,11 +267,19 @@ static UINT helper_createpackage( const char *szName, MSIHANDLE *handle )
 {
     MSIHANDLE hPackage, suminfo, hdb = 0;
     UINT res;
+    WCHAR *nameW;
+    int len;
 
-    DeleteFile(szName);
+    DeleteFileA(szName);
+
+    len = MultiByteToWideChar( CP_ACP, 0, szName, -1, NULL, 0 );
+    if (!(nameW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) )))
+        return ERROR_OUTOFMEMORY;
+    MultiByteToWideChar( CP_ACP, 0, szName, -1, nameW, len );
 
     /* create an empty database */
-    res = MsiOpenDatabase(szName, MSIDBOPEN_CREATEDIRECT, &hdb );
+    res = MsiOpenDatabaseW( nameW, MSIDBOPEN_CREATEDIRECT, &hdb );
+    HeapFree( GetProcessHeap(), 0, nameW );
     ok( res == ERROR_SUCCESS , "Failed to create database %u\n", res );
     if (res != ERROR_SUCCESS)
         return res;
@@ -278,33 +288,33 @@ static UINT helper_createpackage( const char *szName, MSIHANDLE *handle )
     ok( res == ERROR_SUCCESS , "Failed to commit database %u\n", res );
 
     /* build summary info */
-    res = MsiGetSummaryInformation(hdb, NULL, 7, &suminfo);
+    res = MsiGetSummaryInformationA(hdb, NULL, 7, &suminfo);
     ok( res == ERROR_SUCCESS , "Failed to open summaryinfo\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,2, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,2, VT_LPSTR, 0,NULL,
                         "Installation Database");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,3, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,3, VT_LPSTR, 0,NULL,
                         "Installation Database");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,4, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,4, VT_LPSTR, 0,NULL,
                         "Wine Hackers");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,7, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,7, VT_LPSTR, 0,NULL,
                     ";1033");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,9, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,9, VT_LPSTR, 0,NULL,
                     "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo, 14, VT_I4, 100, NULL, NULL);
+    res = MsiSummaryInfoSetPropertyA(suminfo, 14, VT_I4, 100, NULL, NULL);
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo, 15, VT_I4, 0, NULL, NULL);
+    res = MsiSummaryInfoSetPropertyA(suminfo, 15, VT_I4, 0, NULL, NULL);
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
     res = MsiSummaryInfoPersist(suminfo);
@@ -340,7 +350,7 @@ static void test_createpackage(void)
     res = MsiCloseHandle( hPackage );
     ok( res == ERROR_SUCCESS , "Failed to close package %u\n", res );
 
-    DeleteFile( msifile );
+    DeleteFileA( msifile );
 }
 
 static void test_formatrecord(void)
@@ -350,7 +360,7 @@ static void test_formatrecord(void)
     UINT r;
     DWORD sz;
 
-    r = MsiFormatRecord(0, 0, NULL, NULL );
+    r = MsiFormatRecordA(0, 0, NULL, NULL );
     ok( r == ERROR_INVALID_HANDLE, "wrong error\n");
 
     hrec = MsiCreateRecord(0);
@@ -368,16 +378,16 @@ static void test_formatrecord(void)
     ok( hrec, "failed to create record\n");
 
     /* format an empty record */
-    r = MsiFormatRecord(0, hrec, NULL, NULL );
+    r = MsiFormatRecordA(0, hrec, NULL, NULL );
     ok( r == ERROR_SUCCESS, "format failed\n");
     buffer[0] = 'x';
     buffer[1] = 0;
     sz=0;
-    r = MsiFormatRecord(0, hrec, buffer+1, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer+1, &sz);
     ok( r == ERROR_MORE_DATA && buffer[0] == 'x', "format failed measuring with buffer\n");
     ok( sz == 16, "size wrong\n");
     sz=100;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed with empty buffer\n");
     ok( sz == 16, "size wrong\n");
     ok( 0 == strcmp(buffer,"1:  2:  3:  4:  "), "wrong output\n");
@@ -391,28 +401,28 @@ static void test_formatrecord(void)
     sz = 100;
     buffer[0] = 'x';
     buffer[1] = 0;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed with empty buffer\n");
     ok( sz == 24, "size wrong\n");
     ok( 0 == strcmp(buffer,"1:  2:  3:  4:  5:  6:  "), "wrong output\n");
 
 
     /* format a format string with everything else empty */
-    r = MsiRecordSetString(hrec, 0, "%1");
+    r = MsiRecordSetStringA(hrec, 0, "%1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, NULL, NULL );
+    r = MsiFormatRecordA(0, hrec, NULL, NULL );
     ok( r == ERROR_SUCCESS, "format failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, NULL);
+    r = MsiFormatRecordA(0, hrec, buffer, NULL);
     ok( r == ERROR_INVALID_PARAMETER, "wrong error\n");
 
     sz = 123;
-    r = MsiFormatRecord(0, hrec, NULL, &sz);
+    r = MsiFormatRecordA(0, hrec, NULL, &sz);
     ok( r == ERROR_SUCCESS, "format failed with empty buffer\n");
     ok( sz == 2, "size wrong (%i)\n",sz);
     sz = sizeof buffer;
     buffer[0] = 'x';
     buffer[1] = 0;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed with empty buffer\n");
     ok( sz == 2, "size wrong\n");
     ok( 0 == strcmp(buffer,"%1"), "wrong output\n");
@@ -421,7 +431,7 @@ static void test_formatrecord(void)
     sz = 0;
     buffer[0] = 'x';
     buffer[1] = 0;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_MORE_DATA, "format failed with empty buffer\n");
     ok( sz == 2, "size wrong\n");
     ok( 0 == strcmp(buffer,"x"), "wrong output\n");
@@ -430,7 +440,7 @@ static void test_formatrecord(void)
     sz = 1;
     buffer[0] = 'x';
     buffer[1] = 0;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_MORE_DATA, "format failed with empty buffer\n");
     ok( sz == 2, "size wrong\n");
     ok( 0 == strcmp(buffer,""), "wrong output (%s)\n",buffer);
@@ -439,7 +449,7 @@ static void test_formatrecord(void)
     sz = 2;
     buffer[0] = 'x';
     buffer[1] = 0;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_MORE_DATA, "format failed with empty buffer\n");
     ok( sz == 2, "size wrong\n");
     ok( 0 == strcmp(buffer,"%"), "wrong output\n");
@@ -448,87 +458,87 @@ static void test_formatrecord(void)
     sz = 3;
     buffer[0] = 'x';
     buffer[1] = 0;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed with empty buffer\n");
     ok( sz == 2, "size wrong\n");
     ok( 0 == strcmp(buffer,"%1"), "wrong output\n");
 
     /* now try a real format string */
-    r = MsiRecordSetString(hrec, 0, "[1]");
+    r = MsiRecordSetStringA(hrec, 0, "[1]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong\n");
     ok( 0 == strcmp(buffer,""), "wrong output\n");
 
     /* now put something in the first field */
-    r = MsiRecordSetString(hrec, 1, "boo hoo");
+    r = MsiRecordSetStringA(hrec, 1, "boo hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong\n");
     ok( 0 == strcmp(buffer,"boo hoo"), "wrong output\n");
 
     /* now put something in the first field */
-    r = MsiRecordSetString(hrec, 0, "[1] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong\n");
     ok( 0 == strcmp(buffer,"boo hoo"), "wrong output\n");
 
     /* empty string */
-    r = MsiRecordSetString(hrec, 0, "");
+    r = MsiRecordSetStringA(hrec, 0, "");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 30, "size wrong %i\n",sz);
     ok( 0 == strcmp(buffer,"1: boo 2: hoo 3:  4:  5:  6:  "), 
                     "wrong output(%s)\n",buffer);
 
     /* play games with recursive lookups */
-    r = MsiRecordSetString(hrec, 0, "[[1]] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[[1]] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"hey hey"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[[1]] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[[1]] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "[2]");
+    r = MsiRecordSetStringA(hrec, 1, "[2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 9, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"[[2]] hey"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[[[3]]] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[[[3]]] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"hey hey"), "wrong output (%s)\n",buffer);
@@ -538,91 +548,91 @@ static void test_formatrecord(void)
     hrec = MsiCreateRecord(12);
     ok( hrec, "failed to create record\n");
 
-    r = MsiRecordSetString(hrec, 0, "[[3][1]] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[[3][1]] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"big hey"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[[3][4][1]] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[[3][4][1]] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"big hey"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[[3][[4]][1]] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[[3][[4]][1]] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 10, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"[1[]2] hey"), "wrong output (%s)\n",buffer);
 
     /* incorrect  formats */
-    r = MsiRecordSetString(hrec, 0, "[[[3][[4]][1]] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[[[3][[4]][1]] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 18, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"[[[3][[4]][1]] [2]"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[[3][[4]][1]] [2]]");
+    r = MsiRecordSetStringA(hrec, 0, "[[3][[4]][1]] [2]]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 11, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"[1[]2] hey]"), "wrong output (%s)\n",buffer);
@@ -630,291 +640,291 @@ static void test_formatrecord(void)
 
     /* play games with {} */
 
-    r = MsiRecordSetString(hrec, 0, "{[3][1]} [2]");
+    r = MsiRecordSetStringA(hrec, 0, "{[3][1]} [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 6, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"12 hey"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[{[3][1]}] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[{[3][1]}] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 8, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"[12] hey"), "wrong output (%s)\n",buffer);
 
 
-    r = MsiRecordSetString(hrec, 0, "{test} [2]");
+    r = MsiRecordSetStringA(hrec, 0, "{test} [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 10, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{test} hey"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{[test]} [2]");
+    r = MsiRecordSetStringA(hrec, 0, "{[test]} [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 12, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{[test]} hey"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{[1][2][3][4]} [2]");
+    r = MsiRecordSetStringA(hrec, 0, "{[1][2][3][4]} [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 4, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer," hey"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{[1][2][3][dummy]} [2]");
+    r = MsiRecordSetStringA(hrec, 0, "{[1][2][3][dummy]} [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 18, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{2hey1[dummy]} hey"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{[1][2][3][4][dummy]} [2]");
+    r = MsiRecordSetStringA(hrec, 0, "{[1][2][3][4][dummy]} [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 18, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{2hey1[dummy]} hey"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{{[1][2]}[3][4][dummy]}");
+    r = MsiRecordSetStringA(hrec, 0, "{{[1][2]}[3][4][dummy]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 16, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{{2hey}1[dummy]}"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{{[1][2]}[3]{[4][dummy]}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{[1][2]}[3]{[4][dummy]}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hey");
+    r = MsiRecordSetStringA(hrec, 2, "hey");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "1");
+    r = MsiRecordSetStringA(hrec, 3, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,""), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{{[1][2]}[3]} {[1][2]}");
+    r = MsiRecordSetStringA(hrec, 0, "{{[1][2]}[3]} {[1][2]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "1");
+    r = MsiRecordSetStringA(hrec, 1, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "2");
+    r = MsiRecordSetStringA(hrec, 2, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "3");
+    r = MsiRecordSetStringA(hrec, 3, "3");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 12, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{{12}3} {12}"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{[1][2]} {{[1][2]}[3]} {[1][2]}");
+    r = MsiRecordSetStringA(hrec, 0, "{[1][2]} {{[1][2]}[3]} {[1][2]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "1");
+    r = MsiRecordSetStringA(hrec, 1, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "2");
+    r = MsiRecordSetStringA(hrec, 2, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "3");
+    r = MsiRecordSetStringA(hrec, 3, "3");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 15, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"12 {{12}3} {12}"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{[4]}{[1][2]} {{[1][2]}[3]} {[1][2]}");
+    r = MsiRecordSetStringA(hrec, 0, "{[4]}{[1][2]} {{[1][2]}[3]} {[1][2]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "1");
+    r = MsiRecordSetStringA(hrec, 1, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "2");
+    r = MsiRecordSetStringA(hrec, 2, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "3");
+    r = MsiRecordSetStringA(hrec, 3, "3");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 15, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"12 {{12}3} {12}"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{blah} {[4]}{[1][2]} {{[1][2]}[3]} {[1][2]}");
+    r = MsiRecordSetStringA(hrec, 0, "{blah} {[4]}{[1][2]} {{[1][2]}[3]} {[1][2]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "1");
+    r = MsiRecordSetStringA(hrec, 1, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "2");
+    r = MsiRecordSetStringA(hrec, 2, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "3");
+    r = MsiRecordSetStringA(hrec, 3, "3");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 22, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{blah} 12 {{12}3} {12}"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{{[1]}[2]} {[4]}{[1][2]}");
+    r = MsiRecordSetStringA(hrec, 0, "{{[1]}[2]} {[4]}{[1][2]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "1");
+    r = MsiRecordSetStringA(hrec, 1, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "2");
+    r = MsiRecordSetStringA(hrec, 2, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "3");
+    r = MsiRecordSetStringA(hrec, 3, "3");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 13, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{{1}2} {}{12}"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{{[1]}} {[4]}{[1][2]}");
+    r = MsiRecordSetStringA(hrec, 0, "{{[1]}} {[4]}{[1][2]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "1");
+    r = MsiRecordSetStringA(hrec, 1, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "2");
+    r = MsiRecordSetStringA(hrec, 2, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "3");
+    r = MsiRecordSetStringA(hrec, 3, "3");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 3, "size wrong,(%i)\n",sz);
     ok( 0 == strcmp(buffer," 12"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{{{[1]}} {[4]}{[1][2]}");
+    r = MsiRecordSetStringA(hrec, 0, "{{{[1]}} {[4]}{[1][2]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "1");
+    r = MsiRecordSetStringA(hrec, 1, "1");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "2");
+    r = MsiRecordSetStringA(hrec, 2, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "3");
+    r = MsiRecordSetStringA(hrec, 3, "3");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, NULL);
+    r = MsiRecordSetStringA(hrec, 4, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 12, "big");
+    r = MsiRecordSetStringA(hrec, 12, "big");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     todo_wine{
     ok( sz == 3, "size wrong,(%i)\n",sz);
@@ -922,201 +932,201 @@ static void test_formatrecord(void)
     }
     
     /* now put play games with escaping */
-    r = MsiRecordSetString(hrec, 0, "[1] [2] [\\3asdf]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [2] [\\3asdf]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 16, "size wrong\n");
     ok( 0 == strcmp(buffer,"boo hoo [\\3asdf]"), "wrong output\n");
 
     /* now put play games with escaping */
-    r = MsiRecordSetString(hrec, 0, "[1] [2] [\\x]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [2] [\\x]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 12, "size wrong\n");
     ok( 0 == strcmp(buffer,"boo hoo [\\x]"), "wrong output\n");
 
-    r = MsiRecordSetString(hrec, 0, "[\\x]");
+    r = MsiRecordSetStringA(hrec, 0, "[\\x]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 4, "size wrong: %d\n", sz);
     ok( 0 == strcmp(buffer,"[\\x]"), "wrong output: %s\n", buffer);
 
-    r = MsiRecordSetString(hrec, 0, "{\\x}");
+    r = MsiRecordSetStringA(hrec, 0, "{\\x}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 4, "size wrong: %d\n", sz);
     ok( 0 == strcmp(buffer,"{\\x}"), "wrong output: %s\n", buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[abc\\x]");
+    r = MsiRecordSetStringA(hrec, 0, "[abc\\x]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong: %d\n", sz);
     ok( 0 == strcmp(buffer,"[abc\\x]"), "wrong output: %s\n", buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[\\[]Bracket Text[\\]]");
+    r = MsiRecordSetStringA(hrec, 0, "[\\[]Bracket Text[\\]]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 20, "size wrong: %d\n", sz);
     ok( 0 == strcmp(buffer,"[\\[]Bracket Text[\\]]"), "wrong output: %s\n", buffer);
 
     /* now try other formats without a package */
-    r = MsiRecordSetString(hrec, 0, "[1] [2] [property]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [2] [property]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 18, "size wrong\n");
     ok( 0 == strcmp(buffer,"boo hoo [property]"), "wrong output\n");
 
-    r = MsiRecordSetString(hrec, 0, "[1] [~] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [~] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 11, "size wrong\n");
     ok( 0 == strcmp(buffer,"boo [~] hoo"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[1]");
+    r = MsiRecordSetStringA(hrec, 0, "[1]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     r = MsiRecordSetInteger(hrec, 1, 123456);
     ok( r == ERROR_SUCCESS, "set integer failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 6, "size wrong\n");
     ok( 0 == strcmp(buffer,"123456"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[~]");
+    r = MsiRecordSetStringA(hrec, 0, "[~]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"[~]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[]");
+    r = MsiRecordSetStringA(hrec, 0, "[]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 2, "size wrong\n");
     ok( 0 == strcmp(buffer,"[]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    /* MsiFormatRecord doesn't seem to handle a negative too well */
-    r = MsiRecordSetString(hrec, 0, "[-1]");
+    /* MsiFormatRecordA doesn't seem to handle a negative too well */
+    r = MsiRecordSetStringA(hrec, 0, "[-1]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 4, "size wrong\n");
     ok( 0 == strcmp(buffer,"[-1]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{[]}");
+    r = MsiRecordSetStringA(hrec, 0, "{[]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 4, "size wrong\n");
     ok( 0 == strcmp(buffer,"{[]}"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[0]");
+    r = MsiRecordSetStringA(hrec, 0, "[0]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"[0]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[100]");
+    r = MsiRecordSetStringA(hrec, 0, "[100]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 0, "size wrong\n");
     ok( 0 == strcmp(buffer,""), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{[1] [2]}");
+    r = MsiRecordSetStringA(hrec, 0, "{[1] [2]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 7, "size wrong\n");
     ok( 0 == strcmp(buffer,"boo hoo"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{}");
+    r = MsiRecordSetStringA(hrec, 0, "{}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 0, "size wrong\n");
     ok( 0 == strcmp(buffer,""), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{foo}");
+    r = MsiRecordSetStringA(hrec, 0, "{foo}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 5, "size wrong\n");
     ok( 0 == strcmp(buffer,"{foo}"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{boo [1]}");
+    r = MsiRecordSetStringA(hrec, 0, "{boo [1]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 7, "size wrong\n");
     ok( 0 == strcmp(buffer,"boo hoo"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{[1]}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{[1]}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 0, "size wrong\n");
     ok( 0 == strcmp(buffer,""), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{ {[1]}}");
+    r = MsiRecordSetStringA(hrec, 0, "{ {[1]}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( 0 == strcmp(buffer," {hoo}"), "wrong output\n");
@@ -1124,259 +1134,259 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{[1]} }");
+    r = MsiRecordSetStringA(hrec, 0, "{{[1]} }");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 8, "size wrong\n");
     ok( 0 == strcmp(buffer,"{{hoo} }"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{ [1]}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{ [1]}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 0, "size wrong\n");
     ok( 0 == strcmp(buffer,""), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{[1] }}");
+    r = MsiRecordSetStringA(hrec, 0, "{{[1] }}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 0, "size wrong\n");
     ok( 0 == strcmp(buffer,""), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{a}{b}{c }{ d}{any text}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{a}{b}{c }{ d}{any text}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 0, "size wrong\n");
     ok( 0 == strcmp(buffer,""), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{a} }");
+    r = MsiRecordSetStringA(hrec, 0, "{{a} }");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 6, "size wrong\n");
     ok( 0 == strcmp(buffer,"{{a} }"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{a} {b}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{a} {b}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 0, "size wrong\n");
     ok( 0 == strcmp(buffer,""), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{a} b}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{a} b}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine ok( sz == 0, "size wrong\n");
     todo_wine ok( 0 == strcmp(buffer,""), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{a b}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{a b}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 0, "size wrong\n");
     ok( 0 == strcmp(buffer,""), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{ }");
+    r = MsiRecordSetStringA(hrec, 0, "{ }");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"{ }"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, " {{a}}}");
+    r = MsiRecordSetStringA(hrec, 0, " {{a}}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 2, "size wrong\n");
     ok( 0 == strcmp(buffer," }"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{ almost {{ any }} text }}");
+    r = MsiRecordSetStringA(hrec, 0, "{{ almost {{ any }} text }}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine ok( sz == 8, "size wrong\n");
     todo_wine ok( 0 == strcmp(buffer," text }}"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{ } { hidden ][ [ }}");
+    r = MsiRecordSetStringA(hrec, 0, "{{ } { hidden ][ [ }}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine ok( sz == 0, "size wrong\n");
     todo_wine ok( 0 == strcmp(buffer,""), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[ 1]");
+    r = MsiRecordSetStringA(hrec, 0, "[ 1]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 4, "size wrong\n");
     ok( 0 == strcmp(buffer,"[ 1]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[01]");
+    r = MsiRecordSetStringA(hrec, 0, "[01]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"hoo"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{test}} [01");
+    r = MsiRecordSetStringA(hrec, 0, "{{test}} [01");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine ok( sz == 4, "size wrong\n");
     todo_wine ok( 0 == strcmp(buffer," [01"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[\\[]");
+    r = MsiRecordSetStringA(hrec, 0, "[\\[]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 4, "size wrong\n");
     ok( 0 == strcmp(buffer,"[\\[]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[\\[]");
+    r = MsiRecordSetStringA(hrec, 0, "[\\[]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 4, "Expected 4, got %d\n", sz);
     ok(!lstrcmpA(buffer, "[\\[]"), "Expected \"[\\[]\", got \"%s\"\n", buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[foo]");
+    r = MsiRecordSetStringA(hrec, 0, "[foo]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 5, "size wrong\n");
     ok( 0 == strcmp(buffer,"[foo]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[01.]");
+    r = MsiRecordSetStringA(hrec, 0, "[01.]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 5, "size wrong\n");
     ok( 0 == strcmp(buffer,"[01.]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    SetEnvironmentVariable("FOO", "BAR");
-    r = MsiRecordSetString(hrec, 0, "[%FOO]");
+    SetEnvironmentVariableA("FOO", "BAR");
+    r = MsiRecordSetStringA(hrec, 0, "[%FOO]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 6, "size wrong\n");
     ok( 0 == strcmp(buffer,"[%FOO]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{[1]}");
+    r = MsiRecordSetStringA(hrec, 0, "{{[1]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 6, "size wrong\n");
     ok( 0 == strcmp(buffer,"{{hoo}"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{ {[1]}");
+    r = MsiRecordSetStringA(hrec, 0, "{{ {[1]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 8, "size wrong\n");
     ok( 0 == strcmp(buffer,"{{ {hoo}"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{ {[1]}");
+    r = MsiRecordSetStringA(hrec, 0, "{{ {[1]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 8, "size wrong\n");
     ok( 0 == strcmp(buffer,"{{ {hoo}"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{ {{[1]}");
+    r = MsiRecordSetStringA(hrec, 0, "{{ {{[1]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 9, "size wrong\n");
     ok( 0 == strcmp(buffer,"{{ {{hoo}"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[1]}");
+    r = MsiRecordSetStringA(hrec, 0, "[1]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 4, "size wrong\n");
     ok( 0 == strcmp(buffer,"hoo}"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{ {{a}");
+    r = MsiRecordSetStringA(hrec, 0, "{{ {{a}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 7, "size wrong\n");
     ok( 0 == strcmp(buffer,"{{ {{a}"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{ {{a}");
+    r = MsiRecordSetStringA(hrec, 0, "{{ {{a}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 7, "size wrong\n");
     ok( 0 == strcmp(buffer,"{{ {{a}"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "0{1{2{3{4[1]5}6}7}8}9");
+    r = MsiRecordSetStringA(hrec, 0, "0{1{2{3{4[1]5}6}7}8}9");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 19, "size wrong\n");
@@ -1384,12 +1394,12 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "0{1{2[1]3}4");
+    r = MsiRecordSetStringA(hrec, 0, "0{1{2[1]3}4");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 9, "size wrong\n");
@@ -1397,12 +1407,12 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "0{1{2[1]3}4");
+    r = MsiRecordSetStringA(hrec, 0, "0{1{2[1]3}4");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 9, "size wrong\n");
@@ -1410,12 +1420,12 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{[1.} [1]");
+    r = MsiRecordSetStringA(hrec, 0, "{[1.} [1]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 9, "size wrong\n");
     todo_wine
     {
@@ -1423,14 +1433,14 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{[{[1]}]}");
+    r = MsiRecordSetStringA(hrec, 0, "{[{[1]}]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "foo");
+    r = MsiRecordSetStringA(hrec, 2, "foo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 9, "size wrong\n");
@@ -1438,14 +1448,14 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{[1][}");
+    r = MsiRecordSetStringA(hrec, 0, "{[1][}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "foo");
+    r = MsiRecordSetStringA(hrec, 2, "foo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 2, "size wrong\n");
@@ -1453,24 +1463,24 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[1]");
+    r = MsiRecordSetStringA(hrec, 0, "[1]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "[2]");
+    r = MsiRecordSetStringA(hrec, 1, "[2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "foo");
+    r = MsiRecordSetStringA(hrec, 2, "foo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"[2]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[{{boo}}1]");
+    r = MsiRecordSetStringA(hrec, 0, "[{{boo}}1]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 3, "size wrong\n");
     todo_wine
@@ -1478,24 +1488,24 @@ static void test_formatrecord(void)
         ok( 0 == strcmp(buffer,"[1]"), "wrong output: %s\n", buffer);
     }
 
-    r = MsiRecordSetString(hrec, 0, "[{{boo}}1]");
+    r = MsiRecordSetStringA(hrec, 0, "[{{boo}}1]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 0, "[1{{boo}}]");
+    r = MsiRecordSetStringA(hrec, 0, "[1{{boo}}]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"[1]"), "wrong output\n");
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{[1]{{boo} }}");
+    r = MsiRecordSetStringA(hrec, 0, "{[1]{{boo} }}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 11, "size wrong\n");
@@ -1503,12 +1513,12 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{[1{{boo}}]}");
+    r = MsiRecordSetStringA(hrec, 0, "{[1{{boo}}]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 12, "size wrong: got %u, expected 12\n", sz);
@@ -1516,30 +1526,30 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{{[1]}");
+    r = MsiRecordSetStringA(hrec, 0, "{{[1]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 6, "size wrong: got %u, expected 3\n", sz);
     ok( 0 == strcmp(buffer,"{{hoo}"), "wrong output: got %s, expected [1]\n", buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{[1{{bo}o}}]}");
+    r = MsiRecordSetStringA(hrec, 0, "{[1{{bo}o}}]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 13, "size wrong\n");
     ok( 0 == strcmp(buffer,"{[1{{bo}o}}]}"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{[1{{b{o}o}}]}");
+    r = MsiRecordSetStringA(hrec, 0, "{[1{{b{o}o}}]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 14, "size wrong\n");
@@ -1547,12 +1557,12 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{ {[1]}");
+    r = MsiRecordSetStringA(hrec, 0, "{ {[1]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 5, "size wrong\n");
@@ -1561,12 +1571,12 @@ static void test_formatrecord(void)
     ok( r == ERROR_SUCCESS, "format failed\n");
 
     /* {} inside a substitution does strange things... */
-    r = MsiRecordSetString(hrec, 0, "[[1]{}]");
+    r = MsiRecordSetStringA(hrec, 0, "[[1]{}]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 5, "size wrong\n");
@@ -1574,12 +1584,12 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[[1]{}[1]]");
+    r = MsiRecordSetStringA(hrec, 0, "[[1]{}[1]]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 6, "size wrong\n");
@@ -1587,12 +1597,12 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[a[1]b[1]c{}d[1]e]");
+    r = MsiRecordSetStringA(hrec, 0, "[a[1]b[1]c{}d[1]e]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 14, "size wrong\n");
@@ -1600,100 +1610,100 @@ static void test_formatrecord(void)
     }
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[a[1]b");
+    r = MsiRecordSetStringA(hrec, 0, "[a[1]b");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 6, "size wrong\n");
     ok( 0 == strcmp(buffer,"[a[1]b"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "a[1]b]");
+    r = MsiRecordSetStringA(hrec, 0, "a[1]b]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 4, "size wrong\n");
     ok( 0 == strcmp(buffer,"a2b]"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "]a[1]b");
+    r = MsiRecordSetStringA(hrec, 0, "]a[1]b");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 4, "size wrong\n");
     ok( 0 == strcmp(buffer,"]a2b"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "]a[1]b");
+    r = MsiRecordSetStringA(hrec, 0, "]a[1]b");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 4, "size wrong\n");
     ok( 0 == strcmp(buffer,"]a2b"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "\\[1]");
+    r = MsiRecordSetStringA(hrec, 0, "\\[1]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 2, "size wrong\n");
     ok( 0 == strcmp(buffer,"\\2"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "\\{[1]}");
+    r = MsiRecordSetStringA(hrec, 0, "\\{[1]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "2");
+    r = MsiRecordSetStringA(hrec, 1, "2");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 2, "size wrong\n");
     ok( 0 == strcmp(buffer,"\\2"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "a{b[1]c}d");
+    r = MsiRecordSetStringA(hrec, 0, "a{b[1]c}d");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, NULL);
+    r = MsiRecordSetStringA(hrec, 1, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 2, "size wrong\n");
     ok( 0 == strcmp(buffer,"ad"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{a[0]b}");
+    r = MsiRecordSetStringA(hrec, 0, "{a[0]b}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "foo");
+    r = MsiRecordSetStringA(hrec, 1, "foo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 9, "size wrong\n");
     ok( 0 == strcmp(buffer,"a{a[0]b}b"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[foo]");
+    r = MsiRecordSetStringA(hrec, 0, "[foo]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( sz == 5, "size wrong\n");
     ok( 0 == strcmp(buffer,"[foo]"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "{[1][-1][1]}");
+    r = MsiRecordSetStringA(hrec, 0, "{[1][-1][1]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "foo");
+    r = MsiRecordSetStringA(hrec, 1, "foo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     todo_wine
     {
         ok( sz == 12, "size wrong\n");
@@ -1703,81 +1713,81 @@ static void test_formatrecord(void)
 
     /* nested braces */
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{abcd}");
+    r = MsiRecordSetStringA(hrec, 0, "{abcd}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 6, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{abcd}"), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{a[one]bc[two]de[one]f}");
+    r = MsiRecordSetStringA(hrec, 0, "{a[one]bc[two]de[one]f}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 23, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{a[one]bc[two]de[one]f}"), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{a[one]bc[bad]de[two]f}");
+    r = MsiRecordSetStringA(hrec, 0, "{a[one]bc[bad]de[two]f}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 23, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{a[one]bc[bad]de[two]f}"), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{[bad]}");
+    r = MsiRecordSetStringA(hrec, 0, "{[bad]}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{[bad]}"), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{abc{d[one]ef}"); /* missing final brace */
+    r = MsiRecordSetStringA(hrec, 0, "{abc{d[one]ef}"); /* missing final brace */
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 14, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{abc{d[one]ef}"), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{abc{d[one]ef}}");
+    r = MsiRecordSetStringA(hrec, 0, "{abc{d[one]ef}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 15, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{abc{d[one]ef}}"), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{abc}{{def}hi{j[one]k}}");
+    r = MsiRecordSetStringA(hrec, 0, "{abc}{{def}hi{j[one]k}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 5, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{abc}"), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{{def}hi{j[one]k}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{def}hi{j[one]k}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,""), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{{def}hi{jk}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{def}hi{jk}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,""), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{{{def}}hi{jk}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{{def}}hi{jk}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     todo_wine
     {
@@ -1786,9 +1796,9 @@ static void test_formatrecord(void)
     }
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{{def}hi{{jk}}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{def}hi{{jk}}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     todo_wine
     {
@@ -1797,49 +1807,49 @@ static void test_formatrecord(void)
     }
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{{def}{jk}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{def}{jk}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,""), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{{def}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{def}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,""), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{a{b}c}");
+    r = MsiRecordSetStringA(hrec, 0, "{a{b}c}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{a{b}c}"), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{a{b}}");
+    r = MsiRecordSetStringA(hrec, 0, "{a{b}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 6, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{a{b}}"), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{{b}c}");
+    r = MsiRecordSetStringA(hrec, 0, "{{b}c}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 6, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{{b}c}"), "wrong output (%s)\n",buffer);
 
     sz = sizeof buffer;
-    r = MsiRecordSetString(hrec, 0, "{{{{}}}}");
+    r = MsiRecordSetStringA(hrec, 0, "{{{{}}}}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     todo_wine
     {
@@ -1850,41 +1860,41 @@ static void test_formatrecord(void)
     sz = sizeof buffer;
     MsiRecordSetInteger(hrec, 1, 100);
     MsiRecordSetInteger(hrec, 2, -100);
-    r = MsiRecordSetString(hrec, 0, "[1] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 8, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"100 -100"), "wrong output (%s)\n",buffer);
 
     sz = sizeof(buffer);
-    r = MsiRecordSetString(hrec, 0, "[1] {[noprop] [twoprop]} {abcdef}");
+    r = MsiRecordSetStringA(hrec, 0, "[1] {[noprop] [twoprop]} {abcdef}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "one");
+    r = MsiRecordSetStringA(hrec, 1, "one");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 33, "Expected 33, got %d\n",sz);
     ok(!lstrcmpA(buffer, "one {[noprop] [twoprop]} {abcdef}"),
        "Expected \"one {[noprop] [twoprop]} {abcdef}\", got \"%s\"\n", buffer);
 
     sz = sizeof(buffer);
-    r = MsiRecordSetString(hrec, 0, "[1] {[noprop] [one]} {abcdef}");
+    r = MsiRecordSetStringA(hrec, 0, "[1] {[noprop] [one]} {abcdef}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "one");
+    r = MsiRecordSetStringA(hrec, 1, "one");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 29, "Expected 29, got %d\n",sz);
     ok(!lstrcmpA(buffer, "one {[noprop] [one]} {abcdef}"),
        "Expected \"one {[noprop] [one]} {abcdef}\", got \"%s\"\n", buffer);
 
     sz = sizeof(buffer);
-    r = MsiRecordSetString(hrec, 0, "[1] {[one]} {abcdef}");
+    r = MsiRecordSetStringA(hrec, 0, "[1] {[one]} {abcdef}");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "one");
+    r = MsiRecordSetStringA(hrec, 1, "one");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiFormatRecord(0, hrec, buffer, &sz);
+    r = MsiFormatRecordA(0, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 20, "Expected 20, got %d\n",sz);
     ok(!lstrcmpA(buffer, "one {[one]} {abcdef}"),
@@ -1912,62 +1922,62 @@ static void test_formatrecord_package(void)
     hrec = MsiCreateRecord(12);
     ok( hrec, "failed to create record\n");
 
-    r = MsiFormatRecord(package, 0, NULL, NULL );
+    r = MsiFormatRecordA(package, 0, NULL, NULL );
     ok( r == ERROR_INVALID_HANDLE, "wrong error\n");
 
-    r = MsiFormatRecord(package, hrec, NULL, NULL );
+    r = MsiFormatRecordA(package, hrec, NULL, NULL );
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec,0,NULL);
+    r = MsiRecordSetStringA(hrec,0,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,1,NULL);
+    r = MsiRecordSetStringA(hrec,1,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,2,NULL);
+    r = MsiRecordSetStringA(hrec,2,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,3,NULL);
+    r = MsiRecordSetStringA(hrec,3,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,4,NULL);
+    r = MsiRecordSetStringA(hrec,4,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,5,NULL);
+    r = MsiRecordSetStringA(hrec,5,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,6,NULL);
+    r = MsiRecordSetStringA(hrec,6,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,7,NULL);
+    r = MsiRecordSetStringA(hrec,7,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,8,NULL);
+    r = MsiRecordSetStringA(hrec,8,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,9,NULL);
+    r = MsiRecordSetStringA(hrec,9,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,10,NULL);
+    r = MsiRecordSetStringA(hrec,10,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,11,NULL);
+    r = MsiRecordSetStringA(hrec,11,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec,12,NULL);
+    r = MsiRecordSetStringA(hrec,12,NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
 
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed with empty buffer (%i)\n",r);
     ok( sz == 51, "size wrong (%i)\n",sz);
     ok( 0 == strcmp(buffer,"1:  2:  3:  4:  5:  6:  7:  8:  9:  10:  11:  12:  "), "wrong output(%s)\n",buffer);
 
-    r = MsiSetProperty(package, "prop", "val");
+    r = MsiSetPropertyA(package, "prop", "val");
     ok( r == ERROR_SUCCESS, "failed to set propertY: %d\n", r);
 
-    r = MsiRecordSetString(hrec, 0, NULL);
+    r = MsiRecordSetStringA(hrec, 0, NULL);
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "[2]");
+    r = MsiRecordSetStringA(hrec, 1, "[2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "stuff");
+    r = MsiRecordSetStringA(hrec, 2, "stuff");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "prop");
+    r = MsiRecordSetStringA(hrec, 3, "prop");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 4, "[prop]");
+    r = MsiRecordSetStringA(hrec, 4, "[prop]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 5, "[noprop]");
+    r = MsiRecordSetStringA(hrec, 5, "[noprop]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed with empty buffer (%i)\n",r);
     todo_wine
     {
@@ -1978,103 +1988,103 @@ static void test_formatrecord_package(void)
     }
 
     /* now put play games with escaping */
-    r = MsiRecordSetString(hrec, 0, "[1] [2] [\\3asdf]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [2] [\\3asdf]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 9, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"boo hoo 3"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[1] [2] [\\x]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [2] [\\x]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 9, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"boo hoo x"), "wrong output (%s)\n",buffer);
 
-    MsiRecordSetString(hrec, 0, "[\\x]");
+    MsiRecordSetStringA(hrec, 0, "[\\x]");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 1, "size wrong: %d\n", sz);
     ok( 0 == strcmp(buffer,"x"), "wrong output: %s\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "{\\x}");
+    MsiRecordSetStringA(hrec, 0, "{\\x}");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 4, "size wrong: %d\n", sz);
     ok( 0 == strcmp(buffer,"{\\x}"), "wrong output: %s\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[abc\\x]");
+    MsiRecordSetStringA(hrec, 0, "[abc\\x]");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong: %d\n", sz);
     ok( 0 == strcmp(buffer,""), "wrong output: %s\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[abc\\xdef]");
+    MsiRecordSetStringA(hrec, 0, "[abc\\xdef]");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong: %d\n", sz);
     ok( 0 == strcmp(buffer,""), "wrong output: %s\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "\\x");
+    MsiRecordSetStringA(hrec, 0, "\\x");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 2, "Expected 2, got %d\n", sz);
     ok(!lstrcmpA(buffer, "\\x"), "Expected \"\\x\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[\\[");
+    MsiRecordSetStringA(hrec, 0, "[\\[");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 3, "Expected 3, got %d\n", sz);
     ok(!lstrcmpA(buffer, "[\\["), "Expected \"[\\[\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[\\[]");
+    MsiRecordSetStringA(hrec, 0, "[\\[]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 1, "Expected 1, got %d\n", sz);
     ok(!lstrcmpA(buffer, "["), "Expected \"[\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[[]");
+    MsiRecordSetStringA(hrec, 0, "[[]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 3, "Expected 3, got %d\n", sz);
     ok(!lstrcmpA(buffer, "[[]"), "Expected \"[]\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[\\[]]");
+    MsiRecordSetStringA(hrec, 0, "[\\[]]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 2, "Expected 2, got %d\n", sz);
     ok(!lstrcmpA(buffer, "[]"), "Expected \"[]\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[\\[a]");
+    MsiRecordSetStringA(hrec, 0, "[\\[a]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 1, "Expected 1, got %d\n", sz);
     ok(!lstrcmpA(buffer, "["), "Expected \"[\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[\\a[]");
+    MsiRecordSetStringA(hrec, 0, "[\\a[]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     todo_wine
     {
@@ -2082,145 +2092,145 @@ static void test_formatrecord_package(void)
         ok(!lstrcmpA(buffer, "a"), "Expected \"a\", got \"%s\"\n", buffer);
     }
 
-    MsiRecordSetString(hrec, 0, "[prop]");
+    MsiRecordSetStringA(hrec, 0, "[prop]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 3, "Expected 3, got %d\n", sz);
     ok(!lstrcmpA(buffer, "val"), "Expected \"val\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[prop] [pro\\pblah] [prop]");
+    MsiRecordSetStringA(hrec, 0, "[prop] [pro\\pblah] [prop]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 8, "Expected 8, got %d\n", sz);
     ok(!lstrcmpA(buffer, "val  val"), "Expected \"val  val\", got \"%s\"\n", buffer);
 
     MsiSetPropertyA(package, "b", "ball");
-    MsiRecordSetString(hrec, 0, "[\\b]");
+    MsiRecordSetStringA(hrec, 0, "[\\b]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 1, "Expected 1, got %d\n", sz);
     ok(!lstrcmpA(buffer, "b"), "Expected \"b\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[\\c]");
+    MsiRecordSetStringA(hrec, 0, "[\\c]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 1, "Expected 1, got %d\n", sz);
     ok(!lstrcmpA(buffer, "c"), "Expected \"c\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[\\[]prop]");
+    MsiRecordSetStringA(hrec, 0, "[\\[]prop]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 6, "Expected 6, got %d\n", sz);
     ok(!lstrcmpA(buffer, "[prop]"), "Expected \"[prop]\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[\\a]prop]");
+    MsiRecordSetStringA(hrec, 0, "[\\a]prop]");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 6, "Expected 6, got %d\n", sz);
     ok(!lstrcmpA(buffer, "aprop]"), "Expected \"aprop]\", got \"%s\"\n", buffer);
 
-    MsiRecordSetString(hrec, 0, "[\\[]Bracket Text[\\]]");
+    MsiRecordSetStringA(hrec, 0, "[\\[]Bracket Text[\\]]");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 14, "size wrong: %d\n", sz);
     ok( 0 == strcmp(buffer,"[Bracket Text]"), "wrong output: %s\n", buffer);
 
     /* null characters */
-    r = MsiRecordSetString(hrec, 0, "[1] [~] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [~] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 9, "size wrong: %d\n", sz);
     ok( 0 == strcmp(buffer,"boo "), "wrong output: %s\n", buffer);
     ok(!lstrcmpA(&buffer[5], " hoo"),
        "Expected \" hoo\", got \"%s\"\n", &buffer[5]);
 
-    r = MsiRecordSetString(hrec, 0, "[1] [~abc] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [~abc] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof(buffer);
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 8, "Expected 8, got %d\n", sz);
     ok(!lstrcmpA(buffer, "boo  hoo"), "Expected \"boo  hoo\", got \"%s\"\n", buffer);
 
     /* properties */
-    r = MsiSetProperty(package,"dummy","Bork");
+    r = MsiSetPropertyA(package,"dummy","Bork");
     ok( r == ERROR_SUCCESS, "set property failed\n");
-    r = MsiRecordSetString(hrec, 0, "[1] [dummy] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [dummy] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 12, "size wrong\n");
     ok( 0 == strcmp(buffer,"boo Bork hoo"), "wrong output\n");
 
-    r = MsiRecordSetString(hrec, 0, "[1] [invalid] [2]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [invalid] [2]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 8, "size wrong\n");
     ok( 0 == strcmp(buffer,"boo  hoo"), "wrong output\n");
 
     /* nesting tests */
-    r = MsiSetProperty(package,"dummya","foo");
+    r = MsiSetPropertyA(package,"dummya","foo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiSetProperty(package,"dummyb","baa");
+    r = MsiSetPropertyA(package,"dummyb","baa");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiSetProperty(package,"adummyc","whoa");
+    r = MsiSetPropertyA(package,"adummyc","whoa");
     ok( r == ERROR_SUCCESS, "set property failed\n");
-    r = MsiRecordSetString(hrec, 0, "[dummy[1]] [dummy[2]] [[1]dummy[3]]");
+    r = MsiRecordSetStringA(hrec, 0, "[dummy[1]] [dummy[2]] [[1]dummy[3]]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "a");
+    r = MsiRecordSetStringA(hrec, 1, "a");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "b");
+    r = MsiRecordSetStringA(hrec, 2, "b");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "c");
+    r = MsiRecordSetStringA(hrec, 3, "c");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 12, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"foo baa whoa"), "wrong output (%s)\n",buffer);
 
-    r = MsiSetProperty(package,"dummya","1");
+    r = MsiSetPropertyA(package,"dummya","1");
     ok( r == ERROR_SUCCESS, "set property failed\n");
-    r = MsiSetProperty(package,"dummyb","[2]");
+    r = MsiSetPropertyA(package,"dummyb","[2]");
     ok( r == ERROR_SUCCESS, "set property failed\n");
-    r = MsiRecordSetString(hrec, 0, "[dummya] [[dummya]] [dummyb]");
+    r = MsiRecordSetStringA(hrec, 0, "[dummya] [[dummya]] [dummyb]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "aaa");
+    r = MsiRecordSetStringA(hrec, 1, "aaa");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "bbb");
+    r = MsiRecordSetStringA(hrec, 2, "bbb");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "ccc");
+    r = MsiRecordSetStringA(hrec, 3, "ccc");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     todo_wine
     {
@@ -2228,38 +2238,38 @@ static void test_formatrecord_package(void)
         ok( 0 == strcmp(buffer,"1 [1] [2]"), "wrong output (%s)\n",buffer);
     }
 
-    r = MsiSetProperty(package,"dummya","1");
+    r = MsiSetPropertyA(package,"dummya","1");
     ok( r == ERROR_SUCCESS, "set property failed\n");
-    r = MsiSetProperty(package,"dummyb","a");
+    r = MsiSetPropertyA(package,"dummyb","a");
     ok( r == ERROR_SUCCESS, "set property failed\n");
-    r = MsiSetProperty(package,"dummyc","\\blath");
+    r = MsiSetPropertyA(package,"dummyc","\\blath");
     ok( r == ERROR_SUCCESS, "set property failed\n");
-    r = MsiSetProperty(package,"dummyd","[\\blath]");
+    r = MsiSetPropertyA(package,"dummyd","[\\blath]");
     ok( r == ERROR_SUCCESS, "set property failed\n");
-    r = MsiRecordSetString(hrec, 0, "[dummyc] [[dummyc]] [dummy[dummyb]]");
+    r = MsiRecordSetStringA(hrec, 0, "[dummyc] [[dummyc]] [dummy[dummyb]]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "aaa");
+    r = MsiRecordSetStringA(hrec, 1, "aaa");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "bbb");
+    r = MsiRecordSetStringA(hrec, 2, "bbb");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "ccc");
+    r = MsiRecordSetStringA(hrec, 3, "ccc");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 10, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"\\blath b 1"), "wrong output (%s)\n",buffer);
 
-    r = MsiRecordSetString(hrec, 0, "[1] [2] [[\\3asdf]]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [2] [[\\3asdf]]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "yeah");
+    r = MsiRecordSetStringA(hrec, 3, "yeah");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     todo_wine
     {
@@ -2267,120 +2277,120 @@ static void test_formatrecord_package(void)
         ok( 0 == strcmp(buffer,"boo hoo [3]"), "wrong output (%s)\n",buffer);
     }
 
-    r = MsiRecordSetString(hrec, 0, "[1] [2] [[3]]");
+    r = MsiRecordSetStringA(hrec, 0, "[1] [2] [[3]]");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 1, "boo");
+    r = MsiRecordSetStringA(hrec, 1, "boo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 2, "hoo");
+    r = MsiRecordSetStringA(hrec, 2, "hoo");
     ok( r == ERROR_SUCCESS, "set string failed\n");
-    r = MsiRecordSetString(hrec, 3, "\\help");
+    r = MsiRecordSetStringA(hrec, 3, "\\help");
     ok( r == ERROR_SUCCESS, "set string failed\n");
     sz = sizeof buffer;
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 9, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"boo hoo h"), "wrong output (%s)\n",buffer);
 
     /* nested properties */
-    MsiSetProperty(package, "PropA", "surprise");
-    MsiSetProperty(package, "PropB", "[PropA]");
-    MsiSetProperty(package, "PropC", "[PropB]");
+    MsiSetPropertyA(package, "PropA", "surprise");
+    MsiSetPropertyA(package, "PropB", "[PropA]");
+    MsiSetPropertyA(package, "PropC", "[PropB]");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "[PropC]");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "[PropC]");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"[PropB]"), "wrong output (%s)\n",buffer);
 
-    MsiSetProperty(package, "PropA", "surprise");
-    MsiSetProperty(package, "PropB", "PropA");
-    MsiSetProperty(package, "PropC", "PropB");
+    MsiSetPropertyA(package, "PropA", "surprise");
+    MsiSetPropertyA(package, "PropB", "PropA");
+    MsiSetPropertyA(package, "PropC", "PropB");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "[PropC]");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "[PropC]");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 5, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"PropB"), "wrong output (%s)\n",buffer);
 
-    MsiSetProperty(package, "PropA", "surprise");
-    MsiSetProperty(package, "PropB", "[PropA]");
-    MsiSetProperty(package, "PropC", "[PropB]");
+    MsiSetPropertyA(package, "PropA", "surprise");
+    MsiSetPropertyA(package, "PropB", "[PropA]");
+    MsiSetPropertyA(package, "PropC", "[PropB]");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "[[PropC]]");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "[[PropC]]");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,""), "wrong output (%s)\n",buffer);
 
-    MsiSetProperty(package, "PropA", "surprise");
-    MsiSetProperty(package, "PropB", "[PropA]");
-    MsiSetProperty(package, "PropC", "PropB");
+    MsiSetPropertyA(package, "PropA", "surprise");
+    MsiSetPropertyA(package, "PropB", "[PropA]");
+    MsiSetPropertyA(package, "PropC", "PropB");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "[[PropC]]");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "[[PropC]]");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 7, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"[PropA]"), "wrong output (%s)\n",buffer);
 
-    MsiSetProperty(package, "PropA", "surprise");
-    MsiSetProperty(package, "PropB", "PropA");
-    MsiSetProperty(package, "PropC", "PropB");
+    MsiSetPropertyA(package, "PropA", "surprise");
+    MsiSetPropertyA(package, "PropB", "PropA");
+    MsiSetPropertyA(package, "PropC", "PropB");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "[[PropC]]");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "[[PropC]]");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 5, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"PropA"), "wrong output (%s)\n",buffer);
 
-    MsiSetProperty(package, "PropA", "surprise");
-    MsiSetProperty(package, "PropB", "PropA");
-    MsiSetProperty(package, "PropC", "PropB");
+    MsiSetPropertyA(package, "PropA", "surprise");
+    MsiSetPropertyA(package, "PropB", "PropA");
+    MsiSetPropertyA(package, "PropC", "PropB");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "[[[PropC]]]");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "[[[PropC]]]");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 8, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"surprise"), "wrong output (%s)\n",buffer);
 
     /* properties inside braces */
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "{abcd}");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "{abcd}");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 6, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{abcd}"), "wrong output (%s)\n",buffer);
 
-    MsiSetProperty(package, "one", "mercury");
-    MsiSetProperty(package, "two", "venus");
+    MsiSetPropertyA(package, "one", "mercury");
+    MsiSetPropertyA(package, "two", "venus");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "{a[one]bc[two]de[one]f}");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "{a[one]bc[two]de[one]f}");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed: %d\n", r);
     ok( sz == 25, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"amercurybcvenusdemercuryf"), "wrong output (%s)\n",buffer);
 
-    MsiSetProperty(package, "one", "mercury");
-    MsiSetProperty(package, "two", "venus");
-    MsiSetProperty(package, "bad", "");
+    MsiSetPropertyA(package, "one", "mercury");
+    MsiSetPropertyA(package, "two", "venus");
+    MsiSetPropertyA(package, "bad", "");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "{a[one]bc[bad]de[two]f}");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "{a[one]bc[bad]de[two]f}");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,""), "wrong output (%s)\n",buffer);
 
-    MsiSetProperty(package, "bad", "");
+    MsiSetPropertyA(package, "bad", "");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "{[bad]}");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "{[bad]}");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,""), "wrong output (%s)\n",buffer);
 
-    MsiSetProperty(package, "one", "mercury");
+    MsiSetPropertyA(package, "one", "mercury");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "{abc{d[one]ef}"); /* missing final brace */
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "{abc{d[one]ef}"); /* missing final brace */
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     todo_wine
     {
@@ -2388,10 +2398,10 @@ static void test_formatrecord_package(void)
         ok( 0 == strcmp(buffer,"abc{dmercuryef"), "wrong output (%s)\n",buffer);
     }
 
-    MsiSetProperty(package, "one", "mercury");
+    MsiSetPropertyA(package, "one", "mercury");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "{abc{d[one]ef}}");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "{abc{d[one]ef}}");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     todo_wine
     {
@@ -2399,45 +2409,45 @@ static void test_formatrecord_package(void)
         ok( 0 == strcmp(buffer,"abc{dmercuryef}"), "wrong output (%s)\n",buffer);
     }
 
-    MsiSetProperty(package, "one", "mercury");
+    MsiSetPropertyA(package, "one", "mercury");
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "{abc}{{def}hi{j[one]k}}");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "{abc}{{def}hi{j[one]k}}");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 5, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,"{abc}"), "wrong output (%s)\n",buffer);
 
-    MsiSetProperty(package, "one", "mercury");
+    MsiSetPropertyA(package, "one", "mercury");
 
     sz = sizeof buffer;
-    MsiRecordSetString(hrec, 0, "{{def}hi{j[one]k}}");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "{{def}hi{j[one]k}}");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok( r == ERROR_SUCCESS, "format failed\n");
     ok( sz == 0, "size wrong(%i)\n",sz);
     ok( 0 == strcmp(buffer,""), "wrong output (%s)\n",buffer);
 
     sz = sizeof(buffer);
-    MsiRecordSetString(hrec, 0, "[1] {[noprop] [twoprop]} {abcdef}");
-    MsiRecordSetString(hrec, 1, "one");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "[1] {[noprop] [twoprop]} {abcdef}");
+    MsiRecordSetStringA(hrec, 1, "one");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 13, "Expected 13, got %d\n",sz);
     ok(!lstrcmpA(buffer, "one  {abcdef}"),
        "Expected \"one  {abcdef}\", got \"%s\"\n", buffer);
 
     sz = sizeof(buffer);
-    MsiRecordSetString(hrec, 0, "[1] {[noprop] [one]} {abcdef}");
-    MsiRecordSetString(hrec, 1, "one");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "[1] {[noprop] [one]} {abcdef}");
+    MsiRecordSetStringA(hrec, 1, "one");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 13, "Expected 13, got %d\n",sz);
     ok(!lstrcmpA(buffer, "one  {abcdef}"),
        "Expected \"one  {abcdef}\", got \"%s\"\n", buffer);
 
     sz = sizeof(buffer);
-    MsiRecordSetString(hrec, 0, "[1] {[one]} {abcdef}");
-    MsiRecordSetString(hrec, 1, "one");
-    r = MsiFormatRecord(package, hrec, buffer, &sz);
+    MsiRecordSetStringA(hrec, 0, "[1] {[one]} {abcdef}");
+    MsiRecordSetStringA(hrec, 1, "one");
+    r = MsiFormatRecordA(package, hrec, buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 20, "Expected 20, got %d\n",sz);
     ok(!lstrcmpA(buffer, "one mercury {abcdef}"),
@@ -2448,7 +2458,7 @@ static void test_formatrecord_package(void)
     r = MsiCloseHandle(package);
     ok(r==ERROR_SUCCESS, "Unable to close package\n");
 
-    DeleteFile( msifile );
+    DeleteFileA( msifile );
 }
 
 static void test_formatrecord_tables(void)
@@ -2461,7 +2471,7 @@ static void test_formatrecord_tables(void)
     DWORD size;
     UINT r;
 
-    GetCurrentDirectory( MAX_PATH, curr_dir );
+    GetCurrentDirectoryA( MAX_PATH, curr_dir );
 
     hdb = create_package_db();
     ok ( hdb, "failed to create package database\n");
@@ -2538,7 +2548,7 @@ static void test_formatrecord_tables(void)
     {
         skip("Not enough rights to perform tests\n");
         MsiCloseHandle( hdb );
-        DeleteFile( msifile );
+        DeleteFileA( msifile );
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r );
@@ -2552,196 +2562,195 @@ static void test_formatrecord_tables(void)
 
     /* property doesn't exist */
     size = MAX_PATH;
-    /*MsiRecordSetString( hrec, 0, "[1]" ); */
-    MsiRecordSetString( hrec, 1, "[idontexist]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    /*MsiRecordSetStringA( hrec, 0, "[1]" ); */
+    MsiRecordSetStringA( hrec, 1, "[idontexist]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, "1:  " ), "Expected '1:  ', got %s\n", buf );
+    ok( !lstrcmpA( buf, "1:  " ), "Expected '1:  ', got %s\n", buf );
 
     /* property exists */
     size = MAX_PATH;
-    MsiRecordSetString( hrec, 1, "[imaprop]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    MsiRecordSetStringA( hrec, 1, "[imaprop]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, "1: ringer " ), "Expected '1: ringer ', got %s\n", buf );
+    ok( !lstrcmpA( buf, "1: ringer " ), "Expected '1: ringer ', got %s\n", buf );
 
     /* environment variable doesn't exist */
     size = MAX_PATH;
-    MsiRecordSetString( hrec, 1, "[%idontexist]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    MsiRecordSetStringA( hrec, 1, "[%idontexist]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, "1:  " ), "Expected '1:  ', got %s\n", buf );
+    ok( !lstrcmpA( buf, "1:  " ), "Expected '1:  ', got %s\n", buf );
 
     /* environment variable exists */
     size = MAX_PATH;
-    SetEnvironmentVariable( "crazyvar", "crazyval" );
-    MsiRecordSetString( hrec, 1, "[%crazyvar]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    SetEnvironmentVariableA( "crazyvar", "crazyval" );
+    MsiRecordSetStringA( hrec, 1, "[%crazyvar]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, "1: crazyval " ), "Expected '1: crazyval ', got %s\n", buf );
+    ok( !lstrcmpA( buf, "1: crazyval " ), "Expected '1: crazyval ', got %s\n", buf );
 
     /* file key before CostInitialize */
     size = MAX_PATH;
-    MsiRecordSetString( hrec, 1, "[#frontal_file]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    MsiRecordSetStringA( hrec, 1, "[#frontal_file]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, "1:  " ), "Expected '1:  ', got %s\n", buf );
+    ok( !lstrcmpA( buf, "1:  " ), "Expected '1:  ', got %s\n", buf );
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction(hpkg, "CostInitialize");
+    r = MsiDoActionA(hpkg, "CostInitialize");
     ok( r == ERROR_SUCCESS, "CostInitialize failed: %d\n", r);
 
-    r = MsiDoAction(hpkg, "FileCost");
+    r = MsiDoActionA(hpkg, "FileCost");
     ok( r == ERROR_SUCCESS, "FileCost failed: %d\n", r);
 
-    r = MsiDoAction(hpkg, "CostFinalize");
+    r = MsiDoActionA(hpkg, "CostFinalize");
     ok( r == ERROR_SUCCESS, "CostFinalize failed: %d\n", r);
 
     size = MAX_PATH;
-    MsiGetProperty( hpkg, "ROOTDRIVE", root, &size );
+    MsiGetPropertyA( hpkg, "ROOTDRIVE", root, &size );
 
     sprintf( expected, "1: %sfrontal.txt ", root);
 
     /* frontal full file key */
     size = MAX_PATH;
-    MsiRecordSetString( hrec, 1, "[#frontal_file]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    MsiRecordSetStringA( hrec, 1, "[#frontal_file]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
+    ok( !lstrcmpA( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
 
     /* frontal short file key */
     size = MAX_PATH;
-    MsiRecordSetString( hrec, 1, "[!frontal_file]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    MsiRecordSetStringA( hrec, 1, "[!frontal_file]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
+    ok( !lstrcmpA( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
 
     sprintf( expected, "1: %sI am a really long directory\\temporal.txt ", root);
 
     /* temporal full file key */
     size = MAX_PATH;
-    MsiRecordSetString( hrec, 1, "[#temporal_file]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    MsiRecordSetStringA( hrec, 1, "[#temporal_file]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
+    ok( !lstrcmpA( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
 
     /* temporal short file key */
     size = MAX_PATH;
-    MsiRecordSetString( hrec, 1, "[!temporal_file]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    MsiRecordSetStringA( hrec, 1, "[!temporal_file]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
+    ok( !lstrcmpA( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
 
     /* custom action 51, files don't exist */
-    r = MsiDoAction( hpkg, "MyCustom" );
+    r = MsiDoActionA( hpkg, "MyCustom" );
     ok( r == ERROR_SUCCESS, "MyCustom failed: %d\n", r);
 
     sprintf( expected, "%sI am a really long directory\\temporal.txt", root);
 
     size = MAX_PATH;
-    r = MsiGetProperty( hpkg, "prop", buf, &size );
+    r = MsiGetPropertyA( hpkg, "prop", buf, &size );
     ok( r == ERROR_SUCCESS, "get property failed: %d\n", r);
-    ok( !lstrcmp( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
+    ok( !lstrcmpA( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
 
     sprintf( buf, "%sI am a really long directory", root );
-    CreateDirectory( buf, NULL );
+    CreateDirectoryA( buf, NULL );
 
-    lstrcat( buf, "\\temporal.txt" );
+    lstrcatA( buf, "\\temporal.txt" );
     create_test_file( buf );
 
     /* custom action 51, files exist */
-    r = MsiDoAction( hpkg, "MyCustom" );
+    r = MsiDoActionA( hpkg, "MyCustom" );
     ok( r == ERROR_SUCCESS, "MyCustom failed: %d\n", r);
 
     size = MAX_PATH;
-    r = MsiGetProperty( hpkg, "prop", buf, &size );
+    r = MsiGetPropertyA( hpkg, "prop", buf, &size );
     ok( r == ERROR_SUCCESS, "get property failed: %d\n", r);
     todo_wine
     {
-        ok( !lstrcmp( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
+        ok( !lstrcmpA( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
     }
 
     /* custom action 51, escaped text 1 */
-    r = MsiDoAction( hpkg, "EscapeIt1" );
+    r = MsiDoActionA( hpkg, "EscapeIt1" );
     ok( r == ERROR_SUCCESS, "EscapeIt1 failed: %d\n", r);
 
     size = MAX_PATH;
-    r = MsiGetProperty( hpkg, "prop", buf, &size );
+    r = MsiGetPropertyA( hpkg, "prop", buf, &size );
     ok( r == ERROR_SUCCESS, "get property failed: %d\n", r);
-    ok( !lstrcmp( buf, "[Bracket Text]" ), "Expected '[Bracket Text]', got %s\n", buf);
+    ok( !lstrcmpA( buf, "[Bracket Text]" ), "Expected '[Bracket Text]', got %s\n", buf);
 
     /* custom action 51, escaped text 2 */
-    r = MsiDoAction( hpkg, "EscapeIt2" );
+    r = MsiDoActionA( hpkg, "EscapeIt2" );
     ok( r == ERROR_SUCCESS, "EscapeIt2 failed: %d\n", r);
 
     size = MAX_PATH;
-    r = MsiGetProperty( hpkg, "prop", buf, &size );
+    r = MsiGetPropertyA( hpkg, "prop", buf, &size );
     ok( r == ERROR_SUCCESS, "get property failed: %d\n", r);
-    ok( !lstrcmp( buf, "x" ), "Expected 'x', got %s\n", buf);
+    ok( !lstrcmpA( buf, "x" ), "Expected 'x', got %s\n", buf);
 
     /* custom action 51, escaped text 3 */
-    r = MsiDoAction( hpkg, "EscapeIt3" );
+    r = MsiDoActionA( hpkg, "EscapeIt3" );
     ok( r == ERROR_SUCCESS, "EscapeIt3 failed: %d\n", r);
 
     size = MAX_PATH;
-    r = MsiGetProperty( hpkg, "prop", buf, &size );
+    r = MsiGetPropertyA( hpkg, "prop", buf, &size );
     ok( r == ERROR_SUCCESS, "get property failed: %d\n", r);
-    ok( !lstrcmp( buf, "" ), "Expected '', got %s\n", buf);
+    ok( !lstrcmpA( buf, "" ), "Expected '', got %s\n", buf);
 
     /* custom action 51, embedded null */
-    r = MsiDoAction( hpkg, "EmbedNull" );
+    r = MsiDoActionA( hpkg, "EmbedNull" );
     ok( r == ERROR_SUCCESS, "EmbedNull failed: %d\n", r);
 
     size = MAX_PATH;
     memset( buf, 'a', sizeof(buf) );
-    r = MsiGetProperty( hpkg, "prop", buf, &size );
+    r = MsiGetPropertyA( hpkg, "prop", buf, &size );
     ok( r == ERROR_SUCCESS, "get property failed: %d\n", r);
     ok( !memcmp( buf, "\0np", sizeof("\0np") ), "wrong value\n");
     ok( size == sizeof("\0np") - 1, "got %u\n", size );
 
-    r = MsiSetProperty( hpkg, "prop", "[~]np" );
+    r = MsiSetPropertyA( hpkg, "prop", "[~]np" );
     ok( r == ERROR_SUCCESS, "cannot set property: %d\n", r);
 
     size = MAX_PATH;
     memset( buf, 'a', sizeof(buf) );
-    r = MsiGetProperty( hpkg, "prop", buf, &size );
+    r = MsiGetPropertyA( hpkg, "prop", buf, &size );
     ok( r == ERROR_SUCCESS, "get property failed: %d\n", r);
-    ok( !lstrcmp( buf, "[~]np" ), "Expected '[~]np', got %s\n", buf);
+    ok( !lstrcmpA( buf, "[~]np" ), "Expected '[~]np', got %s\n", buf);
 
     sprintf( expected, "1: %sI am a really long directory\\ ", root);
 
     /* component with INSTALLSTATE_LOCAL */
     size = MAX_PATH;
-    MsiRecordSetString( hrec, 1, "[$temporal]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    MsiRecordSetStringA( hrec, 1, "[$temporal]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
+    ok( !lstrcmpA( buf, expected ), "Expected \"%s\", got \"%s\"\n", expected, buf);
 
-    r = MsiSetComponentState( hpkg, "temporal", INSTALLSTATE_SOURCE );
+    r = MsiSetComponentStateA( hpkg, "temporal", INSTALLSTATE_SOURCE );
     ok( r == ERROR_SUCCESS, "failed to set install state: %d\n", r);
 
     /* component with INSTALLSTATE_SOURCE */
-    lstrcpy( expected, "1: " );
-    lstrcat( expected, curr_dir );
-    if (strlen(curr_dir) > 3)
-        lstrcat( expected, "\\" );
-    lstrcat( expected, " " );
+    lstrcpyA( expected, "1: " );
+    lstrcatA( expected, curr_dir );
+    if (strlen(curr_dir) > 3) lstrcatA( expected, "\\" );
+    lstrcatA( expected, " " );
     size = MAX_PATH;
-    MsiRecordSetString( hrec, 1, "[$parietal]" );
-    r = MsiFormatRecord( hpkg, hrec, buf, &size );
+    MsiRecordSetStringA( hrec, 1, "[$parietal]" );
+    r = MsiFormatRecordA( hpkg, hrec, buf, &size );
     ok( r == ERROR_SUCCESS, "format record failed: %d\n", r);
-    ok( !lstrcmp( buf, expected ), "Expected '%s', got '%s'\n", expected, buf);
+    ok( !lstrcmpA( buf, expected ), "Expected '%s', got '%s'\n", expected, buf);
 
     sprintf( buf, "%sI am a really long directory\\temporal.txt", root );
-    DeleteFile( buf );
+    DeleteFileA( buf );
 
     sprintf( buf, "%sI am a really long directory", root );
-    RemoveDirectory( buf );
+    RemoveDirectoryA( buf );
 
     MsiCloseHandle( hrec );
     MsiCloseHandle( hpkg );
-    DeleteFile( msifile );
+    DeleteFileA( msifile );
 }
 
 static void test_processmessage(void)
@@ -2762,7 +2771,7 @@ static void test_processmessage(void)
     hrec = MsiCreateRecord(3);
     ok( hrec, "failed to create record\n");
 
-    r = MsiRecordSetString(hrec, 1, "");
+    r = MsiRecordSetStringA(hrec, 1, "");
     ok( r == ERROR_SUCCESS, "set string failed\n");
 
     r = MsiProcessMessage(package, INSTALLMESSAGE_ACTIONSTART, hrec);
@@ -2771,7 +2780,7 @@ static void test_processmessage(void)
     MsiCloseHandle(hrec);
     MsiCloseHandle(package);
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 START_TEST(format)
index 97c2c10..22b7106 100644 (file)
@@ -41,6 +41,7 @@ static UINT (WINAPI *pMsiSourceListEnumSourcesA)
 static INSTALLSTATE (WINAPI *pMsiGetComponentPathExA)
     (LPCSTR, LPCSTR, LPCSTR, MSIINSTALLCONTEXT, LPSTR, LPDWORD);
 
+static BOOL (WINAPI *pCheckTokenMembership)(HANDLE,PSID,PBOOL);
 static BOOL (WINAPI *pConvertSidToStringSidA)(PSID, LPSTR*);
 static BOOL (WINAPI *pOpenProcessToken)( HANDLE, DWORD, PHANDLE );
 static LONG (WINAPI *pRegDeleteKeyExA)(HKEY, LPCSTR, REGSAM, DWORD);
@@ -56,6 +57,10 @@ static const BOOL is_64bit = sizeof(void *) > sizeof(int);
 static const char *msifile = "msitest.msi";
 static const char *msifile2 = "winetest2.msi";
 static const char *mstfile = "winetest.mst";
+
+static const WCHAR msifileW[] = {'m','s','i','t','e','s','t','.','m','s','i',0};
+static const WCHAR msifile2W[] = {'w','i','n','e','t','e','s','t','2','.','m','s','i',0};
+
 static CHAR CURR_DIR[MAX_PATH];
 static CHAR PROG_FILES_DIR[MAX_PATH];
 static CHAR PROG_FILES_DIR_NATIVE[MAX_PATH];
@@ -1161,6 +1166,75 @@ static const char vp_install_exec_seq_dat[] =
     "PublishProduct\t\t1800\n"
     "InstallFinalize\t\t1900\n";
 
+static const char shc_property_dat[] =
+    "Property\tValue\n"
+    "s72\tl0\n"
+    "Property\tProperty\n"
+    "INSTALLLEVEL\t3\n"
+    "ProductCode\t{5CD99CD0-69C7-409B-9905-82DD743CC840}\n"
+    "ProductName\tMSITEST\n"
+    "ProductVersion\t1.1.1\n"
+    "MSIFASTINSTALL\t1\n";
+
+static const char shc2_property_dat[] =
+    "Property\tValue\n"
+    "s72\tl0\n"
+    "Property\tProperty\n"
+    "INSTALLLEVEL\t3\n"
+    "ProductCode\t{4CEFADE5-DAFB-4C21-8EF2-4ED4F139F340}\n"
+    "ProductName\tMSITEST2\n"
+    "ProductVersion\t1.1.1\n"
+    "MSIFASTINSTALL\t1\n";
+
+static const char shc_file_dat[] =
+    "File\tComponent_\tFileName\tFileSize\tVersion\tLanguage\tAttributes\tSequence\n"
+    "s72\ts72\tl255\ti4\tS72\tS20\tI2\ti2\n"
+    "File\tFile\n"
+    "sharedcomponent\tsharedcomponent\tsharedcomponent.txt\t1000\t\t\t8192\t1\n";
+
+static const char shc_feature_dat[] =
+    "Feature\tFeature_Parent\tTitle\tDescription\tDisplay\tLevel\tDirectory_\tAttributes\n"
+    "s38\tS38\tL64\tL255\tI2\ti2\tS72\ti2\n"
+    "Feature\tFeature\n"
+    "feature\t\t\t\t1\t2\tMSITESTDIR\t0\n";
+
+static const char shc_feature_comp_dat[] =
+    "Feature_\tComponent_\n"
+    "s38\ts72\n"
+    "FeatureComponents\tFeature_\tComponent_\n"
+    "feature\tsharedcomponent\n";
+
+static const char shc_component_dat[] =
+    "Component\tComponentId\tDirectory_\tAttributes\tCondition\tKeyPath\n"
+    "s72\tS38\ts72\ti2\tS255\tS72\n"
+    "Component\tComponent\n"
+    "sharedcomponent\t{900A4ACB-DC6F-4795-A04B-81B530183D41}\tMSITESTDIR\t0\t\tsharedcomponent\n";
+
+static const char shc_custom_action_dat[] =
+    "Action\tType\tSource\tTarget\tISComments\n"
+    "s72\ti2\tS64\tS0\tS255\n"
+    "CustomAction\tAction\n"
+    "TestComponentAction\t19\t\twrong component action on install\t\n";
+
+static const char shc_install_exec_seq_dat[] =
+    "Action\tCondition\tSequence\n"
+    "s72\tS255\tI2\n"
+    "InstallExecuteSequence\tAction\n"
+    "LaunchConditions\t\t100\n"
+    "CostInitialize\t\t200\n"
+    "FileCost\t\t300\n"
+    "CostFinalize\t\t600\n"
+    "InstallValidate\t\t900\n"
+    "InstallInitialize\t\t1200\n"
+    "ProcessComponents\t\t1300\n"
+    "RemoveFiles\t\t1400\n"
+    "InstallFiles\t\t1500\n"
+    "TestComponentAction\tNOT REMOVE AND ($sharedcomponent <> 3)\t1600\n"
+    "RegisterProduct\t\t1700\n"
+    "PublishFeatures\t\t1800\n"
+    "PublishProduct\t\t1900\n"
+    "InstallFinalize\t\t2000\n";
+
 typedef struct _msi_table
 {
     const CHAR *filename;
@@ -1800,6 +1874,32 @@ static const msi_table vp_tables[] =
     ADD_TABLE(property)
 };
 
+static const msi_table shc_tables[] =
+{
+    ADD_TABLE(media),
+    ADD_TABLE(directory),
+    ADD_TABLE(shc_file),
+    ADD_TABLE(shc_component),
+    ADD_TABLE(shc_feature),
+    ADD_TABLE(shc_feature_comp),
+    ADD_TABLE(shc_custom_action),
+    ADD_TABLE(shc_install_exec_seq),
+    ADD_TABLE(shc_property)
+};
+
+static const msi_table shc2_tables[] =
+{
+    ADD_TABLE(media),
+    ADD_TABLE(directory),
+    ADD_TABLE(shc_file),
+    ADD_TABLE(shc_component),
+    ADD_TABLE(shc_feature),
+    ADD_TABLE(shc_feature_comp),
+    ADD_TABLE(shc_custom_action),
+    ADD_TABLE(shc_install_exec_seq),
+    ADD_TABLE(shc2_property)
+};
+
 /* cabinet definitions */
 
 /* make the max size large so there is only one cab file */
@@ -1925,6 +2025,7 @@ static void init_functionpointers(void)
     GET_PROC(hmsi, MsiSourceListEnumSourcesA);
     GET_PROC(hmsi, MsiGetComponentPathExA);
 
+    GET_PROC(hadvapi32, CheckTokenMembership);
     GET_PROC(hadvapi32, ConvertSidToStringSidA);
     GET_PROC(hadvapi32, OpenProcessToken);
     GET_PROC(hadvapi32, RegDeleteKeyExA)
@@ -1939,9 +2040,26 @@ static void init_functionpointers(void)
 
 static BOOL is_process_limited(void)
 {
+    SID_IDENTIFIER_AUTHORITY NtAuthority = {SECURITY_NT_AUTHORITY};
+    PSID Group;
+    BOOL IsInGroup;
     HANDLE token;
 
-    if (!pOpenProcessToken) return FALSE;
+    if (!pCheckTokenMembership || !pOpenProcessToken) return FALSE;
+
+    if (!AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID,
+                                  DOMAIN_ALIAS_RID_ADMINS,
+                                  0, 0, 0, 0, 0, 0, &Group) ||
+        !pCheckTokenMembership(NULL, Group, &IsInGroup))
+    {
+        trace("Could not check if the current user is an administrator\n");
+        return FALSE;
+    }
+    if (!IsInGroup)
+    {
+        /* Only administrators have enough privileges for these tests */
+        return TRUE;
+    }
 
     if (pOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token))
     {
@@ -1963,7 +2081,7 @@ static BOOL check_record(MSIHANDLE rec, UINT field, LPCSTR val)
     DWORD sz;
 
     sz = sizeof buffer;
-    r = MsiRecordGetString(rec, field, buffer, &sz);
+    r = MsiRecordGetStringA(rec, field, buffer, &sz);
     return (r == ERROR_SUCCESS ) && !strcmp(val, buffer);
 }
 
@@ -1995,8 +2113,8 @@ static INT_PTR CDECL get_open_info(char *pszName, USHORT *pdate, USHORT *ptime,
     DWORD attrs;
     BOOL res;
 
-    handle = CreateFile(pszName, GENERIC_READ, FILE_SHARE_READ, NULL,
-                        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
+    handle = CreateFileA(pszName, GENERIC_READ, FILE_SHARE_READ, NULL,
+                         OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
 
     ok(handle != INVALID_HANDLE_VALUE, "Failed to CreateFile %s\n", pszName);
 
@@ -2006,7 +2124,7 @@ static INT_PTR CDECL get_open_info(char *pszName, USHORT *pdate, USHORT *ptime,
     FileTimeToLocalFileTime(&finfo.ftLastWriteTime, &filetime);
     FileTimeToDosDateTime(&filetime, pdate, ptime);
 
-    attrs = GetFileAttributes(pszName);
+    attrs = GetFileAttributesA(pszName);
     ok(attrs != INVALID_FILE_ATTRIBUTES, "Failed to GetFileAttributes\n");
 
     return (INT_PTR)handle;
@@ -2061,7 +2179,7 @@ static void create_cab_file(const CHAR *name, DWORD max_size, const CHAR *files)
     {
         res = add_file(hfci, ptr, tcompTYPE_MSZIP);
         ok(res, "Failed to add file: %s\n", ptr);
-        ptr += lstrlen(ptr) + 1;
+        ptr += lstrlenA(ptr) + 1;
     }
 
     res = FCIFlushCabinet(hfci, FALSE, get_next_cabinet, progress);
@@ -2076,9 +2194,8 @@ static BOOL get_user_dirs(void)
     HKEY hkey;
     DWORD type, size;
 
-    if(RegOpenKey(HKEY_CURRENT_USER,
-                   "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
-                   &hkey))
+    if (RegOpenKeyA(HKEY_CURRENT_USER,
+                    "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", &hkey))
         return FALSE;
 
     size = MAX_PATH;
@@ -2096,8 +2213,7 @@ static BOOL get_system_dirs(void)
     HKEY hkey;
     DWORD type, size;
 
-    if (RegOpenKey(HKEY_LOCAL_MACHINE,
-                   "Software\\Microsoft\\Windows\\CurrentVersion", &hkey))
+    if (RegOpenKeyA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion", &hkey))
         return FALSE;
 
     size = MAX_PATH;
@@ -2253,14 +2369,14 @@ static void write_file(const CHAR *filename, const char *data, int data_size)
 {
     DWORD size;
 
-    HANDLE hf = CreateFile(filename, GENERIC_WRITE, 0, NULL,
-                           CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-
+    HANDLE hf = CreateFileA(filename, GENERIC_WRITE, 0, NULL,
+                            CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     WriteFile(hf, data, data_size, &size, NULL);
     CloseHandle(hf);
 }
 
-static void write_msi_summary_info(MSIHANDLE db, INT version, INT wordcount, const char *template)
+static void write_msi_summary_info(MSIHANDLE db, INT version, INT wordcount,
+                                   const char *template, const char *packagecode)
 {
     MSIHANDLE summary;
     UINT r;
@@ -2271,8 +2387,7 @@ static void write_msi_summary_info(MSIHANDLE db, INT version, INT wordcount, con
     r = MsiSummaryInfoSetPropertyA(summary, PID_TEMPLATE, VT_LPSTR, 0, NULL, template);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
-    r = MsiSummaryInfoSetPropertyA(summary, PID_REVNUMBER, VT_LPSTR, 0, NULL,
-                                   "{004757CA-5092-49C2-AD20-28E1CE0DF5F2}");
+    r = MsiSummaryInfoSetPropertyA(summary, PID_REVNUMBER, VT_LPSTR, 0, NULL, packagecode);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     r = MsiSummaryInfoSetPropertyA(summary, PID_PAGECOUNT, VT_I4, version, NULL, NULL);
@@ -2292,20 +2407,27 @@ static void write_msi_summary_info(MSIHANDLE db, INT version, INT wordcount, con
 }
 
 #define create_database(name, tables, num_tables) \
-    create_database_wordcount(name, tables, num_tables, 100, 0, ";1033");
+    create_database_wordcount(name, tables, num_tables, 100, 0, ";1033", \
+                              "{004757CA-5092-49C2-AD20-28E1CE0DF5F2}");
 
 #define create_database_template(name, tables, num_tables, version, template) \
-    create_database_wordcount(name, tables, num_tables, version, 0, template);
+    create_database_wordcount(name, tables, num_tables, version, 0, template, \
+                              "{004757CA-5092-49C2-AD20-28E1CE0DF5F2}");
 
 static void create_database_wordcount(const CHAR *name, const msi_table *tables,
                                       int num_tables, INT version, INT wordcount,
-                                      const char *template)
+                                      const char *template, const char *packagecode)
 {
     MSIHANDLE db;
     UINT r;
-    int j;
+    WCHAR *nameW;
+    int j, len;
 
-    r = MsiOpenDatabaseA(name, MSIDBOPEN_CREATE, &db);
+    len = MultiByteToWideChar( CP_ACP, 0, name, -1, NULL, 0 );
+    if (!(nameW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return;
+    MultiByteToWideChar( CP_ACP, 0, name, -1, nameW, len );
+
+    r = MsiOpenDatabaseW(nameW, MSIDBOPEN_CREATE, &db);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     /* import the tables into the database */
@@ -2321,12 +2443,13 @@ static void create_database_wordcount(const CHAR *name, const msi_table *tables,
         DeleteFileA(table->filename);
     }
 
-    write_msi_summary_info(db, version, wordcount, template);
+    write_msi_summary_info(db, version, wordcount, template, packagecode);
 
     r = MsiDatabaseCommit(db);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     MsiCloseHandle(db);
+    HeapFree( GetProcessHeap(), 0, nameW );
 }
 
 static void check_service_is_installed(void)
@@ -2334,10 +2457,10 @@ static void check_service_is_installed(void)
     SC_HANDLE scm, service;
     BOOL res;
 
-    scm = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+    scm = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
     ok(scm != NULL, "Failed to open the SC Manager\n");
 
-    service = OpenService(scm, "TestService", SC_MANAGER_ALL_ACCESS);
+    service = OpenServiceA(scm, "TestService", SC_MANAGER_ALL_ACCESS);
     ok(service != NULL, "Failed to open TestService\n");
 
     res = DeleteService(service);
@@ -2435,7 +2558,7 @@ static void test_MsiInstallProduct(void)
     ok(delete_pf("msitest\\service.exe", TRUE), "File not installed\n");
     ok(delete_pf("msitest", FALSE), "Directory not created\n");
 
-    res = RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Wine\\msitest", 0, access, &hkey);
+    res = RegOpenKeyExA(HKEY_CURRENT_USER, "SOFTWARE\\Wine\\msitest", 0, access, &hkey);
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
     size = MAX_PATH;
@@ -2684,13 +2807,13 @@ static void test_MsiSetComponentState(void)
 
     CoInitialize(NULL);
 
-    lstrcpy(path, CURR_DIR);
-    lstrcat(path, "\\");
-    lstrcat(path, msifile);
+    lstrcpyA(path, CURR_DIR);
+    lstrcatA(path, "\\");
+    lstrcatA(path, msifile);
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiOpenPackage(path, &package);
+    r = MsiOpenPackageA(path, &package);
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
@@ -2698,21 +2821,21 @@ static void test_MsiSetComponentState(void)
     }
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
-    r = MsiDoAction(package, "CostInitialize");
+    r = MsiDoActionA(package, "CostInitialize");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
-    r = MsiDoAction(package, "FileCost");
+    r = MsiDoActionA(package, "FileCost");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
-    r = MsiDoAction(package, "CostFinalize");
+    r = MsiDoActionA(package, "CostFinalize");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
-    r = MsiGetComponentState(package, "dangler", &installed, &action);
+    r = MsiGetComponentStateA(package, "dangler", &installed, &action);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
     ok(installed == INSTALLSTATE_ABSENT, "Expected INSTALLSTATE_ABSENT, got %d\n", installed);
     ok(action == INSTALLSTATE_UNKNOWN, "Expected INSTALLSTATE_UNKNOWN, got %d\n", action);
 
-    r = MsiSetComponentState(package, "dangler", INSTALLSTATE_SOURCE);
+    r = MsiSetComponentStateA(package, "dangler", INSTALLSTATE_SOURCE);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     MsiCloseHandle(package);
@@ -2726,6 +2849,7 @@ static void test_packagecoltypes(void)
 {
     MSIHANDLE hdb, view, rec;
     char path[MAX_PATH];
+    WCHAR pathW[MAX_PATH];
     LPCSTR query;
     UINT r, count;
 
@@ -2733,15 +2857,16 @@ static void test_packagecoltypes(void)
 
     CoInitialize(NULL);
 
-    lstrcpy(path, CURR_DIR);
-    lstrcat(path, "\\");
-    lstrcat(path, msifile);
+    lstrcpyA(path, CURR_DIR);
+    lstrcatA(path, "\\");
+    lstrcatA(path, msifile);
+    MultiByteToWideChar( CP_ACP, 0, path, -1, pathW, MAX_PATH );
 
-    r = MsiOpenDatabase(path, MSIDBOPEN_READONLY, &hdb);
+    r = MsiOpenDatabaseW(pathW, MSIDBOPEN_READONLY, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     query = "SELECT * FROM `Media`";
-    r = MsiDatabaseOpenView( hdb, query, &view );
+    r = MsiDatabaseOpenViewA( hdb, query, &view );
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
 
     r = MsiViewGetColumnInfo( view, MSICOLINFO_NAMES, &rec );
@@ -2772,7 +2897,7 @@ static void test_packagecoltypes(void)
     MsiCloseHandle(hdb);
     CoUninitialize();
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void create_cc_test_files(void)
@@ -2812,15 +2937,15 @@ static void create_cc_test_files(void)
 
     create_cab_file("test3.cab", MEDIA_SIZE, "caesar\0");
 
-    DeleteFile("maximus");
-    DeleteFile("augustus");
-    DeleteFile("tiberius");
-    DeleteFile("caesar");
+    DeleteFileA("maximus");
+    DeleteFileA("augustus");
+    DeleteFileA("tiberius");
+    DeleteFileA("caesar");
 }
 
 static void delete_cab_files(void)
 {
-    SHFILEOPSTRUCT shfl;
+    SHFILEOPSTRUCTA shfl;
     CHAR path[MAX_PATH+10];
 
     lstrcpyA(path, CURR_DIR);
@@ -2833,7 +2958,7 @@ static void delete_cab_files(void)
     shfl.pTo = NULL;
     shfl.fFlags = FOF_FILESONLY | FOF_NOCONFIRMATION | FOF_NORECURSION | FOF_SILENT;
 
-    SHFileOperation(&shfl);
+    SHFileOperationA(&shfl);
 }
 
 static void test_continuouscabs(void)
@@ -2866,7 +2991,7 @@ static void test_continuouscabs(void)
     }
 
     delete_cab_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     create_cc_test_files();
     create_database(msifile, cc2_tables, sizeof(cc2_tables) / sizeof(msi_table));
@@ -2889,7 +3014,7 @@ static void test_continuouscabs(void)
     }
 
     delete_cab_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     /* Tests to show that only msi cab filename is taken in case of mismatch with the one given by previous cab */
 
@@ -2914,11 +3039,11 @@ static void test_continuouscabs(void)
     }
 
     delete_cab_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     /* Filename from msi is right and the one from cab is wrong */
     create_cc_test_files();
-    ok(MoveFile("test2.cab", "test2_.cab"), "Cannot rename test2.cab to test2_.cab\n");
+    ok(MoveFileA("test2.cab", "test2_.cab"), "Cannot rename test2.cab to test2_.cab\n");
     create_database(msifile, cc3_tables, sizeof(cc3_tables) / sizeof(msi_table));
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
@@ -2938,7 +3063,7 @@ static void test_continuouscabs(void)
     }
 
     delete_cab_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_caborder(void)
@@ -2987,7 +3112,7 @@ static void test_caborder(void)
     ok(!delete_pf("msitest", FALSE), "Directory is created\n");
 
     delete_cab_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     create_cc_test_files();
     create_database(msifile, co_tables, sizeof(co_tables) / sizeof(msi_table));
@@ -3003,7 +3128,7 @@ static void test_caborder(void)
     }
 
     delete_cab_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     create_cc_test_files();
     create_database(msifile, co2_tables, sizeof(co2_tables) / sizeof(msi_table));
@@ -3020,11 +3145,11 @@ static void test_caborder(void)
 
 error:
     delete_cab_files();
-    DeleteFile("imperator");
-    DeleteFile("maximus");
-    DeleteFile("augustus");
-    DeleteFile("caesar");
-    DeleteFile(msifile);
+    DeleteFileA("imperator");
+    DeleteFileA("maximus");
+    DeleteFileA("augustus");
+    DeleteFileA("caesar");
+    DeleteFileA(msifile);
 }
 
 static void test_mixedmedia(void)
@@ -3062,12 +3187,12 @@ static void test_mixedmedia(void)
 
 error:
     /* Delete the files in the temp (current) folder */
-    DeleteFile("msitest\\maximus");
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
-    DeleteFile("caesar");
-    DeleteFile("test1.cab");
-    DeleteFile(msifile);
+    DeleteFileA("msitest\\maximus");
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
+    DeleteFileA("caesar");
+    DeleteFileA("test1.cab");
+    DeleteFileA(msifile);
 }
 
 static void test_samesequence(void)
@@ -3089,7 +3214,7 @@ static void test_samesequence(void)
         ok(delete_pf("msitest", FALSE), "Directory not created\n");
     }
     delete_cab_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_uiLevelFlags(void)
@@ -3111,7 +3236,7 @@ static void test_uiLevelFlags(void)
         ok(delete_pf("msitest", FALSE), "Directory not created\n");
     }
     delete_cab_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static BOOL file_matches(LPSTR path)
@@ -3120,14 +3245,13 @@ static BOOL file_matches(LPSTR path)
     HANDLE file;
     DWORD size;
 
-    file = CreateFile(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
-                      NULL, OPEN_EXISTING, 0, NULL);
-
+    file = CreateFileA(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
+                       NULL, OPEN_EXISTING, 0, NULL);
     ZeroMemory(buf, MAX_PATH);
     ReadFile(file, buf, 15, &size, NULL);
     CloseHandle(file);
 
-    return !lstrcmp(buf, "msitest\\maximus");
+    return !lstrcmpA(buf, "msitest\\maximus");
 }
 
 static void test_readonlyfile(void)
@@ -3149,13 +3273,13 @@ static void test_readonlyfile(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    lstrcpy(path, PROG_FILES_DIR);
-    lstrcat(path, "\\msitest");
-    CreateDirectory(path, NULL);
+    lstrcpyA(path, PROG_FILES_DIR);
+    lstrcatA(path, "\\msitest");
+    CreateDirectoryA(path, NULL);
 
-    lstrcat(path, "\\maximus");
-    file = CreateFile(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
-                      NULL, CREATE_NEW, FILE_ATTRIBUTE_READONLY, NULL);
+    lstrcatA(path, "\\maximus");
+    file = CreateFileA(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
+                       NULL, CREATE_NEW, FILE_ATTRIBUTE_READONLY, NULL);
 
     WriteFile(file, "readonlyfile", strlen("readonlyfile"), &size, NULL);
     CloseHandle(file);
@@ -3173,9 +3297,9 @@ static void test_readonlyfile(void)
 
 error:
     /* Delete the files in the temp (current) folder */
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
-    DeleteFile(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
+    DeleteFileA(msifile);
 }
 
 static void test_readonlyfile_cab(void)
@@ -3195,19 +3319,19 @@ static void test_readonlyfile_cab(void)
     CreateDirectoryA("msitest", NULL);
     create_file("maximus", 500);
     create_cab_file("test1.cab", MEDIA_SIZE, "maximus\0");
-    DeleteFile("maximus");
+    DeleteFileA("maximus");
 
     create_database(msifile, rofc_tables, sizeof(rofc_tables) / sizeof(msi_table));
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    lstrcpy(path, PROG_FILES_DIR);
-    lstrcat(path, "\\msitest");
-    CreateDirectory(path, NULL);
+    lstrcpyA(path, PROG_FILES_DIR);
+    lstrcatA(path, "\\msitest");
+    CreateDirectoryA(path, NULL);
 
-    lstrcat(path, "\\maximus");
-    file = CreateFile(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
-                      NULL, CREATE_NEW, FILE_ATTRIBUTE_READONLY, NULL);
+    lstrcatA(path, "\\maximus");
+    file = CreateFileA(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
+                       NULL, CREATE_NEW, FILE_ATTRIBUTE_READONLY, NULL);
 
     WriteFile(file, "readonlyfile", strlen("readonlyfile"), &size, NULL);
     CloseHandle(file);
@@ -3221,8 +3345,8 @@ static void test_readonlyfile_cab(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     memset( buf, 0, sizeof(buf) );
-    if ((file = CreateFile(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
-                           NULL, OPEN_EXISTING, 0, NULL)) != INVALID_HANDLE_VALUE)
+    if ((file = CreateFileA(path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
+                            NULL, OPEN_EXISTING, 0, NULL)) != INVALID_HANDLE_VALUE)
     {
         ReadFile(file, buf, sizeof(buf) - 1, &size, NULL);
         CloseHandle(file);
@@ -3234,9 +3358,9 @@ static void test_readonlyfile_cab(void)
 error:
     /* Delete the files in the temp (current) folder */
     delete_cab_files();
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
-    DeleteFile(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
+    DeleteFileA(msifile);
 }
 
 static void test_setdirproperty(void)
@@ -3267,9 +3391,9 @@ static void test_setdirproperty(void)
 
 error:
     /* Delete the files in the temp (current) folder */
-    DeleteFile(msifile);
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
 }
 
 static void test_cabisextracted(void)
@@ -3312,17 +3436,17 @@ static void test_cabisextracted(void)
 error:
     /* Delete the files in the temp (current) folder */
     delete_cab_files();
-    DeleteFile(msifile);
-    DeleteFile("maximus");
-    DeleteFile("augustus");
-    DeleteFile("caesar");
-    DeleteFile("msitest\\gaius");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("maximus");
+    DeleteFileA("augustus");
+    DeleteFileA("caesar");
+    DeleteFileA("msitest\\gaius");
+    RemoveDirectoryA("msitest");
 }
 
 static BOOL file_exists(LPCSTR file)
 {
-    return GetFileAttributes(file) != INVALID_FILE_ATTRIBUTES;
+    return GetFileAttributesA(file) != INVALID_FILE_ATTRIBUTES;
 }
 
 static BOOL pf_exists(LPCSTR file)
@@ -3338,7 +3462,7 @@ static BOOL pf_exists(LPCSTR file)
 
 static void delete_pfmsitest_files(void)
 {
-    SHFILEOPSTRUCT shfl;
+    SHFILEOPSTRUCTA shfl;
     CHAR path[MAX_PATH+11];
 
     lstrcpyA(path, PROG_FILES_DIR);
@@ -3351,7 +3475,7 @@ static void delete_pfmsitest_files(void)
     shfl.pTo = NULL;
     shfl.fFlags = FOF_FILESONLY | FOF_NOCONFIRMATION | FOF_NORECURSION | FOF_SILENT | FOF_NOERRORUI;
 
-    SHFileOperation(&shfl);
+    SHFileOperationA(&shfl);
 
     lstrcpyA(path, PROG_FILES_DIR);
     lstrcatA(path, "\\msitest");
@@ -3363,7 +3487,7 @@ static UINT run_query(MSIHANDLE hdb, MSIHANDLE hrec, const char *query)
     MSIHANDLE hview = 0;
     UINT r;
 
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     if(r != ERROR_SUCCESS)
         return r;
 
@@ -3380,19 +3504,19 @@ static void set_transform_summary_info(void)
     MSIHANDLE suminfo = 0;
 
     /* build summary info */
-    r = MsiGetSummaryInformation(0, mstfile, 3, &suminfo);
+    r = MsiGetSummaryInformationA(0, mstfile, 3, &suminfo);
     ok(r == ERROR_SUCCESS , "Failed to open summaryinfo\n");
 
-    r = MsiSummaryInfoSetProperty(suminfo, PID_TITLE, VT_LPSTR, 0, NULL, "MSITEST");
+    r = MsiSummaryInfoSetPropertyA(suminfo, PID_TITLE, VT_LPSTR, 0, NULL, "MSITEST");
     ok(r == ERROR_SUCCESS, "Failed to set summary info\n");
 
-    r = MsiSummaryInfoSetProperty(suminfo, PID_REVNUMBER, VT_LPSTR, 0, NULL,
-                        "{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}1.1.1;"
-                        "{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}1.1.1;"
-                        "{4C0EAA15-0264-4E5A-8758-609EF142B92D}");
+    r = MsiSummaryInfoSetPropertyA(suminfo, PID_REVNUMBER, VT_LPSTR, 0, NULL,
+                                   "{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}1.1.1;"
+                                   "{7DF88A48-996F-4EC8-A022-BF956F9B2CBB}1.1.1;"
+                                   "{4C0EAA15-0264-4E5A-8758-609EF142B92D}");
     ok(r == ERROR_SUCCESS , "Failed to set summary info\n");
 
-    r = MsiSummaryInfoSetProperty(suminfo, PID_PAGECOUNT, VT_I4, 100, NULL, NULL);
+    r = MsiSummaryInfoSetPropertyA(suminfo, PID_PAGECOUNT, VT_I4, 100, NULL, NULL);
     ok(r == ERROR_SUCCESS, "Failed to set summary info\n");
 
     r = MsiSummaryInfoPersist(suminfo);
@@ -3409,15 +3533,15 @@ static void generate_transform(void)
     UINT r;
 
     /* start with two identical databases */
-    CopyFile(msifile, msifile2, FALSE);
+    CopyFileA(msifile, msifile2, FALSE);
 
-    r = MsiOpenDatabase(msifile2, MSIDBOPEN_TRANSACT, &hdb1);
+    r = MsiOpenDatabaseW(msifile2W, MSIDBOPEN_TRANSACT, &hdb1);
     ok(r == ERROR_SUCCESS , "Failed to create database\n");
 
     r = MsiDatabaseCommit(hdb1);
     ok(r == ERROR_SUCCESS , "Failed to commit database\n");
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_READONLY, &hdb2);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_READONLY, &hdb2);
     ok(r == ERROR_SUCCESS , "Failed to create database\n");
 
     query = "INSERT INTO `Property` ( `Property`, `Value` ) VALUES ( 'prop', 'val' )";
@@ -3427,10 +3551,10 @@ static void generate_transform(void)
     /* database needs to be committed */
     MsiDatabaseCommit(hdb1);
 
-    r = MsiDatabaseGenerateTransform(hdb1, hdb2, mstfile, 0, 0);
+    r = MsiDatabaseGenerateTransformA(hdb1, hdb2, mstfile, 0, 0);
     ok(r == ERROR_SUCCESS, "return code %d, should be ERROR_SUCCESS\n", r);
 
-    r = MsiCreateTransformSummaryInfo(hdb2, hdb2, mstfile, 0, 0);
+    r = MsiCreateTransformSummaryInfoA(hdb2, hdb2, mstfile, 0, 0);
     todo_wine ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     MsiCloseHandle(hdb1);
@@ -3554,11 +3678,11 @@ static void test_transformprop(void)
 
 error:
     /* Delete the files in the temp (current) folder */
-    DeleteFile(msifile);
-    DeleteFile(msifile2);
-    DeleteFile(mstfile);
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA(msifile2);
+    DeleteFileA(mstfile);
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
 }
 
 static void test_currentworkingdir(void)
@@ -3608,9 +3732,8 @@ static void test_currentworkingdir(void)
     drive[3] = '\0';
     SetCurrentDirectoryA(drive);
 
-    lstrcpy(path, CURR_DIR);
-    if (path[lstrlenA(path) - 1] != '\\')
-        lstrcatA(path, "\\");
+    lstrcpyA(path, CURR_DIR);
+    if (path[lstrlenA(path) - 1] != '\\') lstrcatA(path, "\\");
     lstrcatA(path, msifile);
     ptr = strchr(path, ':');
     ptr +=2;
@@ -3622,18 +3745,18 @@ static void test_currentworkingdir(void)
 
 error:
     SetCurrentDirectoryA(CURR_DIR);
-    DeleteFile(msifile);
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
-    RemoveDirectory("diffdir");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
+    RemoveDirectoryA("diffdir");
 }
 
-static void set_admin_summary_info(const CHAR *name)
+static void set_admin_summary_info(const WCHAR *name)
 {
     MSIHANDLE db, summary;
     UINT r;
 
-    r = MsiOpenDatabaseA(name, MSIDBOPEN_DIRECT, &db);
+    r = MsiOpenDatabaseW(name, MSIDBOPEN_DIRECT, &db);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     r = MsiGetSummaryInformationA(db, NULL, 1, &summary);
@@ -3662,7 +3785,7 @@ static void test_admin(void)
     create_file("msitest\\augustus", 500);
 
     create_database(msifile, adm_tables, sizeof(adm_tables) / sizeof(msi_table));
-    set_admin_summary_info(msifile);
+    set_admin_summary_info(msifileW);
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
@@ -3675,8 +3798,8 @@ static void test_admin(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
     ok(!delete_pf("msitest\\augustus", TRUE), "File installed\n");
     ok(!delete_pf("msitest", FALSE), "Directory created\n");
-    ok(!DeleteFile("c:\\msitest\\augustus"), "File installed\n");
-    ok(!RemoveDirectory("c:\\msitest"), "File installed\n");
+    ok(!DeleteFileA("c:\\msitest\\augustus"), "File installed\n");
+    ok(!RemoveDirectoryA("c:\\msitest"), "File installed\n");
 
     r = MsiInstallProductA(msifile, "ACTION=ADMIN");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
@@ -3684,14 +3807,14 @@ static void test_admin(void)
     ok(!delete_pf("msitest", FALSE), "Directory created\n");
     todo_wine
     {
-        ok(DeleteFile("c:\\msitest\\augustus"), "File not installed\n");
-        ok(RemoveDirectory("c:\\msitest"), "File not installed\n");
+        ok(DeleteFileA("c:\\msitest\\augustus"), "File not installed\n");
+        ok(RemoveDirectoryA("c:\\msitest"), "File not installed\n");
     }
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
 }
 
 static void set_admin_property_stream(LPCSTR file)
@@ -3739,7 +3862,7 @@ static void test_adminprops(void)
     create_file("msitest\\augustus", 500);
 
     create_database(msifile, amp_tables, sizeof(amp_tables) / sizeof(msi_table));
-    set_admin_summary_info(msifile);
+    set_admin_summary_info(msifileW);
     set_admin_property_stream(msifile);
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
@@ -3755,9 +3878,9 @@ static void test_adminprops(void)
     ok(delete_pf("msitest", FALSE), "Directory created\n");
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
 }
 
 static void create_pf_data(LPCSTR file, LPCSTR data, BOOL is_file)
@@ -3837,13 +3960,13 @@ static void test_missingcab(void)
 
 error:
     delete_pf("msitest", FALSE);
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
-    DeleteFile("maximus");
-    DeleteFile("tiberius");
-    DeleteFile("test1.cab");
-    DeleteFile("test4.cab");
-    DeleteFile(msifile);
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
+    DeleteFileA("maximus");
+    DeleteFileA("tiberius");
+    DeleteFileA("test1.cab");
+    DeleteFileA("test4.cab");
+    DeleteFileA(msifile);
 }
 
 static void test_sourcefolder(void)
@@ -3888,8 +4011,8 @@ static void test_sourcefolder(void)
     }
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("augustus");
+    DeleteFileA(msifile);
+    DeleteFileA("augustus");
 }
 
 static void test_customaction51(void)
@@ -3920,9 +4043,9 @@ static void test_customaction51(void)
     ok(delete_pf("msitest", FALSE), "Directory created\n");
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
 }
 
 static void test_installstate(void)
@@ -4023,20 +4146,20 @@ static void test_installstate(void)
     ok(!delete_pf("msitest", FALSE), "Directory created\n");
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\alpha");
-    DeleteFile("msitest\\beta");
-    DeleteFile("msitest\\gamma");
-    DeleteFile("msitest\\theta");
-    DeleteFile("msitest\\delta");
-    DeleteFile("msitest\\epsilon");
-    DeleteFile("msitest\\zeta");
-    DeleteFile("msitest\\iota");
-    DeleteFile("msitest\\eta");
-    DeleteFile("msitest\\kappa");
-    DeleteFile("msitest\\lambda");
-    DeleteFile("msitest\\mu");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\alpha");
+    DeleteFileA("msitest\\beta");
+    DeleteFileA("msitest\\gamma");
+    DeleteFileA("msitest\\theta");
+    DeleteFileA("msitest\\delta");
+    DeleteFileA("msitest\\epsilon");
+    DeleteFileA("msitest\\zeta");
+    DeleteFileA("msitest\\iota");
+    DeleteFileA("msitest\\eta");
+    DeleteFileA("msitest\\kappa");
+    DeleteFileA("msitest\\lambda");
+    DeleteFileA("msitest\\mu");
+    RemoveDirectoryA("msitest");
 }
 
 static const struct sourcepathmap
@@ -4489,8 +4612,8 @@ static void test_sourcedirprop(void)
     ok(delete_pf("msitest\\augustus", TRUE), "File installed\n");
     ok(delete_pf("msitest", FALSE), "Directory created\n");
 
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
 
     CreateDirectoryA("altsource", NULL);
     CreateDirectoryA("altsource\\msitest", NULL);
@@ -4503,14 +4626,14 @@ static void test_sourcedirprop(void)
     ok(delete_pf("msitest\\augustus", TRUE), "File installed\n");
     ok(delete_pf("msitest", FALSE), "Directory created\n");
 
-    DeleteFile("altsource\\msitest\\augustus");
-    RemoveDirectory("altsource\\msitest");
-    RemoveDirectory("altsource");
+    DeleteFileA("altsource\\msitest\\augustus");
+    RemoveDirectoryA("altsource\\msitest");
+    RemoveDirectoryA("altsource");
 
 error:
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
-    DeleteFile(msifile);
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
+    DeleteFileA(msifile);
 }
 
 static void test_adminimage(void)
@@ -4538,7 +4661,8 @@ static void test_adminimage(void)
 
     create_database_wordcount(msifile, ai_tables,
                               sizeof(ai_tables) / sizeof(msi_table),
-                              100, msidbSumInfoSourceTypeAdminImage, ";1033");
+                              100, msidbSumInfoSourceTypeAdminImage, ";1033",
+                              "{004757CA-5092-49C2-AD20-28E1CE0DF5F2}");
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
@@ -4607,13 +4731,16 @@ static void test_propcase(void)
     ok(delete_pf("msitest", FALSE), "Directory not created\n");
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\augustus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\augustus");
+    RemoveDirectoryA("msitest");
 }
 
 static void test_int_widths( void )
 {
+    static const WCHAR msitestW[] = {'m','s','i','t','e','s','t','.','m','s','i',0};
+    static const WCHAR msitableW[] = {'m','s','i','t','a','b','l','e','.','i','d','t',0};
+    static const WCHAR slashW[] = {'\\',0};
     static const char int0[] = "int0\ni0\nint0\tint0\n1";
     static const char int1[] = "int1\ni1\nint1\tint1\n1";
     static const char int2[] = "int2\ni2\nint2\tint2\n1";
@@ -4621,7 +4748,6 @@ static void test_int_widths( void )
     static const char int4[] = "int4\ni4\nint4\tint4\n1";
     static const char int5[] = "int5\ni5\nint5\tint5\n1";
     static const char int8[] = "int8\ni8\nint8\tint8\n1";
-
     static const struct
     {
         const char  *data;
@@ -4638,38 +4764,43 @@ static void test_int_widths( void )
         { int5, sizeof(int5) - 1, ERROR_FUNCTION_FAILED },
         { int8, sizeof(int8) - 1, ERROR_FUNCTION_FAILED }
     };
-
-    char tmpdir[MAX_PATH], msitable[MAX_PATH], msidb[MAX_PATH];
+    WCHAR tmpdir[MAX_PATH], msitable[MAX_PATH], msidb[MAX_PATH];
     MSIHANDLE db;
     UINT r, i;
 
-    GetTempPathA(MAX_PATH, tmpdir);
-    CreateDirectoryA(tmpdir, NULL);
+    GetTempPathW(MAX_PATH, tmpdir);
+    CreateDirectoryW(tmpdir, NULL);
 
-    strcpy(msitable, tmpdir);
-    strcat(msitable, "\\msitable.idt");
+    lstrcpyW(msitable, tmpdir);
+    lstrcatW(msitable, slashW);
+    lstrcatW(msitable, msitableW);
 
-    strcpy(msidb, tmpdir);
-    strcat(msidb, "\\msitest.msi");
+    lstrcpyW(msidb, tmpdir);
+    lstrcatW(msidb, slashW);
+    lstrcatW(msidb, msitestW);
 
-    r = MsiOpenDatabaseA(msidb, MSIDBOPEN_CREATE, &db);
+    r = MsiOpenDatabaseW(msidb, MSIDBOPEN_CREATE, &db);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     for (i = 0; i < sizeof(tests)/sizeof(tests[0]); i++)
     {
-        write_file(msitable, tests[i].data, tests[i].size);
+        DWORD count;
+        HANDLE handle = CreateFileW(msitable, GENERIC_WRITE, 0, NULL,
+                                    CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+        WriteFile(handle, tests[i].data, tests[i].size, &count, NULL);
+        CloseHandle(handle);
 
-        r = MsiDatabaseImportA(db, tmpdir, "msitable.idt");
+        r = MsiDatabaseImportW(db, tmpdir, msitableW);
         ok(r == tests[i].ret, " %u expected %u, got %u\n", i, tests[i].ret, r);
 
         r = MsiDatabaseCommit(db);
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
-        DeleteFileA(msitable);
+        DeleteFileW(msitable);
     }
 
     MsiCloseHandle(db);
-    DeleteFileA(msidb);
-    RemoveDirectoryA(tmpdir);
+    DeleteFileW(msidb);
+    RemoveDirectoryW(tmpdir);
 }
 
 static void test_shortcut(void)
@@ -4728,7 +4859,7 @@ static void test_shortcut(void)
 
 error:
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_preselected(void)
@@ -4785,12 +4916,12 @@ static void test_preselected(void)
 
 error:
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_installed_prop(void)
 {
-    static char prodcode[] = "{7df88a48-996f-4ec8-a022-bf956f9b2cbb}";
+    static const char prodcode[] = "{7df88a48-996f-4ec8-a022-bf956f9b2cbb}";
     UINT r;
 
     if (is_process_limited())
@@ -4836,7 +4967,7 @@ static void test_installed_prop(void)
 
 error:
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_allusers_prop(void)
@@ -4940,11 +5071,11 @@ static void test_allusers_prop(void)
 
 error:
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
-static char session_manager[] = "System\\CurrentControlSet\\Control\\Session Manager";
-static char rename_ops[]      = "PendingFileRenameOperations";
+static const char session_manager[] = "System\\CurrentControlSet\\Control\\Session Manager";
+static const char rename_ops[]      = "PendingFileRenameOperations";
 
 static void process_pending_renames(HKEY hkey)
 {
@@ -5018,7 +5149,7 @@ static BOOL file_matches_data(LPCSTR file, LPCSTR data)
     HANDLE handle;
     char buf[128];
 
-    handle = CreateFile(file, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
+    handle = CreateFileA(file, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
     ok(handle != INVALID_HANDLE_VALUE, "failed to open %s (%u)\n", file, GetLastError());
 
     if (ReadFile(handle, buf, sizeof(buf), &len, NULL) && len >= data_len)
@@ -5051,11 +5182,11 @@ static void test_file_in_use(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    lstrcpy(path, PROG_FILES_DIR);
-    lstrcat(path, "\\msitest");
+    lstrcpyA(path, PROG_FILES_DIR);
+    lstrcatA(path, "\\msitest");
     CreateDirectoryA(path, NULL);
 
-    lstrcat(path, "\\maximus");
+    lstrcatA(path, "\\maximus");
     file = CreateFileA(path, GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
 
     r = MsiInstallProductA(msifile, "REBOOT=ReallySuppress FULL=1");
@@ -5086,7 +5217,7 @@ error:
     delete_pf("msitest", FALSE);
     DeleteFileA("msitest\\maximus");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_file_in_use_cab(void)
@@ -5107,17 +5238,17 @@ static void test_file_in_use_cab(void)
     CreateDirectoryA("msitest", NULL);
     create_file("maximus", 500);
     create_cab_file("test1.cab", MEDIA_SIZE, "maximus\0");
-    DeleteFile("maximus");
+    DeleteFileA("maximus");
 
     create_database(msifile, fiuc_tables, sizeof(fiuc_tables) / sizeof(msi_table));
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    lstrcpy(path, PROG_FILES_DIR);
-    lstrcat(path, "\\msitest");
+    lstrcpyA(path, PROG_FILES_DIR);
+    lstrcatA(path, "\\msitest");
     CreateDirectoryA(path, NULL);
 
-    lstrcat(path, "\\maximus");
+    lstrcatA(path, "\\maximus");
     file = CreateFileA(path, GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
 
     r = MsiInstallProductA(msifile, "REBOOT=ReallySuppress FULL=1");
@@ -5149,7 +5280,7 @@ error:
     DeleteFileA("msitest\\maximus");
     delete_cab_files();
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_feature_override(void)
@@ -5230,7 +5361,7 @@ error:
     DeleteFileA("msitest\\preselected.txt");
     DeleteFileA("msitest\\notpreselected.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_icon_table(void)
@@ -5251,7 +5382,7 @@ static void test_icon_table(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    res = MsiOpenDatabase(msifile, MSIDBOPEN_TRANSACT, &hdb);
+    res = MsiOpenDatabaseW(msifileW, MSIDBOPEN_TRANSACT, &hdb);
     ok(res == ERROR_SUCCESS, "failed to open db: %d\n", res);
 
     query = "CREATE TABLE `Icon` (`Name` CHAR(72) NOT NULL, `Data` OBJECT NOT NULL  PRIMARY KEY `Name`)";
@@ -5260,7 +5391,7 @@ static void test_icon_table(void)
 
     create_file("icon.ico", 100);
     record = MsiCreateRecord(1);
-    res = MsiRecordSetStream(record, 1, "icon.ico");
+    res = MsiRecordSetStreamA(record, 1, "icon.ico");
     ok(res == ERROR_SUCCESS, "Failed to add stream data to record: %d\n", res);
 
     query = "INSERT INTO `Icon` (`Name`, `Data`) VALUES ('testicon', ?)";
@@ -5280,7 +5411,7 @@ static void test_icon_table(void)
     if (res == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok(res == ERROR_SUCCESS, "Failed to do per-user install: %d\n", res);
@@ -5312,7 +5443,7 @@ static void test_icon_table(void)
     ok(!file_exists(path), "System-wide icon file not removed (%s)\n", path);
 
     delete_pfmsitest_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_package_validation(void)
@@ -5341,19 +5472,19 @@ static void test_package_validation(void)
     ok(delete_pf("msitest\\maximus", TRUE), "file does not exist\n");
     ok(delete_pf("msitest", FALSE), "directory does not exist\n");
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 200, "Intel,9999;9999");
 
     r = MsiInstallProductA(msifile, NULL);
     ok(r == ERROR_INSTALL_LANGUAGE_UNSUPPORTED, "Expected ERROR_INSTALL_LANGUAGE_UNSUPPORTED, got %u\n", r);
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 200, "Intel,1033;9999");
 
     r = MsiInstallProductA(msifile, NULL);
     ok(r == ERROR_INSTALL_LANGUAGE_UNSUPPORTED, "Expected ERROR_INSTALL_LANGUAGE_UNSUPPORTED, got %u\n", r);
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 200, "Intel,9999;1033");
 
     r = MsiInstallProductA(msifile, NULL);
@@ -5361,25 +5492,25 @@ static void test_package_validation(void)
     ok(delete_pf("msitest\\maximus", TRUE), "file does not exist\n");
     ok(delete_pf("msitest", FALSE), "directory does not exist\n");
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 200, "Intel64,9999;1033");
 
     r = MsiInstallProductA(msifile, NULL);
     ok(r == ERROR_INSTALL_PLATFORM_UNSUPPORTED, "Expected ERROR_INSTALL_PLATFORM_UNSUPPORTED, got %u\n", r);
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 200, "Intel32,1033;1033");
 
     r = MsiInstallProductA(msifile, NULL);
     ok(r == ERROR_INSTALL_PLATFORM_UNSUPPORTED, "Expected ERROR_INSTALL_PLATFORM_UNSUPPORTED, got %u\n", r);
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 200, "Intel32,9999;1033");
 
     r = MsiInstallProductA(msifile, NULL);
     ok(r == ERROR_INSTALL_PLATFORM_UNSUPPORTED, "Expected ERROR_INSTALL_PLATFORM_UNSUPPORTED, got %u\n", r);
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Intel;9999");
 
     r = MsiInstallProductA(msifile, NULL);
@@ -5389,14 +5520,14 @@ static void test_package_validation(void)
 
     if (GetSystemDefaultLangID() == MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US ))
     {
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Intel;9");
         r = MsiInstallProductA(msifile, NULL);
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
         ok(delete_pf("msitest\\maximus", TRUE), "file does not exist\n");
         ok(delete_pf("msitest", FALSE), "directory does not exist\n");
 
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Intel;1024");
         r = MsiInstallProductA(msifile, NULL);
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
@@ -5404,7 +5535,7 @@ static void test_package_validation(void)
         ok(delete_pf("msitest", FALSE), "directory does not exist\n");
     }
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Intel32;0");
 
     r = MsiInstallProductA(msifile, NULL);
@@ -5414,7 +5545,7 @@ static void test_package_validation(void)
 
     if (is_64bit && !is_wow64)
     {
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Intel;0");
 
         r = MsiInstallProductA(msifile, NULL);
@@ -5422,7 +5553,7 @@ static void test_package_validation(void)
         ok(delete_pf("msitest\\maximus", TRUE), "file does not exist\n");
         ok(delete_pf("msitest", FALSE), "directory does not exist\n");
 
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "x64;0");
 
         r = MsiInstallProductA(msifile, NULL);
@@ -5430,7 +5561,7 @@ static void test_package_validation(void)
         ok(!delete_pf("msitest\\maximus", TRUE), "file exists\n");
         ok(!delete_pf("msitest", FALSE), "directory exists\n");
 
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 200, "x64;0");
 
         r = MsiInstallProductA(msifile, NULL);
@@ -5440,7 +5571,7 @@ static void test_package_validation(void)
     }
     else if (is_wow64)
     {
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Intel;0");
 
         r = MsiInstallProductA(msifile, NULL);
@@ -5448,7 +5579,7 @@ static void test_package_validation(void)
         ok(delete_pf("msitest\\maximus", TRUE), "file does not exist\n");
         ok(delete_pf("msitest", FALSE), "directory does not exist\n");
 
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "x64;0");
 
         r = MsiInstallProductA(msifile, NULL);
@@ -5456,7 +5587,7 @@ static void test_package_validation(void)
         ok(!delete_pf_native("msitest\\maximus", TRUE), "file exists\n");
         ok(!delete_pf_native("msitest", FALSE), "directory exists\n");
 
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 200, "x64;0");
 
         r = MsiInstallProductA(msifile, NULL);
@@ -5466,7 +5597,7 @@ static void test_package_validation(void)
     }
     else
     {
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Intel;0");
 
         r = MsiInstallProductA(msifile, NULL);
@@ -5474,7 +5605,7 @@ static void test_package_validation(void)
         ok(delete_pf("msitest\\maximus", TRUE), "file does not exist\n");
         ok(delete_pf("msitest", FALSE), "directory does not exist\n");
 
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Alpha,Beta,Intel;0");
 
         r = MsiInstallProductA(msifile, NULL);
@@ -5482,7 +5613,7 @@ static void test_package_validation(void)
         ok(delete_pf("msitest\\maximus", TRUE), "file does not exist\n");
         ok(delete_pf("msitest", FALSE), "directory does not exist\n");
 
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "x64;0");
 
         r = MsiInstallProductA(msifile, NULL);
@@ -5490,7 +5621,7 @@ static void test_package_validation(void)
         ok(!delete_pf("msitest\\maximus", TRUE), "file exists\n");
         ok(!delete_pf("msitest", FALSE), "directory exists\n");
 
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 200, "x64;0");
 
         r = MsiInstallProductA(msifile, NULL);
@@ -5501,9 +5632,9 @@ static void test_package_validation(void)
 
 error:
     /* Delete the files in the temp (current) folder */
-    DeleteFile(msifile);
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
 }
 
 static void test_upgrade_code(void)
@@ -5535,7 +5666,7 @@ static void test_upgrade_code(void)
 
     DeleteFileA("msitest\\upgradecode.txt");
     RemoveDirectoryA("msitest");
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_mixed_package(void)
@@ -5640,7 +5771,51 @@ static void test_volume_props(void)
 
     DeleteFileA("msitest\\volumeprop.txt");
     RemoveDirectoryA("msitest");
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
+}
+
+static void test_shared_component(void)
+{
+    UINT r;
+
+    if (is_process_limited())
+    {
+        skip("process is limited\n");
+        return;
+    }
+    CreateDirectoryA("msitest", NULL);
+    create_file("msitest\\sharedcomponent.txt", 1000);
+    create_database_wordcount(msifile, shc_tables, sizeof(shc_tables)/sizeof(shc_tables[0]),
+                              100, 0, ";", "{A8826420-FD72-4E61-9E15-C1944CF4CBE1}");
+    create_database_wordcount(msifile2, shc2_tables, sizeof(shc2_tables)/sizeof(shc2_tables[0]),
+                              100, 0, ";", "{A8B50B30-0E8A-4ACD-B3CF-1A5DC58B2739}");
+
+    MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
+
+    r = MsiInstallProductA(msifile, NULL);
+    ok(r == ERROR_SUCCESS, "got %u\n", r);
+
+    ok(pf_exists("msitest\\sharedcomponent.txt"), "file not installed\n");
+
+    r = MsiInstallProductA(msifile2, NULL);
+    ok(r == ERROR_SUCCESS, "got %u\n", r);
+
+    ok(pf_exists("msitest\\sharedcomponent.txt"), "file not installed\n");
+
+    r = MsiInstallProductA(msifile, "REMOVE=ALL");
+    ok(r == ERROR_SUCCESS, "got %u\n", r);
+
+    ok(pf_exists("msitest\\sharedcomponent.txt"), "file removed\n");
+
+    r = MsiInstallProductA(msifile2, "REMOVE=ALL");
+    ok(r == ERROR_SUCCESS, "got %u\n", r);
+
+    ok(!pf_exists("msitest\\sharedcomponent.txt"), "file not removed\n");
+
+    DeleteFileA("msitest\\sharedcomponent.txt");
+    RemoveDirectoryA("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA(msifile2);
 }
 
 START_TEST(install)
@@ -5656,7 +5831,7 @@ START_TEST(install)
         pIsWow64Process(GetCurrentProcess(), &is_wow64);
 
     GetCurrentDirectoryA(MAX_PATH, prev_path);
-    GetTempPath(MAX_PATH, temp_path);
+    GetTempPathA(MAX_PATH, temp_path);
     SetCurrentDirectoryA(temp_path);
 
     lstrcpyA(CURR_DIR, temp_path);
@@ -5727,6 +5902,7 @@ START_TEST(install)
     test_upgrade_code();
     test_mixed_package();
     test_volume_props();
+    test_shared_component();
 
     DeleteFileA(log_file);
 
index 5df72e9..3bf6595 100644 (file)
 
 static BOOL is_wow64;
 static const char msifile[] = "winetest.msi";
+static const WCHAR msifileW[] = {'w','i','n','e','t','e','s','t','.','m','s','i',0};
 static char CURR_DIR[MAX_PATH];
 static char PROG_FILES_DIR[MAX_PATH];
 static char PROG_FILES_DIR_NATIVE[MAX_PATH];
 static char COMMON_FILES_DIR[MAX_PATH];
 static char WINDOWS_DIR[MAX_PATH];
 
+static BOOL (WINAPI *pCheckTokenMembership)(HANDLE,PSID,PBOOL);
 static BOOL (WINAPI *pConvertSidToStringSidA)(PSID, LPSTR*);
 static BOOL (WINAPI *pOpenProcessToken)( HANDLE, DWORD, PHANDLE );
 static LONG (WINAPI *pRegDeleteKeyExA)(HKEY, LPCSTR, REGSAM, DWORD);
@@ -97,6 +99,7 @@ static void init_functionpointers(void)
     GET_PROC(hmsi, MsiEnumComponentsExA)
     GET_PROC(hmsi, MsiSourceListGetInfoA)
 
+    GET_PROC(hadvapi32, CheckTokenMembership);
     GET_PROC(hadvapi32, ConvertSidToStringSidA)
     GET_PROC(hadvapi32, OpenProcessToken);
     GET_PROC(hadvapi32, RegDeleteKeyExA)
@@ -110,7 +113,7 @@ static BOOL get_system_dirs(void)
     HKEY hkey;
     DWORD type, size;
 
-    if (RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion", &hkey))
+    if (RegOpenKeyA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion", &hkey))
         return FALSE;
 
     size = MAX_PATH;
@@ -140,7 +143,7 @@ static BOOL get_system_dirs(void)
 
 static BOOL file_exists(const char *file)
 {
-    return GetFileAttributes(file) != INVALID_FILE_ATTRIBUTES;
+    return GetFileAttributesA(file) != INVALID_FILE_ATTRIBUTES;
 }
 
 static BOOL pf_exists(const char *file)
@@ -169,16 +172,38 @@ static BOOL delete_pf(const char *rel_path, BOOL is_file)
 
 static BOOL is_process_limited(void)
 {
+    SID_IDENTIFIER_AUTHORITY NtAuthority = {SECURITY_NT_AUTHORITY};
+    PSID Group;
+    BOOL IsInGroup;
     HANDLE token;
-    TOKEN_ELEVATION_TYPE type = TokenElevationTypeDefault;
-    DWORD size;
-    BOOL ret;
 
-    if (!pOpenProcessToken) return FALSE;
-    if (!pOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token)) return FALSE;
-    ret = GetTokenInformation(token, TokenElevationType, &type, sizeof(type), &size);
-    CloseHandle(token);
-    return (ret && type == TokenElevationTypeLimited);
+    if (!pCheckTokenMembership || !pOpenProcessToken) return FALSE;
+
+    if (!AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID,
+                                  DOMAIN_ALIAS_RID_ADMINS,
+                                  0, 0, 0, 0, 0, 0, &Group) ||
+        !pCheckTokenMembership(NULL, Group, &IsInGroup))
+    {
+        trace("Could not check if the current user is an administrator\n");
+        return FALSE;
+    }
+    if (!IsInGroup)
+    {
+        /* Only administrators have enough privileges for these tests */
+        return TRUE;
+    }
+
+    if (pOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token))
+    {
+        BOOL ret;
+        TOKEN_ELEVATION_TYPE type = TokenElevationTypeDefault;
+        DWORD size;
+
+        ret = GetTokenInformation(token, TokenElevationType, &type, sizeof(type), &size);
+        CloseHandle(token);
+        return (ret && type == TokenElevationTypeLimited);
+    }
+    return FALSE;
 }
 
 /* cabinet definitions */
@@ -319,9 +344,8 @@ static INT_PTR CDECL get_open_info(char *pszName, USHORT *pdate, USHORT *ptime,
     DWORD attrs;
     BOOL res;
 
-    handle = CreateFile(pszName, GENERIC_READ, FILE_SHARE_READ, NULL,
-                        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
-
+    handle = CreateFileA(pszName, GENERIC_READ, FILE_SHARE_READ, NULL,
+                         OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
     ok(handle != INVALID_HANDLE_VALUE, "Failed to CreateFile %s\n", pszName);
 
     res = GetFileInformationByHandle(handle, &finfo);
@@ -330,7 +354,7 @@ static INT_PTR CDECL get_open_info(char *pszName, USHORT *pdate, USHORT *ptime,
     FileTimeToLocalFileTime(&finfo.ftLastWriteTime, &filetime);
     FileTimeToDosDateTime(&filetime, pdate, ptime);
 
-    attrs = GetFileAttributes(pszName);
+    attrs = GetFileAttributesA(pszName);
     ok(attrs != INVALID_FILE_ATTRIBUTES, "Failed to GetFileAttributes\n");
 
     return (INT_PTR)handle;
@@ -385,7 +409,7 @@ static void create_cab_file(const CHAR *name, DWORD max_size, const CHAR *files)
     {
         res = add_file(hfci, ptr, tcompTYPE_MSZIP);
         ok(res, "Failed to add file: %s\n", ptr);
-        ptr += lstrlen(ptr) + 1;
+        ptr += lstrlenA(ptr) + 1;
     }
 
     res = FCIFlushCabinet(hfci, FALSE, get_next_cabinet, progress);
@@ -434,7 +458,7 @@ static BOOL add_cabinet_storage(LPCSTR db, LPCSTR cabinet)
 
 static void delete_cab_files(void)
 {
-    SHFILEOPSTRUCT shfl;
+    SHFILEOPSTRUCTA shfl;
     CHAR path[MAX_PATH+10];
 
     lstrcpyA(path, CURR_DIR);
@@ -447,7 +471,7 @@ static void delete_cab_files(void)
     shfl.pTo = NULL;
     shfl.fFlags = FOF_FILESONLY | FOF_NOCONFIRMATION | FOF_NORECURSION | FOF_SILENT;
 
-    SHFileOperation(&shfl);
+    SHFileOperationA(&shfl);
 }
 
 /* msi database data */
@@ -994,9 +1018,8 @@ static void write_file(const CHAR *filename, const char *data, int data_size)
 {
     DWORD size;
 
-    HANDLE hf = CreateFile(filename, GENERIC_WRITE, 0, NULL,
-                           CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-
+    HANDLE hf = CreateFileA(filename, GENERIC_WRITE, 0, NULL,
+                            CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     WriteFile(hf, data, data_size, &size, NULL);
     CloseHandle(hf);
 }
@@ -1044,9 +1067,14 @@ static void create_database_wordcount(const CHAR *name, const msi_table *tables,
 {
     MSIHANDLE db;
     UINT r;
-    int j;
+    WCHAR *nameW;
+    int j, len;
 
-    r = MsiOpenDatabaseA(name, MSIDBOPEN_CREATE, &db);
+    len = MultiByteToWideChar( CP_ACP, 0, name, -1, NULL, 0 );
+    if (!(nameW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return;
+    MultiByteToWideChar( CP_ACP, 0, name, -1, nameW, len );
+
+    r = MsiOpenDatabaseW(nameW, MSIDBOPEN_CREATE, &db);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     /* import the tables into the database */
@@ -1068,6 +1096,7 @@ static void create_database_wordcount(const CHAR *name, const msi_table *tables,
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
     MsiCloseHandle(db);
+    HeapFree( GetProcessHeap(), 0, nameW );
 }
 
 static UINT run_query(MSIHANDLE hdb, const char *query)
@@ -1075,7 +1104,7 @@ static UINT run_query(MSIHANDLE hdb, const char *query)
     MSIHANDLE hview = 0;
     UINT r;
 
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     if (r != ERROR_SUCCESS)
         return r;
 
@@ -1092,33 +1121,33 @@ static UINT set_summary_info(MSIHANDLE hdb, LPSTR prodcode)
     MSIHANDLE suminfo;
 
     /* build summary info */
-    res = MsiGetSummaryInformation(hdb, NULL, 7, &suminfo);
+    res = MsiGetSummaryInformationA(hdb, NULL, 7, &suminfo);
     ok(res == ERROR_SUCCESS, "Failed to open summaryinfo\n");
 
-    res = MsiSummaryInfoSetProperty(suminfo, 2, VT_LPSTR, 0, NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo, 2, VT_LPSTR, 0, NULL,
                                     "Installation Database");
     ok(res == ERROR_SUCCESS, "Failed to set summary info\n");
 
-    res = MsiSummaryInfoSetProperty(suminfo, 3, VT_LPSTR, 0, NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo, 3, VT_LPSTR, 0, NULL,
                                     "Installation Database");
     ok(res == ERROR_SUCCESS, "Failed to set summary info\n");
 
-    res = MsiSummaryInfoSetProperty(suminfo, 4, VT_LPSTR, 0, NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo, 4, VT_LPSTR, 0, NULL,
                                     "Wine Hackers");
     ok(res == ERROR_SUCCESS, "Failed to set summary info\n");
 
-    res = MsiSummaryInfoSetProperty(suminfo, 7, VT_LPSTR, 0, NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo, 7, VT_LPSTR, 0, NULL,
                                     ";1033");
     ok(res == ERROR_SUCCESS, "Failed to set summary info\n");
 
-    res = MsiSummaryInfoSetProperty(suminfo, PID_REVNUMBER, VT_LPSTR, 0, NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo, PID_REVNUMBER, VT_LPSTR, 0, NULL,
                                     "{A2078D65-94D6-4205-8DEE-F68D6FD622AA}");
     ok(res == ERROR_SUCCESS, "Failed to set summary info\n");
 
-    res = MsiSummaryInfoSetProperty(suminfo, 14, VT_I4, 100, NULL, NULL);
+    res = MsiSummaryInfoSetPropertyA(suminfo, 14, VT_I4, 100, NULL, NULL);
     ok(res == ERROR_SUCCESS, "Failed to set summary info\n");
 
-    res = MsiSummaryInfoSetProperty(suminfo, 15, VT_I4, 0, NULL, NULL);
+    res = MsiSummaryInfoSetPropertyA(suminfo, 15, VT_I4, 0, NULL, NULL);
     ok(res == ERROR_SUCCESS, "Failed to set summary info\n");
 
     res = MsiSummaryInfoPersist(suminfo);
@@ -1136,10 +1165,10 @@ static MSIHANDLE create_package_db(LPSTR prodcode)
     CHAR query[MAX_PATH];
     UINT res;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     /* create an empty database */
-    res = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    res = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok( res == ERROR_SUCCESS , "Failed to create database\n" );
     if (res != ERROR_SUCCESS)
         return hdb;
@@ -1186,10 +1215,10 @@ static void test_usefeature(void)
         return;
     }
 
-    r = MsiQueryFeatureState(NULL,NULL);
+    r = MsiQueryFeatureStateA(NULL, NULL);
     ok( r == INSTALLSTATE_INVALIDARG, "wrong return val\n");
 
-    r = MsiQueryFeatureState("{9085040-6000-11d3-8cfe-0150048383c9}" ,NULL);
+    r = MsiQueryFeatureStateA("{9085040-6000-11d3-8cfe-0150048383c9}" ,NULL);
     ok( r == INSTALLSTATE_INVALIDARG, "wrong return val\n");
 
     r = pMsiUseFeatureExA(NULL,NULL,0,0);
@@ -1512,7 +1541,7 @@ static void test_MsiGetFileHash(void)
         ret = memcmp(&hash, &hash_data[i].hash, HASHSIZE);
         ok(!ret, "Hash incorrect\n");
 
-        DeleteFile(name);
+        DeleteFileA(name);
     }
 }
 
@@ -1683,6 +1712,7 @@ static void test_MsiQueryProductState(void)
     {
         skip("Not enough rights to perform tests\n");
         RegDeleteKeyA(userkey, "");
+        RegCloseKey(userkey);
         LocalFree(usersid);
         return;
     }
@@ -1717,6 +1747,14 @@ static void test_MsiQueryProductState(void)
     lstrcatA(keypath, prod_squashed);
 
     res = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, &localkey, NULL);
+    if (res == ERROR_ACCESS_DENIED)
+    {
+        skip("Not enough rights to perform tests\n");
+        RegDeleteKeyA(userkey, "");
+        RegCloseKey(userkey);
+        LocalFree(usersid);
+        return;
+    }
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
     /* local product key exists */
@@ -2553,6 +2591,12 @@ static void test_MsiQueryComponentState(void)
     lstrcatA(keypath, "\\InstallProperties");
 
     res = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, &prodkey, NULL);
+    if (res == ERROR_ACCESS_DENIED)
+    {
+        skip("Not enough rights to perform tests\n");
+        LocalFree(usersid);
+        return;
+    }
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
     /* local system product key exists */
@@ -3824,7 +3868,7 @@ static void get_version_info(LPSTR path, LPSTR *vercheck, LPDWORD verchecksz,
             LOWORD(ffi->dwFileVersionLS));
     *verchecksz = lstrlenA(*vercheck);
 
-    VerQueryValue(version, "\\VarFileInfo\\Translation", (void **)&lang, &size);
+    VerQueryValueA(version, "\\VarFileInfo\\Translation", (void **)&lang, &size);
     *langcheck = HeapAlloc(GetProcessHeap(), 0, MAX_PATH);
     sprintf(*langcheck, "%d", *lang);
     *langchecksz = lstrlenA(*langcheck);
@@ -4130,7 +4174,7 @@ static void test_MsiGetProductInfo(void)
     /* NULL szProduct */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(NULL, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(NULL, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4139,7 +4183,7 @@ static void test_MsiGetProductInfo(void)
     /* empty szProduct */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA("", INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA("", INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4148,7 +4192,7 @@ static void test_MsiGetProductInfo(void)
     /* garbage szProduct */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA("garbage", INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA("garbage", INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4158,7 +4202,7 @@ static void test_MsiGetProductInfo(void)
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
     r = MsiGetProductInfoA("6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D",
-                           INSTALLPROPERTY_HELPLINK, buf, &sz);
+                           INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4168,7 +4212,7 @@ static void test_MsiGetProductInfo(void)
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
     r = MsiGetProductInfoA("{6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D}",
-                           INSTALLPROPERTY_HELPLINK, buf, &sz);
+                           INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4178,7 +4222,7 @@ static void test_MsiGetProductInfo(void)
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
     r = MsiGetProductInfoA("A938G02JF-2NF3N93-VN3-2NNF-3KGKALDNF93",
-                           INSTALLPROPERTY_HELPLINK, buf, &sz);
+                           INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4196,7 +4240,7 @@ static void test_MsiGetProductInfo(void)
     /* not installed, NULL lpValueBuf */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, NULL, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, NULL, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4205,7 +4249,7 @@ static void test_MsiGetProductInfo(void)
     /* not installed, NULL pcchValueBuf */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, NULL);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, NULL);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4214,7 +4258,7 @@ static void test_MsiGetProductInfo(void)
     /* created guid cannot possibly be an installed product code */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4237,7 +4281,7 @@ static void test_MsiGetProductInfo(void)
     /* managed product code exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4263,7 +4307,7 @@ static void test_MsiGetProductInfo(void)
     /* local user product code exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4280,7 +4324,7 @@ static void test_MsiGetProductInfo(void)
     /* both local and managed product code exist */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -4292,7 +4336,7 @@ static void test_MsiGetProductInfo(void)
     /* InstallProperties key exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -4303,31 +4347,31 @@ static void test_MsiGetProductInfo(void)
     /* HelpLink value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "link"), "Expected \"link\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
 
     /* pcchBuf is NULL */
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, NULL, NULL);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, NULL, NULL);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* lpValueBuf is NULL */
     sz = MAX_PATH;
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, NULL, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, NULL, &sz);
     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 */
     sz = 2;
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, NULL, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, NULL, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 4, "Expected 4, got %d\n", sz);
 
     /* lpValueBuf is non-NULL, pcchValueBuf is too small */
     sz = 2;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to remain unchanged, got \"%s\"\n", buf);
     ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -4335,7 +4379,7 @@ static void test_MsiGetProductInfo(void)
     /* lpValueBuf is non-NULL, pcchValueBuf is exactly 4 */
     sz = 4;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"),
        "Expected buf to remain unchanged, got \"%s\"\n", buf);
@@ -4371,7 +4415,7 @@ static void test_MsiGetProductInfo(void)
     /* user product key exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected \"apple\", got \"%s\"\n", buf);
@@ -4388,7 +4432,7 @@ static void test_MsiGetProductInfo(void)
     /* local user product key exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected \"apple\", got \"%s\"\n", buf);
@@ -4400,7 +4444,7 @@ static void test_MsiGetProductInfo(void)
     /* InstallProperties key exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -4411,7 +4455,7 @@ static void test_MsiGetProductInfo(void)
     /* HelpLink value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "link"), "Expected \"link\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -4433,7 +4477,7 @@ static void test_MsiGetProductInfo(void)
     /* classes product key exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected \"apple\", got \"%s\"\n", buf);
@@ -4450,7 +4494,7 @@ static void test_MsiGetProductInfo(void)
     /* local user product key exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected \"apple\", got \"%s\"\n", buf);
@@ -4462,7 +4506,7 @@ static void test_MsiGetProductInfo(void)
     /* InstallProperties key exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected \"apple\", got \"%s\"\n", buf);
@@ -4483,7 +4527,7 @@ static void test_MsiGetProductInfo(void)
     /* Local System product key exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
         "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected \"apple\", got \"%s\"\n", buf);
@@ -4495,7 +4539,7 @@ static void test_MsiGetProductInfo(void)
     /* InstallProperties key exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -4506,7 +4550,7 @@ static void test_MsiGetProductInfo(void)
     /* HelpLink value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "link"), "Expected \"link\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -4518,7 +4562,7 @@ static void test_MsiGetProductInfo(void)
     /* HelpLink type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINK, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4529,7 +4573,7 @@ static void test_MsiGetProductInfo(void)
     /* DisplayName value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLEDPRODUCTNAME, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "name"), "Expected \"name\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -4541,7 +4585,7 @@ static void test_MsiGetProductInfo(void)
     /* DisplayName type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLEDPRODUCTNAME, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4552,7 +4596,7 @@ static void test_MsiGetProductInfo(void)
     /* DisplayVersion value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONSTRING, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONSTRINGA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "1.1.1"), "Expected \"1.1.1\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -4564,7 +4608,7 @@ static void test_MsiGetProductInfo(void)
     /* DisplayVersion type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONSTRING, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONSTRINGA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4575,7 +4619,7 @@ static void test_MsiGetProductInfo(void)
     /* HelpTelephone value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPTELEPHONE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPTELEPHONEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "tele"), "Expected \"tele\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -4587,7 +4631,7 @@ static void test_MsiGetProductInfo(void)
     /* HelpTelephone type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPTELEPHONE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_HELPTELEPHONEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4598,7 +4642,7 @@ static void test_MsiGetProductInfo(void)
     /* InstallLocation value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLLOCATION, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLLOCATIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "loc"), "Expected \"loc\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -4610,7 +4654,7 @@ static void test_MsiGetProductInfo(void)
     /* InstallLocation type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLLOCATION, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLLOCATIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4621,7 +4665,7 @@ static void test_MsiGetProductInfo(void)
     /* InstallSource value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLSOURCE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLSOURCEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "source"), "Expected \"source\", got \"%s\"\n", buf);
     ok(sz == 6, "Expected 6, got %d\n", sz);
@@ -4633,7 +4677,7 @@ static void test_MsiGetProductInfo(void)
     /* InstallSource type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLSOURCE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLSOURCEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4644,7 +4688,7 @@ static void test_MsiGetProductInfo(void)
     /* InstallDate value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLDATE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLDATEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "date"), "Expected \"date\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -4656,7 +4700,7 @@ static void test_MsiGetProductInfo(void)
     /* InstallDate type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLDATE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTALLDATEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4667,7 +4711,7 @@ static void test_MsiGetProductInfo(void)
     /* Publisher value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PUBLISHER, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PUBLISHERA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "pub"), "Expected \"pub\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -4679,7 +4723,7 @@ static void test_MsiGetProductInfo(void)
     /* Publisher type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PUBLISHER, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PUBLISHERA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4690,7 +4734,7 @@ static void test_MsiGetProductInfo(void)
     /* LocalPackage value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LOCALPACKAGE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LOCALPACKAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "pack"), "Expected \"pack\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -4702,7 +4746,7 @@ static void test_MsiGetProductInfo(void)
     /* LocalPackage type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LOCALPACKAGE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LOCALPACKAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4713,7 +4757,7 @@ static void test_MsiGetProductInfo(void)
     /* UrlInfoAbout value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_URLINFOABOUT, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_URLINFOABOUTA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "about"), "Expected \"about\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -4725,7 +4769,7 @@ static void test_MsiGetProductInfo(void)
     /* UrlInfoAbout type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_URLINFOABOUT, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_URLINFOABOUTA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4736,7 +4780,7 @@ static void test_MsiGetProductInfo(void)
     /* UrlUpdateInfo value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_URLUPDATEINFO, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_URLUPDATEINFOA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "info"), "Expected \"info\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -4748,7 +4792,7 @@ static void test_MsiGetProductInfo(void)
     /* UrlUpdateInfo type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_URLUPDATEINFO, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_URLUPDATEINFOA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4759,7 +4803,7 @@ static void test_MsiGetProductInfo(void)
     /* VersionMinor value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONMINOR, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONMINORA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "1"), "Expected \"1\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -4771,7 +4815,7 @@ static void test_MsiGetProductInfo(void)
     /* VersionMinor type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONMINOR, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONMINORA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4782,7 +4826,7 @@ static void test_MsiGetProductInfo(void)
     /* VersionMajor value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONMAJOR, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONMAJORA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "1"), "Expected \"1\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -4794,7 +4838,7 @@ static void test_MsiGetProductInfo(void)
     /* VersionMajor type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONMAJOR, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONMAJORA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4805,7 +4849,7 @@ static void test_MsiGetProductInfo(void)
     /* ProductID value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTID, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTIDA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "id"), "Expected \"id\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4817,7 +4861,7 @@ static void test_MsiGetProductInfo(void)
     /* ProductID type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTID, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTIDA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4828,7 +4872,7 @@ static void test_MsiGetProductInfo(void)
     /* RegCompany value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_REGCOMPANY, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_REGCOMPANYA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "comp"), "Expected \"comp\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -4840,7 +4884,7 @@ static void test_MsiGetProductInfo(void)
     /* RegCompany type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_REGCOMPANY, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_REGCOMPANYA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4851,7 +4895,7 @@ static void test_MsiGetProductInfo(void)
     /* RegOwner value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_REGOWNER, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_REGOWNERA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "own"), "Expected \"own\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -4863,7 +4907,7 @@ static void test_MsiGetProductInfo(void)
     /* RegOwner type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_REGOWNER, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_REGOWNERA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4874,7 +4918,7 @@ static void test_MsiGetProductInfo(void)
     /* InstanceType value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTANCETYPE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTANCETYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -4886,7 +4930,7 @@ static void test_MsiGetProductInfo(void)
     /* InstanceType type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTANCETYPE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTANCETYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -4897,7 +4941,7 @@ static void test_MsiGetProductInfo(void)
     /* InstanceType value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTANCETYPE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTANCETYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "type"), "Expected \"type\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -4909,7 +4953,7 @@ static void test_MsiGetProductInfo(void)
     /* InstanceType type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTANCETYPE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_INSTANCETYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4920,7 +4964,7 @@ static void test_MsiGetProductInfo(void)
     /* Transforms value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_TRANSFORMS, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_TRANSFORMSA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -4932,7 +4976,7 @@ static void test_MsiGetProductInfo(void)
     /* Transforms type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_TRANSFORMS, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_TRANSFORMSA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -4943,7 +4987,7 @@ static void test_MsiGetProductInfo(void)
     /* Transforms value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_TRANSFORMS, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_TRANSFORMSA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "tforms"), "Expected \"tforms\", got \"%s\"\n", buf);
     ok(sz == 6, "Expected 6, got %d\n", sz);
@@ -4955,7 +4999,7 @@ static void test_MsiGetProductInfo(void)
     /* Transforms type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_TRANSFORMS, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_TRANSFORMSA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -4966,7 +5010,7 @@ static void test_MsiGetProductInfo(void)
     /* Language value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LANGUAGE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LANGUAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -4978,7 +5022,7 @@ static void test_MsiGetProductInfo(void)
     /* Language type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LANGUAGE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LANGUAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -4989,7 +5033,7 @@ static void test_MsiGetProductInfo(void)
     /* Language value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LANGUAGE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LANGUAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "lang"), "Expected \"lang\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -5001,7 +5045,7 @@ static void test_MsiGetProductInfo(void)
     /* Language type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LANGUAGE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_LANGUAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -5012,7 +5056,7 @@ static void test_MsiGetProductInfo(void)
     /* ProductName value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTNAME, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5024,7 +5068,7 @@ static void test_MsiGetProductInfo(void)
     /* ProductName type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTNAME, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5035,7 +5079,7 @@ static void test_MsiGetProductInfo(void)
     /* ProductName value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTNAME, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "name"), "Expected \"name\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -5047,7 +5091,7 @@ static void test_MsiGetProductInfo(void)
     /* ProductName type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTNAME, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -5058,7 +5102,7 @@ static void test_MsiGetProductInfo(void)
     /* Assignment value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_ASSIGNMENTTYPE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_ASSIGNMENTTYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5070,7 +5114,7 @@ static void test_MsiGetProductInfo(void)
     /* Assignment type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_ASSIGNMENTTYPE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_ASSIGNMENTTYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5081,7 +5125,7 @@ static void test_MsiGetProductInfo(void)
     /* Assignment value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_ASSIGNMENTTYPE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_ASSIGNMENTTYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "at"), "Expected \"at\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -5093,7 +5137,7 @@ static void test_MsiGetProductInfo(void)
     /* Assignment type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_ASSIGNMENTTYPE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_ASSIGNMENTTYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -5104,7 +5148,7 @@ static void test_MsiGetProductInfo(void)
     /* PackageCode value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5116,7 +5160,7 @@ static void test_MsiGetProductInfo(void)
     /* PackageCode type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5127,7 +5171,7 @@ static void test_MsiGetProductInfo(void)
     /* PackageCode value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     ok(r == ERROR_BAD_CONFIGURATION,
        "Expected ERROR_BAD_CONFIGURATION, got %d\n", r);
     ok(!lstrcmpA(buf, "code"), "Expected \"code\", got \"%s\"\n", buf);
@@ -5140,7 +5184,7 @@ static void test_MsiGetProductInfo(void)
     /* PackageCode type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -5151,7 +5195,7 @@ static void test_MsiGetProductInfo(void)
     /* PackageCode value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, packcode), "Expected \"%s\", got \"%s\"\n", packcode, buf);
     ok(sz == 38, "Expected 38, got %d\n", sz);
@@ -5162,7 +5206,7 @@ static void test_MsiGetProductInfo(void)
     /* Version value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSION, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5174,7 +5218,7 @@ static void test_MsiGetProductInfo(void)
     /* Version type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSION, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5185,7 +5229,7 @@ static void test_MsiGetProductInfo(void)
     /* Version value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSION, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "ver"), "Expected \"ver\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -5197,7 +5241,7 @@ static void test_MsiGetProductInfo(void)
     /* Version type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSION, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_VERSIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -5208,7 +5252,7 @@ static void test_MsiGetProductInfo(void)
     /* ProductIcon value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTICON, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTICONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5220,7 +5264,7 @@ static void test_MsiGetProductInfo(void)
     /* ProductIcon type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTICON, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTICONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5231,7 +5275,7 @@ static void test_MsiGetProductInfo(void)
     /* ProductIcon value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTICON, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTICONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "ico"), "Expected \"ico\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -5243,7 +5287,7 @@ static void test_MsiGetProductInfo(void)
     /* ProductIcon type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTICON, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PRODUCTICONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -5251,7 +5295,7 @@ static void test_MsiGetProductInfo(void)
     /* SourceList key does not exist */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGENAME, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGENAMEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"),
@@ -5264,7 +5308,7 @@ static void test_MsiGetProductInfo(void)
     /* SourceList key exists, but PackageName val does not exist */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGENAME, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGENAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5275,7 +5319,7 @@ static void test_MsiGetProductInfo(void)
     /* PackageName val exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGENAME, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGENAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "packname"), "Expected \"packname\", got \"%s\"\n", buf);
     ok(sz == 8, "Expected 8, got %d\n", sz);
@@ -5287,7 +5331,7 @@ static void test_MsiGetProductInfo(void)
     /* PackageName type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGENAME, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_PACKAGENAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "42"), "Expected \"42\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -5298,7 +5342,7 @@ static void test_MsiGetProductInfo(void)
     /* Authorized value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_AUTHORIZED_LUA_APP, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_AUTHORIZED_LUA_APPA, buf, &sz);
     if (r != ERROR_UNKNOWN_PROPERTY)
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5313,7 +5357,7 @@ static void test_MsiGetProductInfo(void)
     /* AuthorizedLUAApp type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_AUTHORIZED_LUA_APP, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_AUTHORIZED_LUA_APPA, buf, &sz);
     if (r != ERROR_UNKNOWN_PROPERTY)
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5327,7 +5371,7 @@ static void test_MsiGetProductInfo(void)
     /* Authorized value exists */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_AUTHORIZED_LUA_APP, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_AUTHORIZED_LUA_APPA, buf, &sz);
     if (r != ERROR_UNKNOWN_PROPERTY)
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5342,7 +5386,7 @@ static void test_MsiGetProductInfo(void)
     /* AuthorizedLUAApp type is REG_DWORD */
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_AUTHORIZED_LUA_APP, buf, &sz);
+    r = MsiGetProductInfoA(prodcode, INSTALLPROPERTY_AUTHORIZED_LUA_APPA, buf, &sz);
     if (r != ERROR_UNKNOWN_PROPERTY)
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -5429,7 +5473,7 @@ static void test_MsiGetProductInfoEx(void)
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(NULL, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5439,7 +5483,7 @@ static void test_MsiGetProductInfoEx(void)
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA("", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5449,7 +5493,7 @@ static void test_MsiGetProductInfoEx(void)
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA("garbage", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5460,7 +5504,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA("6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D", usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5471,7 +5515,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA("{6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D}", usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5481,7 +5525,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, NULL);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, NULL);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5490,7 +5534,7 @@ static void test_MsiGetProductInfoEx(void)
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid, 42,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5534,7 +5578,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA("A938G02JF-2NF3N93-VN3-2NNF-3KGKALDNF93", usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5561,7 +5605,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5575,7 +5619,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5589,7 +5633,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "5"), "Expected \"5\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -5601,7 +5645,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPLINK, buf, &sz);
+                              INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5615,7 +5659,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPLINK, buf, &sz);
+                              INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -5628,7 +5672,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPLINK, buf, &sz);
+                              INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "link"), "Expected \"link\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -5641,7 +5685,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPTELEPHONE, buf, &sz);
+                              INSTALLPROPERTY_HELPTELEPHONEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "phone"), "Expected \"phone\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -5649,7 +5693,7 @@ static void test_MsiGetProductInfoEx(void)
     /* szValue and pcchValue are NULL */
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPTELEPHONE, NULL, NULL);
+                              INSTALLPROPERTY_HELPTELEPHONEA, NULL, NULL);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* pcchValue is exactly 5 */
@@ -5657,7 +5701,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPTELEPHONE, buf, &sz);
+                              INSTALLPROPERTY_HELPTELEPHONEA, buf, &sz);
     ok(r == ERROR_MORE_DATA,
        "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(sz == 10, "Expected 10, got %d\n", sz);
@@ -5666,7 +5710,7 @@ static void test_MsiGetProductInfoEx(void)
     sz = 5;
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPTELEPHONE, NULL, &sz);
+                              INSTALLPROPERTY_HELPTELEPHONEA, NULL, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 10, "Expected 10, got %d\n", sz);
 
@@ -5674,7 +5718,7 @@ static void test_MsiGetProductInfoEx(void)
     sz = MAX_PATH;
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPTELEPHONE, NULL, &sz);
+                              INSTALLPROPERTY_HELPTELEPHONEA, NULL, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(sz == 10, "Expected 10, got %d\n", sz);
 
@@ -5683,7 +5727,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPTELEPHONE, buf, &sz);
+                              INSTALLPROPERTY_HELPTELEPHONEA, buf, &sz);
     ok(r == ERROR_MORE_DATA,
        "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected \"apple\", got \"%s\"\n", buf);
@@ -5711,7 +5755,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_INSTALLDATE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLDATEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "date"), "Expected \"date\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -5724,7 +5768,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_INSTALLEDPRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "name"), "Expected \"name\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -5737,7 +5781,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_INSTALLLOCATION, buf, &sz);
+                              INSTALLPROPERTY_INSTALLLOCATIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "loc"), "Expected \"loc\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -5750,7 +5794,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_INSTALLSOURCE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLSOURCEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "source"), "Expected \"source\", got \"%s\"\n", buf);
     ok(sz == 6, "Expected 6, got %d\n", sz);
@@ -5763,7 +5807,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_LOCALPACKAGE, buf, &sz);
+                              INSTALLPROPERTY_LOCALPACKAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "local"), "Expected \"local\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -5776,7 +5820,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PUBLISHER, buf, &sz);
+                              INSTALLPROPERTY_PUBLISHERA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "pub"), "Expected \"pub\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -5789,7 +5833,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_URLINFOABOUT, buf, &sz);
+                              INSTALLPROPERTY_URLINFOABOUTA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "about"), "Expected \"about\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -5802,7 +5846,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_URLUPDATEINFO, buf, &sz);
+                              INSTALLPROPERTY_URLUPDATEINFOA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "update"), "Expected \"update\", got \"%s\"\n", buf);
     ok(sz == 6, "Expected 6, got %d\n", sz);
@@ -5815,7 +5859,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_VERSIONMINOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMINORA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "2"), "Expected \"2\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -5828,7 +5872,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_VERSIONMAJOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMAJORA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "3"), "Expected \"3\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -5841,7 +5885,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_VERSIONSTRING, buf, &sz);
+                              INSTALLPROPERTY_VERSIONSTRINGA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "3.2.1"), "Expected \"3.2.1\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -5854,7 +5898,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTID, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTIDA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "id"), "Expected \"id\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -5867,7 +5911,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_REGCOMPANY, buf, &sz);
+                              INSTALLPROPERTY_REGCOMPANYA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "comp"), "Expected \"comp\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -5880,7 +5924,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_REGOWNER, buf, &sz);
+                              INSTALLPROPERTY_REGOWNERA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "owner"), "Expected \"owner\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -5893,7 +5937,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_TRANSFORMS, buf, &sz);
+                              INSTALLPROPERTY_TRANSFORMSA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5907,7 +5951,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_LANGUAGE, buf, &sz);
+                              INSTALLPROPERTY_LANGUAGEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5921,7 +5965,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5937,7 +5981,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_ASSIGNMENTTYPE, buf, &sz);
+                              INSTALLPROPERTY_ASSIGNMENTTYPEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5951,7 +5995,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+                              INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5965,7 +6009,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_VERSION, buf, &sz);
+                              INSTALLPROPERTY_VERSIONA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5979,7 +6023,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTICON, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTICONA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -5993,7 +6037,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PACKAGENAME, buf, &sz);
+                              INSTALLPROPERTY_PACKAGENAMEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6007,7 +6051,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_AUTHORIZED_LUA_APP, buf, &sz);
+                              INSTALLPROPERTY_AUTHORIZED_LUA_APPA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6057,7 +6101,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6076,7 +6120,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_SUCCESS || broken(r == ERROR_UNKNOWN_PRODUCT), "Expected ERROR_SUCCESS, got %d\n", r);
     if (r == ERROR_UNKNOWN_PRODUCT)
     {
@@ -6096,7 +6140,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPLINK, buf, &sz);
+                              INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6110,7 +6154,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_HELPTELEPHONE, buf, &sz);
+                              INSTALLPROPERTY_HELPTELEPHONEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6124,7 +6168,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_INSTALLDATE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLDATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6138,7 +6182,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_INSTALLEDPRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6152,7 +6196,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_INSTALLLOCATION, buf, &sz);
+                              INSTALLPROPERTY_INSTALLLOCATIONA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6166,7 +6210,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_INSTALLSOURCE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLSOURCEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6180,7 +6224,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_LOCALPACKAGE, buf, &sz);
+                              INSTALLPROPERTY_LOCALPACKAGEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6194,7 +6238,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PUBLISHER, buf, &sz);
+                              INSTALLPROPERTY_PUBLISHERA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6208,7 +6252,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_URLINFOABOUT, buf, &sz);
+                              INSTALLPROPERTY_URLINFOABOUTA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6222,7 +6266,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_URLUPDATEINFO, buf, &sz);
+                              INSTALLPROPERTY_URLUPDATEINFOA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6236,7 +6280,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_VERSIONMINOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMINORA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6250,7 +6294,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_VERSIONMAJOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMAJORA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6264,7 +6308,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_VERSIONSTRING, buf, &sz);
+                              INSTALLPROPERTY_VERSIONSTRINGA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6278,7 +6322,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTID, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTIDA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6292,7 +6336,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_REGCOMPANY, buf, &sz);
+                              INSTALLPROPERTY_REGCOMPANYA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6306,7 +6350,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_REGOWNER, buf, &sz);
+                              INSTALLPROPERTY_REGOWNERA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6320,7 +6364,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_TRANSFORMS, buf, &sz);
+                              INSTALLPROPERTY_TRANSFORMSA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "trans"), "Expected \"trans\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -6333,7 +6377,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_LANGUAGE, buf, &sz);
+                              INSTALLPROPERTY_LANGUAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "lang"), "Expected \"lang\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -6346,7 +6390,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "name"), "Expected \"name\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -6361,7 +6405,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_ASSIGNMENTTYPE, buf, &sz);
+                              INSTALLPROPERTY_ASSIGNMENTTYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -6376,7 +6420,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+                              INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     todo_wine
     {
         ok(r == ERROR_BAD_CONFIGURATION,
@@ -6393,7 +6437,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_VERSION, buf, &sz);
+                              INSTALLPROPERTY_VERSIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "ver"), "Expected \"ver\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -6406,7 +6450,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PRODUCTICON, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTICONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "icon"), "Expected \"icon\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -6419,7 +6463,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_PACKAGENAME, buf, &sz);
+                              INSTALLPROPERTY_PACKAGENAMEA, buf, &sz);
     todo_wine
     {
         ok(r == ERROR_UNKNOWN_PRODUCT,
@@ -6436,7 +6480,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_AUTHORIZED_LUA_APP, buf, &sz);
+                              INSTALLPROPERTY_AUTHORIZED_LUA_APPA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "auth"), "Expected \"auth\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -6485,7 +6529,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6499,7 +6543,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6513,7 +6557,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "5"), "Expected \"5\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -6526,7 +6570,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_HELPLINK, buf, &sz);
+                              INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "link"), "Expected \"link\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -6539,7 +6583,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_HELPTELEPHONE, buf, &sz);
+                              INSTALLPROPERTY_HELPTELEPHONEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "phone"), "Expected \"phone\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -6552,7 +6596,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_INSTALLDATE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLDATEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "date"), "Expected \"date\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -6565,7 +6609,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_INSTALLEDPRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "name"), "Expected \"name\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -6578,7 +6622,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_INSTALLLOCATION, buf, &sz);
+                              INSTALLPROPERTY_INSTALLLOCATIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "loc"), "Expected \"loc\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -6591,7 +6635,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_INSTALLSOURCE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLSOURCEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "source"), "Expected \"source\", got \"%s\"\n", buf);
     ok(sz == 6, "Expected 6, got %d\n", sz);
@@ -6604,7 +6648,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_LOCALPACKAGE, buf, &sz);
+                              INSTALLPROPERTY_LOCALPACKAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "local"), "Expected \"local\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -6617,7 +6661,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PUBLISHER, buf, &sz);
+                              INSTALLPROPERTY_PUBLISHERA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "pub"), "Expected \"pub\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -6630,7 +6674,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_URLINFOABOUT, buf, &sz);
+                              INSTALLPROPERTY_URLINFOABOUTA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "about"), "Expected \"about\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -6643,7 +6687,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_URLUPDATEINFO, buf, &sz);
+                              INSTALLPROPERTY_URLUPDATEINFOA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "update"), "Expected \"update\", got \"%s\"\n", buf);
     ok(sz == 6, "Expected 6, got %d\n", sz);
@@ -6656,7 +6700,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_VERSIONMINOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMINORA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "2"), "Expected \"2\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -6669,7 +6713,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_VERSIONMAJOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMAJORA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "3"), "Expected \"3\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -6682,7 +6726,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_VERSIONSTRING, buf, &sz);
+                              INSTALLPROPERTY_VERSIONSTRINGA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "3.2.1"), "Expected \"3.2.1\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -6695,7 +6739,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTID, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTIDA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "id"), "Expected \"id\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -6708,7 +6752,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_REGCOMPANY, buf, &sz);
+                              INSTALLPROPERTY_REGCOMPANYA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "comp"), "Expected \"comp\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -6721,7 +6765,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_REGOWNER, buf, &sz);
+                              INSTALLPROPERTY_REGOWNERA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "owner"), "Expected \"owner\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -6734,7 +6778,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_TRANSFORMS, buf, &sz);
+                              INSTALLPROPERTY_TRANSFORMSA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6748,7 +6792,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_LANGUAGE, buf, &sz);
+                              INSTALLPROPERTY_LANGUAGEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6762,7 +6806,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6778,7 +6822,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_ASSIGNMENTTYPE, buf, &sz);
+                              INSTALLPROPERTY_ASSIGNMENTTYPEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6792,7 +6836,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+                              INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6806,7 +6850,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_VERSION, buf, &sz);
+                              INSTALLPROPERTY_VERSIONA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6820,7 +6864,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTICON, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTICONA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6834,7 +6878,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PACKAGENAME, buf, &sz);
+                              INSTALLPROPERTY_PACKAGENAMEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6848,7 +6892,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_AUTHORIZED_LUA_APP, buf, &sz);
+                              INSTALLPROPERTY_AUTHORIZED_LUA_APPA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6898,7 +6942,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "1"), "Expected \"1\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -6917,7 +6961,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6931,7 +6975,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_HELPLINK, buf, &sz);
+                              INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6953,7 +6997,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_HELPLINK, buf, &sz);
+                              INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6967,7 +7011,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_HELPTELEPHONE, buf, &sz);
+                              INSTALLPROPERTY_HELPTELEPHONEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6981,7 +7025,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_INSTALLDATE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLDATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -6995,7 +7039,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_INSTALLEDPRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7009,7 +7053,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_INSTALLLOCATION, buf, &sz);
+                              INSTALLPROPERTY_INSTALLLOCATIONA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7023,7 +7067,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_INSTALLSOURCE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLSOURCEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7037,7 +7081,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_LOCALPACKAGE, buf, &sz);
+                              INSTALLPROPERTY_LOCALPACKAGEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7051,7 +7095,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PUBLISHER, buf, &sz);
+                              INSTALLPROPERTY_PUBLISHERA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7065,7 +7109,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_URLINFOABOUT, buf, &sz);
+                              INSTALLPROPERTY_URLINFOABOUTA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7079,7 +7123,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_URLUPDATEINFO, buf, &sz);
+                              INSTALLPROPERTY_URLUPDATEINFOA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7093,7 +7137,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_VERSIONMINOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMINORA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7107,7 +7151,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_VERSIONMAJOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMAJORA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7121,7 +7165,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_VERSIONSTRING, buf, &sz);
+                              INSTALLPROPERTY_VERSIONSTRINGA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7135,7 +7179,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTID, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTIDA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7149,7 +7193,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_REGCOMPANY, buf, &sz);
+                              INSTALLPROPERTY_REGCOMPANYA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7163,7 +7207,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_REGOWNER, buf, &sz);
+                              INSTALLPROPERTY_REGOWNERA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7177,7 +7221,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_TRANSFORMS, buf, &sz);
+                              INSTALLPROPERTY_TRANSFORMSA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "trans"), "Expected \"trans\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -7190,7 +7234,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_LANGUAGE, buf, &sz);
+                              INSTALLPROPERTY_LANGUAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "lang"), "Expected \"lang\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -7203,7 +7247,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "name"), "Expected \"name\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -7218,7 +7262,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_ASSIGNMENTTYPE, buf, &sz);
+                              INSTALLPROPERTY_ASSIGNMENTTYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -7233,7 +7277,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+                              INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     todo_wine
     {
         ok(r == ERROR_BAD_CONFIGURATION,
@@ -7250,7 +7294,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_VERSION, buf, &sz);
+                              INSTALLPROPERTY_VERSIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "ver"), "Expected \"ver\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -7263,7 +7307,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PRODUCTICON, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTICONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "icon"), "Expected \"icon\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -7276,7 +7320,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_PACKAGENAME, buf, &sz);
+                              INSTALLPROPERTY_PACKAGENAMEA, buf, &sz);
     todo_wine
     {
         ok(r == ERROR_UNKNOWN_PRODUCT,
@@ -7293,7 +7337,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_USERMANAGED,
-                              INSTALLPROPERTY_AUTHORIZED_LUA_APP, buf, &sz);
+                              INSTALLPROPERTY_AUTHORIZED_LUA_APPA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "auth"), "Expected \"auth\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -7335,7 +7379,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, usersid,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7352,7 +7396,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7366,7 +7410,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7380,7 +7424,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "5"), "Expected \"5\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -7393,7 +7437,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_HELPLINK, buf, &sz);
+                              INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "link"), "Expected \"link\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -7406,7 +7450,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_HELPTELEPHONE, buf, &sz);
+                              INSTALLPROPERTY_HELPTELEPHONEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "phone"), "Expected \"phone\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -7419,7 +7463,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_INSTALLDATE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLDATEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "date"), "Expected \"date\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -7432,7 +7476,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_INSTALLEDPRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "name"), "Expected \"name\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -7445,7 +7489,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_INSTALLLOCATION, buf, &sz);
+                              INSTALLPROPERTY_INSTALLLOCATIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "loc"), "Expected \"loc\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -7458,7 +7502,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_INSTALLSOURCE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLSOURCEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "source"), "Expected \"source\", got \"%s\"\n", buf);
     ok(sz == 6, "Expected 6, got %d\n", sz);
@@ -7471,7 +7515,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_LOCALPACKAGE, buf, &sz);
+                              INSTALLPROPERTY_LOCALPACKAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "local"), "Expected \"local\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -7484,7 +7528,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PUBLISHER, buf, &sz);
+                              INSTALLPROPERTY_PUBLISHERA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "pub"), "Expected \"pub\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -7497,7 +7541,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_URLINFOABOUT, buf, &sz);
+                              INSTALLPROPERTY_URLINFOABOUTA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "about"), "Expected \"about\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -7510,7 +7554,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_URLUPDATEINFO, buf, &sz);
+                              INSTALLPROPERTY_URLUPDATEINFOA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "update"), "Expected \"update\", got \"%s\"\n", buf);
     ok(sz == 6, "Expected 6, got %d\n", sz);
@@ -7523,7 +7567,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_VERSIONMINOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMINORA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "2"), "Expected \"2\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -7536,7 +7580,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_VERSIONMAJOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMAJORA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "3"), "Expected \"3\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -7549,7 +7593,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_VERSIONSTRING, buf, &sz);
+                              INSTALLPROPERTY_VERSIONSTRINGA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "3.2.1"), "Expected \"3.2.1\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -7562,7 +7606,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTID, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTIDA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "id"), "Expected \"id\", got \"%s\"\n", buf);
     ok(sz == 2, "Expected 2, got %d\n", sz);
@@ -7575,7 +7619,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_REGCOMPANY, buf, &sz);
+                              INSTALLPROPERTY_REGCOMPANYA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "comp"), "Expected \"comp\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -7588,7 +7632,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_REGOWNER, buf, &sz);
+                              INSTALLPROPERTY_REGOWNERA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "owner"), "Expected \"owner\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -7601,7 +7645,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_TRANSFORMS, buf, &sz);
+                              INSTALLPROPERTY_TRANSFORMSA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7615,7 +7659,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_LANGUAGE, buf, &sz);
+                              INSTALLPROPERTY_LANGUAGEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7629,7 +7673,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7645,7 +7689,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_ASSIGNMENTTYPE, buf, &sz);
+                              INSTALLPROPERTY_ASSIGNMENTTYPEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7659,7 +7703,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+                              INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7673,7 +7717,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_VERSION, buf, &sz);
+                              INSTALLPROPERTY_VERSIONA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7687,7 +7731,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTICON, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTICONA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7701,7 +7745,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PACKAGENAME, buf, &sz);
+                              INSTALLPROPERTY_PACKAGENAMEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7715,7 +7759,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_AUTHORIZED_LUA_APP, buf, &sz);
+                              INSTALLPROPERTY_AUTHORIZED_LUA_APPA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7763,7 +7807,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTSTATE, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTSTATEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "1"), "Expected \"1\", got \"%s\"\n", buf);
     ok(sz == 1, "Expected 1, got %d\n", sz);
@@ -7776,7 +7820,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_HELPLINK, buf, &sz);
+                              INSTALLPROPERTY_HELPLINKA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7790,7 +7834,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_HELPTELEPHONE, buf, &sz);
+                              INSTALLPROPERTY_HELPTELEPHONEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7804,7 +7848,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_INSTALLDATE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLDATEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7818,7 +7862,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_INSTALLEDPRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7832,7 +7876,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_INSTALLLOCATION, buf, &sz);
+                              INSTALLPROPERTY_INSTALLLOCATIONA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7846,7 +7890,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_INSTALLSOURCE, buf, &sz);
+                              INSTALLPROPERTY_INSTALLSOURCEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7860,7 +7904,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_LOCALPACKAGE, buf, &sz);
+                              INSTALLPROPERTY_LOCALPACKAGEA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7874,7 +7918,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PUBLISHER, buf, &sz);
+                              INSTALLPROPERTY_PUBLISHERA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7888,7 +7932,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_URLINFOABOUT, buf, &sz);
+                              INSTALLPROPERTY_URLINFOABOUTA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7902,7 +7946,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_URLUPDATEINFO, buf, &sz);
+                              INSTALLPROPERTY_URLUPDATEINFOA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7916,7 +7960,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_VERSIONMINOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMINORA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7930,7 +7974,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_VERSIONMAJOR, buf, &sz);
+                              INSTALLPROPERTY_VERSIONMAJORA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7944,7 +7988,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_VERSIONSTRING, buf, &sz);
+                              INSTALLPROPERTY_VERSIONSTRINGA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7958,7 +8002,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTID, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTIDA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7972,7 +8016,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_REGCOMPANY, buf, &sz);
+                              INSTALLPROPERTY_REGCOMPANYA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -7986,7 +8030,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_REGOWNER, buf, &sz);
+                              INSTALLPROPERTY_REGOWNERA, buf, &sz);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
     ok(!lstrcmpA(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf);
@@ -8000,7 +8044,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_TRANSFORMS, buf, &sz);
+                              INSTALLPROPERTY_TRANSFORMSA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "trans"), "Expected \"trans\", got \"%s\"\n", buf);
     ok(sz == 5, "Expected 5, got %d\n", sz);
@@ -8013,7 +8057,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_LANGUAGE, buf, &sz);
+                              INSTALLPROPERTY_LANGUAGEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "lang"), "Expected \"lang\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -8026,7 +8070,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTNAME, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTNAMEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "name"), "Expected \"name\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -8041,7 +8085,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_ASSIGNMENTTYPE, buf, &sz);
+                              INSTALLPROPERTY_ASSIGNMENTTYPEA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -8056,7 +8100,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PACKAGECODE, buf, &sz);
+                              INSTALLPROPERTY_PACKAGECODEA, buf, &sz);
     todo_wine
     {
         ok(r == ERROR_BAD_CONFIGURATION,
@@ -8073,7 +8117,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_VERSION, buf, &sz);
+                              INSTALLPROPERTY_VERSIONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "ver"), "Expected \"ver\", got \"%s\"\n", buf);
     ok(sz == 3, "Expected 3, got %d\n", sz);
@@ -8086,7 +8130,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PRODUCTICON, buf, &sz);
+                              INSTALLPROPERTY_PRODUCTICONA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "icon"), "Expected \"icon\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -8099,7 +8143,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_PACKAGENAME, buf, &sz);
+                              INSTALLPROPERTY_PACKAGENAMEA, buf, &sz);
     todo_wine
     {
         ok(r == ERROR_UNKNOWN_PRODUCT,
@@ -8116,7 +8160,7 @@ static void test_MsiGetProductInfoEx(void)
     lstrcpyA(buf, "apple");
     r = pMsiGetProductInfoExA(prodcode, NULL,
                               MSIINSTALLCONTEXT_MACHINE,
-                              INSTALLPROPERTY_AUTHORIZED_LUA_APP, buf, &sz);
+                              INSTALLPROPERTY_AUTHORIZED_LUA_APPA, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "auth"), "Expected \"auth\", got \"%s\"\n", buf);
     ok(sz == 4, "Expected 4, got %d\n", sz);
@@ -10343,6 +10387,11 @@ static void test_MsiEnumPatchesEx_machine(void)
     lstrcatA(keypath, prod_squashed);
 
     res = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, &udprod, NULL);
+    if (res == ERROR_ACCESS_DENIED)
+    {
+        skip("Not enough rights to perform tests\n");
+        goto done;
+    }
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
     /* local UserData product key exists */
@@ -10570,15 +10619,17 @@ static void test_MsiEnumPatchesEx_machine(void)
        "Expected targetsid to be unchanged, got %s\n", targetsid);
     ok(size == MAX_PATH, "Expected size to be unchanged, got %d\n", size);
 
+    delete_key(hpatch, "", access & KEY_WOW64_64KEY);
+    RegCloseKey(hpatch);
+    delete_key(udpatch, "", access & KEY_WOW64_64KEY);
+    RegCloseKey(udpatch);
+
+done:
     RegDeleteValueA(patches, patch_squashed);
     RegDeleteValueA(patches, "Patches");
     delete_key(patches, "", access & KEY_WOW64_64KEY);
     RegCloseKey(patches);
     RegDeleteValueA(hpatch, "State");
-    delete_key(hpatch, "", access & KEY_WOW64_64KEY);
-    RegCloseKey(hpatch);
-    delete_key(udpatch, "", access & KEY_WOW64_64KEY);
-    RegCloseKey(udpatch);
     delete_key(udprod, "", access & KEY_WOW64_64KEY);
     RegCloseKey(udprod);
     delete_key(prodkey, "", access & KEY_WOW64_64KEY);
@@ -11584,7 +11635,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     size = MAX_PATH;
     r = pMsiGetPatchInfoExA(NULL, prodcode, NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11595,7 +11646,7 @@ static void test_MsiGetPatchInfoEx(void)
     size = MAX_PATH;
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA("", prodcode, NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11607,7 +11658,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA("garbage", prodcode, NULL,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11619,7 +11670,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA("6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D", prodcode,
                             NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11631,7 +11682,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA("{6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D}", prodcode,
                             NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11643,7 +11694,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA("A938G02JF-2NF3N93-VN3-2NNF-3KGKALDNF93", prodcode,
                             NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11654,7 +11705,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     size = MAX_PATH;
     r = pMsiGetPatchInfoExA(patchcode, NULL, NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11665,7 +11716,7 @@ static void test_MsiGetPatchInfoEx(void)
     size = MAX_PATH;
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, "", NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11677,7 +11728,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, "garbage", NULL,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11689,7 +11740,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, "6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D",
                             NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11701,7 +11752,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, "{6700E8CF-95AB-4D9C-BC2C-15840DEA7A5D}",
                             NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11713,7 +11764,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, "A938G02JF-2NF3N93-VN3-2NNF-3KGKALDNF93",
                             NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11725,7 +11776,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, "S-1-5-18",
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11737,7 +11788,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, "S-1-5-18",
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11749,7 +11800,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, "S-1-5-18",
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11761,7 +11812,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11773,7 +11824,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_NONE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11785,7 +11836,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_ALL,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11796,7 +11847,7 @@ static void test_MsiGetPatchInfoEx(void)
     size = MAX_PATH;
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid, 3,
-                           INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                           INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11809,7 +11860,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11835,7 +11886,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -11850,7 +11901,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -11864,8 +11915,8 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
-    ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
+    ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCHA, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
     ok(size == MAX_PATH, "Expected size to be unchanged, got %d\n", size);
@@ -11878,7 +11929,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -11897,7 +11948,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -11911,7 +11962,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -11926,7 +11977,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -11945,7 +11996,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, ""), "Expected \"\", got \"%s\"\n", val);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -11959,7 +12010,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "pack"), "Expected \"pack\", got \"%s\"\n", val);
     ok(size == 4, "Expected 4, got %d\n", size);
@@ -11968,7 +12019,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_TRANSFORMS, val, &size);
+                            INSTALLPROPERTY_TRANSFORMSA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "transforms"), "Expected \"transforms\", got \"%s\"\n", val);
     ok(size == 10, "Expected 10, got %d\n", size);
@@ -11982,7 +12033,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_INSTALLDATE, val, &size);
+                            INSTALLPROPERTY_INSTALLDATEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "mydate"), "Expected \"mydate\", got \"%s\"\n", val);
     ok(size == 6, "Expected 6, got %d\n", size);
@@ -11996,7 +12047,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_UNINSTALLABLE, val, &size);
+                            INSTALLPROPERTY_UNINSTALLABLEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "yes"), "Expected \"yes\", got \"%s\"\n", val);
     ok(size == 3, "Expected 3, got %d\n", size);
@@ -12010,7 +12061,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_PATCHSTATE, val, &size);
+                            INSTALLPROPERTY_PATCHSTATEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "good"), "Expected \"good\", got \"%s\"\n", val);
     ok(size == 4, "Expected 4, got %d\n", size);
@@ -12025,7 +12076,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_PATCHSTATE, val, &size);
+                            INSTALLPROPERTY_PATCHSTATEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     todo_wine ok(!lstrcmpA(val, "1"), "Expected \"1\", got \"%s\"\n", val);
     ok(size == 1, "Expected 1, got %d\n", size);
@@ -12039,7 +12090,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_DISPLAYNAME, val, &size);
+                            INSTALLPROPERTY_DISPLAYNAMEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "display"), "Expected \"display\", got \"%s\"\n", val);
     ok(size == 7, "Expected 7, got %d\n", size);
@@ -12053,7 +12104,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_MOREINFOURL, val, &size);
+                            INSTALLPROPERTY_MOREINFOURLA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "moreinfo"), "Expected \"moreinfo\", got \"%s\"\n", val);
     ok(size == 8, "Expected 8, got %d\n", size);
@@ -12073,7 +12124,7 @@ static void test_MsiGetPatchInfoEx(void)
     size = MAX_PATH;
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_MOREINFOURL, NULL, &size);
+                            INSTALLPROPERTY_MOREINFOURLA, NULL, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(size == 16, "Expected 16, got %d\n", size);
 
@@ -12081,7 +12132,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_MOREINFOURL, val, NULL);
+                            INSTALLPROPERTY_MOREINFOURLA, val, NULL);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(val, "apple"), "Expected \"apple\", got \"%s\"\n", val);
@@ -12089,7 +12140,7 @@ static void test_MsiGetPatchInfoEx(void)
     /* both lpValue and pcchValue are NULL */
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_MOREINFOURL, NULL, NULL);
+                            INSTALLPROPERTY_MOREINFOURLA, NULL, NULL);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* pcchValue doesn't have enough room for NULL terminator */
@@ -12097,7 +12148,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_MOREINFOURL, val, &size);
+                            INSTALLPROPERTY_MOREINFOURLA, val, &size);
     ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(!lstrcmpA(val, "moreinf"),
        "Expected \"moreinf\", got \"%s\"\n", val);
@@ -12108,7 +12159,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_MOREINFOURL, val, &size);
+                            INSTALLPROPERTY_MOREINFOURLA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "moreinfo"),
        "Expected \"moreinfo\", got \"%s\"\n", val);
@@ -12118,7 +12169,7 @@ static void test_MsiGetPatchInfoEx(void)
     size = 0;
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_MOREINFOURL, NULL, &size);
+                            INSTALLPROPERTY_MOREINFOURLA, NULL, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(size == 16, "Expected 16, got %d\n", size);
 
@@ -12135,7 +12186,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "pack"), "Expected \"pack\", got \"%s\"\n", val);
     ok(size == 4, "Expected 4, got %d\n", size);
@@ -12147,7 +12198,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERMANAGED,
-                            INSTALLPROPERTY_TRANSFORMS, val, &size);
+                            INSTALLPROPERTY_TRANSFORMSA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"), "Expected \"apple\", got \"%s\"\n", val);
     ok(size == MAX_PATH, "Expected MAX_PATH, got %d\n", size);
@@ -12175,7 +12226,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -12195,7 +12246,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -12210,7 +12261,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12224,7 +12275,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12238,7 +12289,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12255,7 +12306,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12269,7 +12320,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12284,7 +12335,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12303,7 +12354,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, ""), "Expected \"\", got \"%s\"\n", val);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -12317,7 +12368,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "pack"), "Expected \"pack\", got \"%s\"\n", val);
     ok(size == 4, "Expected 4, got %d\n", size);
@@ -12326,7 +12377,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_TRANSFORMS, val, &size);
+                            INSTALLPROPERTY_TRANSFORMSA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "transforms"), "Expected \"transforms\", got \"%s\"\n", val);
     ok(size == 10, "Expected 10, got %d\n", size);
@@ -12344,7 +12395,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "pack"), "Expected \"pack\", got \"%s\"\n", val);
     ok(size == 4, "Expected 4, got %d\n", size);
@@ -12356,7 +12407,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, usersid,
                             MSIINSTALLCONTEXT_USERUNMANAGED,
-                            INSTALLPROPERTY_TRANSFORMS, val, &size);
+                            INSTALLPROPERTY_TRANSFORMSA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"), "Expected \"apple\", got \"%s\"\n", val);
     ok(size == MAX_PATH, "Expected MAX_PATH, got %d\n", size);
@@ -12379,7 +12430,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -12398,7 +12449,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
@@ -12413,7 +12464,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12427,7 +12478,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12441,7 +12492,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12458,7 +12509,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12472,7 +12523,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12487,7 +12538,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"),
        "Expected val to be unchanged, got \"%s\"\n", val);
@@ -12505,7 +12556,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, ""), "Expected \"\", got \"%s\"\n", val);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -12519,7 +12570,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "pack"), "Expected \"pack\", got \"%s\"\n", val);
     ok(size == 4, "Expected 4, got %d\n", size);
@@ -12528,7 +12579,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_TRANSFORMS, val, &size);
+                            INSTALLPROPERTY_TRANSFORMSA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "transforms"), "Expected \"transforms\", got \"%s\"\n", val);
     ok(size == 10, "Expected 10, got %d\n", size);
@@ -12546,7 +12597,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_LOCALPACKAGE, val, &size);
+                            INSTALLPROPERTY_LOCALPACKAGEA, val, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(val, "pack"), "Expected \"pack\", got \"%s\"\n", val);
     ok(size == 4, "Expected 4, got %d\n", size);
@@ -12558,7 +12609,7 @@ static void test_MsiGetPatchInfoEx(void)
     lstrcpyA(val, "apple");
     r = pMsiGetPatchInfoExA(patchcode, prodcode, NULL,
                             MSIINSTALLCONTEXT_MACHINE,
-                            INSTALLPROPERTY_TRANSFORMS, val, &size);
+                            INSTALLPROPERTY_TRANSFORMSA, val, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(!lstrcmpA(val, "apple"), "Expected \"apple\", got \"%s\"\n", val);
     ok(size == MAX_PATH, "Expected MAX_PATH, got %d\n", size);
@@ -12658,6 +12709,11 @@ static void test_MsiGetPatchInfo(void)
     lstrcatA(keypath, prod_squashed);
 
     res = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath, 0, NULL, 0, access, NULL, &hkey_udproduct, NULL);
+    if (res == ERROR_ACCESS_DENIED)
+    {
+        skip("Not enough rights to perform tests\n");
+        goto done;
+    }
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", res);
 
     /* UserData product key exists */
@@ -12749,24 +12805,26 @@ static void test_MsiGetPatchInfo(void)
     RegCloseKey(hkey_udproductpatches);
     delete_key(hkey_udpatch, "", access & KEY_WOW64_64KEY);
     RegCloseKey(hkey_udpatch);
-    delete_key(hkey_patches, "", access & KEY_WOW64_64KEY);
-    RegCloseKey(hkey_patches);
-    delete_key(hkey_product, "", access & KEY_WOW64_64KEY);
-    RegCloseKey(hkey_product);
-    delete_key(hkey_patch, "", access & KEY_WOW64_64KEY);
-    RegCloseKey(hkey_patch);
     delete_key(hkey_udpatches, "", access & KEY_WOW64_64KEY);
     RegCloseKey(hkey_udpatches);
     delete_key(hkey_udprops, "", access & KEY_WOW64_64KEY);
     RegCloseKey(hkey_udprops);
     delete_key(hkey_udproduct, "", access & KEY_WOW64_64KEY);
     RegCloseKey(hkey_udproduct);
+
+done:
+    delete_key(hkey_patches, "", access & KEY_WOW64_64KEY);
+    RegCloseKey(hkey_patches);
+    delete_key(hkey_product, "", access & KEY_WOW64_64KEY);
+    RegCloseKey(hkey_product);
+    delete_key(hkey_patch, "", access & KEY_WOW64_64KEY);
+    RegCloseKey(hkey_patch);
 }
 
 static void test_MsiEnumProducts(void)
 {
     UINT r;
-    int found1, found2, found3;
+    BOOL found1, found2, found3;
     DWORD index;
     char product1[39], product2[39], product3[39], guid[39];
     char product_squashed1[33], product_squashed2[33], product_squashed3[33];
@@ -12783,10 +12841,12 @@ static void test_MsiEnumProducts(void)
     if (is_wow64)
         access |= KEY_WOW64_64KEY;
 
-    strcpy(keypath1, "Software\\Classes\\Installer\\Products\\");
-    strcat(keypath1, product_squashed1);
+    strcpy(keypath2, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
+    strcat(keypath2, usersid);
+    strcat(keypath2, "\\Installer\\Products\\");
+    strcat(keypath2, product_squashed2);
 
-    r = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath1, 0, NULL, 0, access, NULL, &key1, NULL);
+    r = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath2, 0, NULL, 0, access, NULL, &key2, NULL);
     if (r == ERROR_ACCESS_DENIED)
     {
         skip("Not enough rights to perform tests\n");
@@ -12795,12 +12855,10 @@ static void test_MsiEnumProducts(void)
     }
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
-    strcpy(keypath2, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\");
-    strcat(keypath2, usersid);
-    strcat(keypath2, "\\Installer\\Products\\");
-    strcat(keypath2, product_squashed2);
+    strcpy(keypath1, "Software\\Classes\\Installer\\Products\\");
+    strcat(keypath1, product_squashed1);
 
-    r = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath2, 0, NULL, 0, access, NULL, &key2, NULL);
+    r = RegCreateKeyExA(HKEY_LOCAL_MACHINE, keypath1, 0, NULL, 0, access, NULL, &key1, NULL);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     strcpy(keypath3, "Software\\Microsoft\\Installer\\Products\\");
@@ -12824,12 +12882,12 @@ static void test_MsiEnumProducts(void)
     r = MsiEnumProductsA(index, guid);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
-    found1 = found2 = found3 = 0;
+    found1 = found2 = found3 = FALSE;
     while ((r = MsiEnumProductsA(index, guid)) == ERROR_SUCCESS)
     {
-        if (!strcmp(product1, guid)) found1 = 1;
-        if (!strcmp(product2, guid)) found2 = 1;
-        if (!strcmp(product3, guid)) found3 = 1;
+        if (!strcmp(product1, guid)) found1 = TRUE;
+        if (!strcmp(product2, guid)) found2 = TRUE;
+        if (!strcmp(product3, guid)) found3 = TRUE;
         index++;
     }
     ok(r == ERROR_NO_MORE_ITEMS, "Expected ERROR_NO_MORE_ITEMS, got %u\n", r);
@@ -12914,10 +12972,12 @@ static void test_MsiEnumProductsEx(void)
 
     if (is_wow64) access |= KEY_WOW64_64KEY;
 
-    strcpy( keypath1, "Software\\Classes\\Installer\\Products\\" );
-    strcat( keypath1, product_squashed1 );
+    strcpy( keypath2, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\" );
+    strcat( keypath2, usersid );
+    strcat( keypath2, "\\Installer\\Products\\" );
+    strcat( keypath2, product_squashed2 );
 
-    r = RegCreateKeyExA( HKEY_LOCAL_MACHINE, keypath1, 0, NULL, 0, access, NULL, &key1, NULL );
+    r = RegCreateKeyExA( HKEY_LOCAL_MACHINE, keypath2, 0, NULL, 0, access, NULL, &key2, NULL );
     if (r == ERROR_ACCESS_DENIED)
     {
         skip( "insufficient rights\n" );
@@ -12925,12 +12985,10 @@ static void test_MsiEnumProductsEx(void)
     }
     ok( r == ERROR_SUCCESS, "got %u\n", r );
 
-    strcpy( keypath2, "Software\\Microsoft\\Windows\\CurrentVersion\\Installer\\Managed\\" );
-    strcat( keypath2, usersid );
-    strcat( keypath2, "\\Installer\\Products\\" );
-    strcat( keypath2, product_squashed2 );
+    strcpy( keypath1, "Software\\Classes\\Installer\\Products\\" );
+    strcat( keypath1, product_squashed1 );
 
-    r = RegCreateKeyExA( HKEY_LOCAL_MACHINE, keypath2, 0, NULL, 0, access, NULL, &key2, NULL );
+    r = RegCreateKeyExA( HKEY_LOCAL_MACHINE, keypath1, 0, NULL, 0, access, NULL, &key1, NULL );
     ok( r == ERROR_SUCCESS, "got %u\n", r );
 
     strcpy( keypath3, usersid );
@@ -13055,7 +13113,7 @@ done:
 static void test_MsiEnumComponents(void)
 {
     UINT r;
-    int found1, found2;
+    BOOL found1, found2;
     DWORD index;
     char comp1[39], comp2[39], guid[39];
     char comp_squashed1[33], comp_squashed2[33];
@@ -13098,11 +13156,11 @@ static void test_MsiEnumComponents(void)
 
     index = 0;
     guid[0] = 0;
-    found1 = found2 = 0;
+    found1 = found2 = FALSE;
     while (!MsiEnumComponentsA( index, guid ))
     {
-        if (!strcmp( guid, comp1 )) found1 = 1;
-        if (!strcmp( guid, comp2 )) found2 = 1;
+        if (!strcmp( guid, comp1 )) found1 = TRUE;
+        if (!strcmp( guid, comp2 )) found2 = TRUE;
         ok( guid[0], "empty guid\n" );
         guid[0] = 0;
         index++;
@@ -13121,7 +13179,7 @@ done:
 static void test_MsiEnumComponentsEx(void)
 {
     UINT r;
-    int found1, found2;
+    BOOL found1, found2;
     DWORD len, index;
     MSIINSTALLCONTEXT context;
     char comp1[39], comp2[39], guid[39], sid[128];
@@ -13174,7 +13232,7 @@ static void test_MsiEnumComponentsEx(void)
     context = 0xdeadbeef;
     sid[0] = 0;
     len = sizeof(sid);
-    found1 = found2 = 0;
+    found1 = found2 = FALSE;
     while (!pMsiEnumComponentsExA( "S-1-1-0", MSIINSTALLCONTEXT_ALL, index, guid, &context, sid, &len ))
     {
         if (!strcmp( comp1, guid ))
@@ -13182,14 +13240,14 @@ static void test_MsiEnumComponentsEx(void)
             ok( context == MSIINSTALLCONTEXT_MACHINE, "got %u\n", context );
             ok( !sid[0], "got \"%s\"\n", sid );
             ok( !len, "unexpected length %u\n", len );
-            found1 = 1;
+            found1 = TRUE;
         }
         if (!strcmp( comp2, guid ))
         {
             ok( context == MSIINSTALLCONTEXT_USERUNMANAGED, "got %u\n", context );
             ok( sid[0], "empty sid\n" );
             ok( len == strlen(sid), "unexpected length %u\n", len );
-            found2 = 1;
+            found2 = TRUE;
         }
         index++;
         guid[0] = 0;
@@ -13518,7 +13576,7 @@ static void test_MsiSetFeatureAttributes(void)
     strcat( path, "\\" );
     strcat( path, msifile );
 
-    r = MsiOpenPackage( path, &package );
+    r = MsiOpenPackageA( path, &package );
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
@@ -13530,7 +13588,7 @@ static void test_MsiSetFeatureAttributes(void)
     r = MsiSetFeatureAttributesA( package, "One", INSTALLFEATUREATTRIBUTE_FAVORLOCAL );
     ok(r == ERROR_FUNCTION_FAILED, "Expected ERROR_FUNCTION_FAILED, got %u\n", r);
 
-    r = MsiDoAction( package, "CostInitialize" );
+    r = MsiDoActionA( package, "CostInitialize" );
     ok(r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r);
 
     r = MsiSetFeatureAttributesA( 0, "One", INSTALLFEATUREATTRIBUTE_FAVORLOCAL );
@@ -13560,7 +13618,7 @@ static void test_MsiSetFeatureAttributes(void)
     ok(attrs == INSTALLFEATUREATTRIBUTE_FAVORLOCAL,
        "expected INSTALLFEATUREATTRIBUTE_FAVORLOCAL, got 0x%08x\n", attrs);
 
-    r = MsiDoAction( package, "FileCost" );
+    r = MsiDoActionA( package, "FileCost" );
     ok(r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r);
 
     r = MsiSetFeatureAttributesA( package, "One", INSTALLFEATUREATTRIBUTE_FAVORSOURCE );
@@ -13572,7 +13630,7 @@ static void test_MsiSetFeatureAttributes(void)
     ok(attrs == INSTALLFEATUREATTRIBUTE_FAVORSOURCE,
        "expected INSTALLFEATUREATTRIBUTE_FAVORSOURCE, got 0x%08x\n", attrs);
 
-    r = MsiDoAction( package, "CostFinalize" );
+    r = MsiDoActionA( package, "CostFinalize" );
     ok(r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r);
 
     r = MsiSetFeatureAttributesA( package, "One", INSTALLFEATUREATTRIBUTE_FAVORLOCAL );
@@ -13600,7 +13658,7 @@ static void test_MsiGetFeatureInfo(void)
     strcat( path, "\\" );
     strcat( path, msifile );
 
-    r = MsiOpenPackage( path, &package );
+    r = MsiOpenPackageA( path, &package );
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
@@ -13745,7 +13803,7 @@ static void test_MsiSetExternalUI(void)
 
 static void test_lastusedsource(void)
 {
-    static char prodcode[] = "{38847338-1BBC-4104-81AC-2FAAC7ECDDCD}";
+    static const char prodcode[] = "{38847338-1BBC-4104-81AC-2FAAC7ECDDCD}";
     char value[MAX_PATH], path[MAX_PATH];
     DWORD size;
     UINT r;
@@ -13759,7 +13817,7 @@ static void test_lastusedsource(void)
     CreateDirectoryA("msitest", NULL);
     create_file("maximus", "maximus", 500);
     create_cab_file("test1.cab", MEDIA_SIZE, "maximus\0");
-    DeleteFile("maximus");
+    DeleteFileA("maximus");
 
     create_database("msifile0.msi", lus0_tables, sizeof(lus0_tables) / sizeof(msi_table));
     create_database("msifile1.msi", lus1_tables, sizeof(lus1_tables) / sizeof(msi_table));
@@ -13772,7 +13830,7 @@ static void test_lastusedsource(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA, value, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT, "expected ERROR_UNKNOWN_PRODUCT, got %u\n", r);
     ok(!lstrcmpA(value, "aaa"), "expected \"aaa\", got \"%s\"\n", value);
 
@@ -13790,7 +13848,7 @@ static void test_lastusedsource(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA, value, &size);
     ok(r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r);
     ok(!lstrcmpA(value, path), "expected \"%s\", got \"%s\"\n", path, value);
     ok(size == lstrlenA(path), "expected %d, got %d\n", lstrlenA(path), size);
@@ -13803,7 +13861,7 @@ static void test_lastusedsource(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA, value, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT, "expected ERROR_UNKNOWN_PRODUCT, got %u\n", r);
     ok(!lstrcmpA(value, "aaa"), "expected \"aaa\", got \"%s\"\n", value);
 
@@ -13816,7 +13874,7 @@ static void test_lastusedsource(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA, value, &size);
     ok(r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r);
     ok(!lstrcmpA(value, path), "expected \"%s\", got \"%s\"\n", path, value);
     ok(size == lstrlenA(path), "expected %d, got %d\n", lstrlenA(path), size);
@@ -13827,7 +13885,7 @@ static void test_lastusedsource(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA, value, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT, "expected ERROR_UNKNOWN_PRODUCT, got %u\n", r);
     ok(!lstrcmpA(value, "aaa"), "expected \"aaa\", got \"%s\"\n", value);
 
@@ -13841,7 +13899,7 @@ static void test_lastusedsource(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA, value, &size);
     ok(r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r);
     ok(!lstrcmpA(value, path), "expected \"%s\", got \"%s\"\n", path, value);
     ok(size == lstrlenA(path), "expected %d, got %d\n", lstrlenA(path), size);
@@ -13852,17 +13910,17 @@ static void test_lastusedsource(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE, value, &size);
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA, value, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT, "expected ERROR_UNKNOWN_PRODUCT, got %u\n", r);
     ok(!lstrcmpA(value, "aaa"), "expected \"aaa\", got \"%s\"\n", value);
 
 error:
     delete_cab_files();
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
-    DeleteFile("msifile0.msi");
-    DeleteFile("msifile1.msi");
-    DeleteFile("msifile2.msi");
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
+    DeleteFileA("msifile0.msi");
+    DeleteFileA("msifile1.msi");
+    DeleteFileA("msifile2.msi");
 }
 
 static void test_setpropertyfolder(void)
@@ -13909,9 +13967,9 @@ static void test_setpropertyfolder(void)
     }
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest");
 }
 
 static void test_sourcedir_props(void)
@@ -13974,7 +14032,7 @@ static void test_sourcedir_props(void)
 
     DeleteFileA("msitest\\sourcedir.txt");
     delete_test_files();
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_concurrentinstall(void)
@@ -14005,7 +14063,7 @@ static void test_concurrentinstall(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(path);
+        DeleteFileA(path);
         goto error;
     }
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
@@ -14018,14 +14076,14 @@ static void test_concurrentinstall(void)
                              INSTALLSTATE_ABSENT);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
-    DeleteFile(path);
+    DeleteFileA(path);
 
 error:
-    DeleteFile(msifile);
-    DeleteFile("msitest\\msitest\\augustus");
-    DeleteFile("msitest\\maximus");
-    RemoveDirectory("msitest\\msitest");
-    RemoveDirectory("msitest");
+    DeleteFileA(msifile);
+    DeleteFileA("msitest\\msitest\\augustus");
+    DeleteFileA("msitest\\maximus");
+    RemoveDirectoryA("msitest\\msitest");
+    RemoveDirectoryA("msitest");
 }
 
 static void test_command_line_parsing(void)
@@ -14184,7 +14242,7 @@ static void test_command_line_parsing(void)
     r = MsiInstallProductA(msifile, cmd);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     delete_test_files();
 }
 
@@ -14199,7 +14257,7 @@ START_TEST(msi)
         pIsWow64Process(GetCurrentProcess(), &is_wow64);
 
     GetCurrentDirectoryA(MAX_PATH, prev_path);
-    GetTempPath(MAX_PATH, temp_path);
+    GetTempPathA(MAX_PATH, temp_path);
     SetCurrentDirectoryA(temp_path);
 
     lstrcpyA(CURR_DIR, temp_path);
index 13a07e6..d5c37ea 100644 (file)
 
 static BOOL is_wow64;
 static const char msifile[] = "winetest-package.msi";
+static const WCHAR msifileW[] =
+    {'w','i','n','e','t','e','s','t','-','p','a','c','k','a','g','e','.','m','s','i',0};
 static char CURR_DIR[MAX_PATH];
 
 static UINT (WINAPI *pMsiApplyMultiplePatchesA)(LPCSTR, LPCSTR, LPCSTR);
 static INSTALLSTATE (WINAPI *pMsiGetComponentPathExA)(LPCSTR, LPCSTR, LPCSTR, MSIINSTALLCONTEXT, LPSTR, LPDWORD);
 static HRESULT (WINAPI *pSHGetFolderPathA)(HWND, int, HANDLE, DWORD, LPSTR);
 
+static BOOL (WINAPI *pCheckTokenMembership)(HANDLE,PSID,PBOOL);
 static BOOL (WINAPI *pConvertSidToStringSidA)(PSID, LPSTR*);
 static BOOL (WINAPI *pOpenProcessToken)( HANDLE, DWORD, PHANDLE );
 static LONG (WINAPI *pRegDeleteKeyExA)(HKEY, LPCSTR, REGSAM, DWORD);
@@ -66,6 +69,7 @@ static void init_functionpointers(void)
     GET_PROC(hmsi, MsiGetComponentPathExA);
     GET_PROC(hshell32, SHGetFolderPathA);
 
+    GET_PROC(hadvapi32, CheckTokenMembership);
     GET_PROC(hadvapi32, ConvertSidToStringSidA);
     GET_PROC(hadvapi32, OpenProcessToken);
     GET_PROC(hadvapi32, RegDeleteKeyExA)
@@ -83,9 +87,38 @@ static void init_functionpointers(void)
 
 static BOOL is_process_limited(void)
 {
+    SID_IDENTIFIER_AUTHORITY NtAuthority = {SECURITY_NT_AUTHORITY};
+    PSID Group;
+    BOOL IsInGroup;
     HANDLE token;
 
-    if (!pOpenProcessToken) return FALSE;
+    if (!pCheckTokenMembership || !pOpenProcessToken) return FALSE;
+
+    if (!AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID,
+                                  DOMAIN_ALIAS_RID_ADMINS,
+                                  0, 0, 0, 0, 0, 0, &Group) ||
+        !pCheckTokenMembership(NULL, Group, &IsInGroup))
+    {
+        trace("Could not check if the current user is an administrator\n");
+        return FALSE;
+    }
+    if (!IsInGroup)
+    {
+        if (!AllocateAndInitializeSid(&NtAuthority, 2,
+                                      SECURITY_BUILTIN_DOMAIN_RID,
+                                      DOMAIN_ALIAS_RID_POWER_USERS,
+                                      0, 0, 0, 0, 0, 0, &Group) ||
+            !pCheckTokenMembership(NULL, Group, &IsInGroup))
+        {
+            trace("Could not check if the current user is a power user\n");
+            return FALSE;
+        }
+        if (!IsInGroup)
+        {
+            /* Only administrators and power users can be powerful */
+            return TRUE;
+        }
+    }
 
     if (pOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token))
     {
@@ -377,7 +410,7 @@ static UINT do_query(MSIHANDLE hdb, const char *query, MSIHANDLE *phrec)
     UINT r, ret;
 
     /* open a select query */
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     if (r != ERROR_SUCCESS)
         return r;
     r = MsiViewExecute(hview, 0);
@@ -398,7 +431,7 @@ static UINT run_query( MSIHANDLE hdb, const char *query )
     MSIHANDLE hview = 0;
     UINT r;
 
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     if( r != ERROR_SUCCESS )
         return r;
 
@@ -710,33 +743,33 @@ static UINT set_summary_info(MSIHANDLE hdb)
     MSIHANDLE suminfo;
 
     /* build summary info */
-    res = MsiGetSummaryInformation(hdb, NULL, 7, &suminfo);
+    res = MsiGetSummaryInformationA(hdb, NULL, 7, &suminfo);
     ok( res == ERROR_SUCCESS , "Failed to open summaryinfo\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,2, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,2, VT_LPSTR, 0,NULL,
                         "Installation Database");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,3, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,3, VT_LPSTR, 0,NULL,
                         "Installation Database");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,4, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,4, VT_LPSTR, 0,NULL,
                         "Wine Hackers");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,7, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,7, VT_LPSTR, 0,NULL,
                     ";1033");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo,9, VT_LPSTR, 0,NULL,
+    res = MsiSummaryInfoSetPropertyA(suminfo,9, VT_LPSTR, 0,NULL,
                     "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}");
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo, 14, VT_I4, 100, NULL, NULL);
+    res = MsiSummaryInfoSetPropertyA(suminfo, 14, VT_I4, 100, NULL, NULL);
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
-    res = MsiSummaryInfoSetProperty(suminfo, 15, VT_I4, 0, NULL, NULL);
+    res = MsiSummaryInfoSetPropertyA(suminfo, 15, VT_I4, 0, NULL, NULL);
     ok( res == ERROR_SUCCESS , "Failed to set summary info\n" );
 
     res = MsiSummaryInfoPersist(suminfo);
@@ -754,10 +787,10 @@ static MSIHANDLE create_package_db(void)
     MSIHANDLE hdb = 0;
     UINT res;
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     /* create an empty database */
-    res = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb );
+    res = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb );
     ok( res == ERROR_SUCCESS , "Failed to create database %u\n", res );
     if( res != ERROR_SUCCESS )
         return hdb;
@@ -786,7 +819,7 @@ static UINT package_from_db(MSIHANDLE hdb, MSIHANDLE *handle)
     MSIHANDLE hPackage;
 
     sprintf(szPackage, "#%u", hdb);
-    res = MsiOpenPackage(szPackage, &hPackage);
+    res = MsiOpenPackageA(szPackage, &hPackage);
     if (res != ERROR_SUCCESS)
     {
         MsiCloseHandle(hdb);
@@ -841,13 +874,13 @@ static BOOL create_file_with_version(const CHAR *name, LONG ms, LONG ls)
     HANDLE resource;
     BOOL ret = FALSE;
 
-    GetSystemDirectory(path, MAX_PATH);
+    GetSystemDirectoryA(path, MAX_PATH);
     /* Some dlls can't be updated on Vista/W2K8 */
     lstrcatA(path, "\\version.dll");
 
     CopyFileA(path, name, FALSE);
 
-    size = GetFileVersionInfoSize(path, &handle);
+    size = GetFileVersionInfoSizeA(path, &handle);
     buffer = HeapAlloc(GetProcessHeap(), 0, size);
 
     GetFileVersionInfoA(path, 0, size, buffer);
@@ -861,15 +894,15 @@ static BOOL create_file_with_version(const CHAR *name, LONG ms, LONG ls)
     pFixedInfo->dwProductVersionMS = ms;
     pFixedInfo->dwProductVersionLS = ls;
 
-    resource = BeginUpdateResource(name, FALSE);
+    resource = BeginUpdateResourceA(name, FALSE);
     if (!resource)
         goto done;
 
-    if (!UpdateResource(resource, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO),
-                   MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), buffer, size))
+    if (!UpdateResourceA(resource, (LPCSTR)RT_VERSION, (LPCSTR)MAKEINTRESOURCE(VS_VERSION_INFO),
+                         MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), buffer, size))
         goto done;
 
-    if (!EndUpdateResource(resource, FALSE))
+    if (!EndUpdateResourceA(resource, FALSE))
         goto done;
 
     ret = TRUE;
@@ -909,14 +942,14 @@ static void test_createpackage(void)
     if (res == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( res == ERROR_SUCCESS, " Failed to create package %u\n", res );
 
     res = MsiCloseHandle( hPackage);
     ok( res == ERROR_SUCCESS , "Failed to close package\n" );
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_doaction( void )
@@ -924,29 +957,29 @@ static void test_doaction( void )
     MSIHANDLE hpkg;
     UINT r;
 
-    r = MsiDoAction( -1, NULL );
+    r = MsiDoActionA( -1, NULL );
     ok( r == ERROR_INVALID_PARAMETER, "wrong return val\n");
 
     r = package_from_db(create_package_db(), &hpkg);
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r);
 
-    r = MsiDoAction(hpkg, NULL);
+    r = MsiDoActionA(hpkg, NULL);
     ok( r == ERROR_INVALID_PARAMETER, "wrong return val\n");
 
-    r = MsiDoAction(0, "boo");
+    r = MsiDoActionA(0, "boo");
     ok( r == ERROR_INVALID_HANDLE, "wrong return val\n");
 
-    r = MsiDoAction(hpkg, "boo");
+    r = MsiDoActionA(hpkg, "boo");
     ok( r == ERROR_FUNCTION_NOT_CALLED, "wrong return val\n");
 
     MsiCloseHandle( hpkg );
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_gettargetpath_bad(void)
@@ -963,31 +996,31 @@ static void test_gettargetpath_bad(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r);
 
-    r = MsiGetTargetPath( 0, NULL, NULL, NULL );
+    r = MsiGetTargetPathA( 0, NULL, NULL, NULL );
     ok( r == ERROR_INVALID_PARAMETER, "wrong return val\n");
 
-    r = MsiGetTargetPath( 0, NULL, NULL, &sz );
+    r = MsiGetTargetPathA( 0, NULL, NULL, &sz );
     ok( r == ERROR_INVALID_PARAMETER, "wrong return val\n");
 
-    r = MsiGetTargetPath( 0, "boo", NULL, NULL );
+    r = MsiGetTargetPathA( 0, "boo", NULL, NULL );
     ok( r == ERROR_INVALID_HANDLE, "wrong return val\n");
 
-    r = MsiGetTargetPath( 0, "boo", NULL, NULL );
+    r = MsiGetTargetPathA( 0, "boo", NULL, NULL );
     ok( r == ERROR_INVALID_HANDLE, "wrong return val\n");
 
-    r = MsiGetTargetPath( hpkg, "boo", NULL, NULL );
+    r = MsiGetTargetPathA( hpkg, "boo", NULL, NULL );
     ok( r == ERROR_DIRECTORY, "wrong return val\n");
 
-    r = MsiGetTargetPath( hpkg, "boo", buffer, NULL );
+    r = MsiGetTargetPathA( hpkg, "boo", buffer, NULL );
     ok( r == ERROR_DIRECTORY, "wrong return val\n");
 
     sz = 0;
-    r = MsiGetTargetPath( hpkg, "", buffer, &sz );
+    r = MsiGetTargetPathA( hpkg, "", buffer, &sz );
     ok( r == ERROR_DIRECTORY, "wrong return val\n");
 
     r = MsiGetTargetPathW( 0, NULL, NULL, NULL );
@@ -1013,7 +1046,7 @@ static void test_gettargetpath_bad(void)
     ok( r == ERROR_DIRECTORY, "wrong return val\n");
 
     MsiCloseHandle( hpkg );
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void query_file_path(MSIHANDLE hpkg, LPCSTR file, LPSTR buff)
@@ -1025,11 +1058,11 @@ static void query_file_path(MSIHANDLE hpkg, LPCSTR file, LPSTR buff)
     rec = MsiCreateRecord( 1 );
     ok(rec, "MsiCreate record failed\n");
 
-    r = MsiRecordSetString( rec, 0, file );
+    r = MsiRecordSetStringA( rec, 0, file );
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r );
 
     size = MAX_PATH;
-    r = MsiFormatRecord( hpkg, rec, buff, &size );
+    r = MsiFormatRecordA( hpkg, rec, buff, &size );
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r );
 
     MsiCloseHandle( rec );
@@ -1089,129 +1122,129 @@ static void test_settargetpath(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r);
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction( hpkg, "CostInitialize");
+    r = MsiDoActionA( hpkg, "CostInitialize");
     ok( r == ERROR_SUCCESS, "cost init failed\n");
 
-    r = MsiDoAction( hpkg, "FileCost");
+    r = MsiDoActionA( hpkg, "FileCost");
     ok( r == ERROR_SUCCESS, "file cost failed\n");
 
-    r = MsiDoAction( hpkg, "CostFinalize");
+    r = MsiDoActionA( hpkg, "CostFinalize");
     ok( r == ERROR_SUCCESS, "cost finalize failed\n");
 
-    r = MsiSetTargetPath( 0, NULL, NULL );
+    r = MsiSetTargetPathA( 0, NULL, NULL );
     ok( r == ERROR_INVALID_PARAMETER, "wrong return val\n");
 
-    r = MsiSetTargetPath( 0, "boo", "C:\\bogusx" );
+    r = MsiSetTargetPathA( 0, "boo", "C:\\bogusx" );
     ok( r == ERROR_INVALID_HANDLE, "wrong return val\n");
 
-    r = MsiSetTargetPath( hpkg, "boo", NULL );
+    r = MsiSetTargetPathA( hpkg, "boo", NULL );
     ok( r == ERROR_INVALID_PARAMETER, "wrong return val\n");
 
-    r = MsiSetTargetPath( hpkg, "boo", "c:\\bogusx" );
+    r = MsiSetTargetPathA( hpkg, "boo", "c:\\bogusx" );
     ok( r == ERROR_DIRECTORY, "wrong return val\n");
 
     sz = sizeof tempdir - 1;
-    r = MsiGetTargetPath( hpkg, "TARGETDIR", tempdir, &sz );
+    r = MsiGetTargetPathA( hpkg, "TARGETDIR", tempdir, &sz );
     sprintf( file, "%srootfile.txt", tempdir );
     buffer[0] = 0;
     query_file_path( hpkg, "[#RootFile]", buffer );
     ok( r == ERROR_SUCCESS, "failed to get target path: %d\n", r);
-    ok( !lstrcmp(buffer, file), "Expected %s, got %s\n", file, buffer );
+    ok( !lstrcmpA(buffer, file), "Expected %s, got %s\n", file, buffer );
 
-    GetTempFileName( tempdir, "_wt", 0, buffer );
+    GetTempFileNameA( tempdir, "_wt", 0, buffer );
     sprintf( tempdir, "%s\\subdir", buffer );
 
-    r = MsiSetTargetPath( hpkg, "TARGETDIR", buffer );
+    r = MsiSetTargetPathA( hpkg, "TARGETDIR", buffer );
     ok( r == ERROR_SUCCESS || r == ERROR_DIRECTORY,
         "MsiSetTargetPath on file returned %d\n", r );
 
-    r = MsiSetTargetPath( hpkg, "TARGETDIR", tempdir );
+    r = MsiSetTargetPathA( hpkg, "TARGETDIR", tempdir );
     ok( r == ERROR_SUCCESS || r == ERROR_DIRECTORY,
         "MsiSetTargetPath on 'subdir' of file returned %d\n", r );
 
-    DeleteFile( buffer );
+    DeleteFileA( buffer );
 
-    r = MsiSetTargetPath( hpkg, "TARGETDIR", buffer );
+    r = MsiSetTargetPathA( hpkg, "TARGETDIR", buffer );
     ok( r == ERROR_SUCCESS, "MsiSetTargetPath returned %d\n", r );
 
-    r = GetFileAttributes( buffer );
+    r = GetFileAttributesA( buffer );
     ok ( r == INVALID_FILE_ATTRIBUTES, "file/directory exists after MsiSetTargetPath. Attributes: %08X\n", r );
 
-    r = MsiSetTargetPath( hpkg, "TARGETDIR", tempdir );
+    r = MsiSetTargetPathA( hpkg, "TARGETDIR", tempdir );
     ok( r == ERROR_SUCCESS, "MsiSetTargetPath on subsubdir returned %d\n", r );
 
     buffer[0] = 0;
     sz = sizeof buffer - 1;
-    lstrcat( tempdir, "\\" );
-    r = MsiGetTargetPath( hpkg, "TARGETDIR", buffer, &sz );
+    lstrcatA( tempdir, "\\" );
+    r = MsiGetTargetPathA( hpkg, "TARGETDIR", buffer, &sz );
     ok( r == ERROR_SUCCESS, "failed to get target path: %d\n", r);
-    ok( !lstrcmp(buffer, tempdir), "Expected %s, got %s\n", tempdir, buffer);
+    ok( !lstrcmpA(buffer, tempdir), "Expected %s, got %s\n", tempdir, buffer);
 
     sprintf( file, "%srootfile.txt", tempdir );
     query_file_path( hpkg, "[#RootFile]", buffer );
-    ok( !lstrcmp(buffer, file), "Expected %s, got %s\n", file, buffer);
+    ok( !lstrcmpA(buffer, file), "Expected %s, got %s\n", file, buffer);
 
     buffer[0] = 0;
     sz = sizeof(buffer);
     r = MsiGetPropertyA( hpkg, "TestParent", buffer, &sz );
     ok( r == ERROR_SUCCESS, "MsiGetProperty returned %u\n", r );
     lstrcatA( tempdir, "TestParent\\" );
-    ok( !lstrcmpi(buffer, tempdir), "Expected \"%s\", got \"%s\"\n", tempdir, buffer );
+    ok( !lstrcmpiA(buffer, tempdir), "Expected \"%s\", got \"%s\"\n", tempdir, buffer );
 
-    r = MsiSetTargetPath( hpkg, "TestParent", "C:\\one\\two" );
+    r = MsiSetTargetPathA( hpkg, "TestParent", "C:\\one\\two" );
     ok( r == ERROR_SUCCESS, "MsiSetTargetPath returned %d\n", r );
 
     buffer[0] = 0;
     sz = sizeof(buffer);
     r = MsiGetPropertyA( hpkg, "TestParent", buffer, &sz );
     ok( r == ERROR_SUCCESS, "MsiGetProperty returned %u\n", r );
-    ok( lstrcmpi(buffer, "C:\\one\\two\\TestDir\\"),
+    ok( lstrcmpiA(buffer, "C:\\one\\two\\TestDir\\"),
         "Expected \"C:\\one\\two\\TestDir\\\", got \"%s\"\n", buffer );
 
     buffer[0] = 0;
     query_file_path( hpkg, "[#TestFile]", buffer );
-    ok( !lstrcmpi(buffer, "C:\\one\\two\\TestDir\\testfile.txt"),
+    ok( !lstrcmpiA(buffer, "C:\\one\\two\\TestDir\\testfile.txt"),
         "Expected C:\\one\\two\\TestDir\\testfile.txt, got %s\n", buffer );
 
     buffer[0] = 0;
     sz = sizeof buffer - 1;
-    r = MsiGetTargetPath( hpkg, "TestParent", buffer, &sz );
+    r = MsiGetTargetPathA( hpkg, "TestParent", buffer, &sz );
     ok( r == ERROR_SUCCESS, "failed to get target path: %d\n", r);
-    ok( !lstrcmpi(buffer, "C:\\one\\two\\"), "Expected C:\\one\\two\\, got %s\n", buffer);
+    ok( !lstrcmpiA(buffer, "C:\\one\\two\\"), "Expected C:\\one\\two\\, got %s\n", buffer);
 
-    r = MsiSetTargetPath( hpkg, "TestParent", "C:\\one\\two\\three" );
+    r = MsiSetTargetPathA( hpkg, "TestParent", "C:\\one\\two\\three" );
     ok( r == ERROR_SUCCESS, "MsiSetTargetPath returned %d\n", r );
 
     buffer[0] = 0;
     sz = sizeof buffer - 1;
-    r = MsiGetTargetPath( hpkg, "TestParent", buffer, &sz );
+    r = MsiGetTargetPathA( hpkg, "TestParent", buffer, &sz );
     ok( r == ERROR_SUCCESS, "failed to get target path: %d\n", r);
-    ok( !lstrcmpi(buffer, "C:\\one\\two\\three\\"), "Expected C:\\one\\two\\three\\, got %s\n", buffer);
+    ok( !lstrcmpiA(buffer, "C:\\one\\two\\three\\"), "Expected C:\\one\\two\\three\\, got %s\n", buffer);
 
-    r = MsiSetTargetPath( hpkg, "TestParent", "C:\\\\one\\\\two  " );
+    r = MsiSetTargetPathA( hpkg, "TestParent", "C:\\\\one\\\\two  " );
     ok( r == ERROR_SUCCESS, "MsiSetTargetPath returned %d\n", r );
 
     buffer[0] = 0;
     sz = sizeof buffer - 1;
-    r = MsiGetTargetPath( hpkg, "TestParent", buffer, &sz );
+    r = MsiGetTargetPathA( hpkg, "TestParent", buffer, &sz );
     ok( r == ERROR_SUCCESS, "failed to get target path: %d\n", r);
-    ok( !lstrcmpi(buffer, "C:\\one\\two\\"), "Expected \"C:\\one\\two\\\", got %s\n", buffer);
+    ok( !lstrcmpiA(buffer, "C:\\one\\two\\"), "Expected \"C:\\one\\two\\\", got %s\n", buffer);
 
-    r = MsiSetTargetPath( hpkg, "TestParent", "C:\\\\ Program Files \\\\ " );
+    r = MsiSetTargetPathA( hpkg, "TestParent", "C:\\\\ Program Files \\\\ " );
     ok( r == ERROR_SUCCESS, "MsiSetTargetPath returned %d\n", r );
 
     buffer[0] = 0;
     sz = sizeof buffer - 1;
-    r = MsiGetTargetPath( hpkg, "TestParent", buffer, &sz );
+    r = MsiGetTargetPathA( hpkg, "TestParent", buffer, &sz );
     ok( r == ERROR_SUCCESS, "failed to get target path: %d\n", r);
-    ok( !lstrcmpi(buffer, "C:\\Program Files\\"), "Expected \"C:\\Program Files\\\", got %s\n", buffer);
+    ok( !lstrcmpiA(buffer, "C:\\Program Files\\"), "Expected \"C:\\Program Files\\\", got %s\n", buffer);
 
     MsiCloseHandle( hpkg );
 }
@@ -1229,716 +1262,716 @@ static void test_condition(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r);
 
-    r = MsiEvaluateCondition(0, NULL);
+    r = MsiEvaluateConditionA(0, NULL);
     ok( r == MSICONDITION_ERROR, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, NULL);
+    r = MsiEvaluateConditionA(hpkg, NULL);
     ok( r == MSICONDITION_NONE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "");
+    r = MsiEvaluateConditionA(hpkg, "");
     ok( r == MSICONDITION_NONE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1");
+    r = MsiEvaluateConditionA(hpkg, "1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0");
+    r = MsiEvaluateConditionA(hpkg, "0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "-1");
+    r = MsiEvaluateConditionA(hpkg, "-1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 = 0");
+    r = MsiEvaluateConditionA(hpkg, "0 = 0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 <> 0");
+    r = MsiEvaluateConditionA(hpkg, "0 <> 0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 = 1");
+    r = MsiEvaluateConditionA(hpkg, "0 = 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 > 1");
+    r = MsiEvaluateConditionA(hpkg, "0 > 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 ~> 1");
+    r = MsiEvaluateConditionA(hpkg, "0 ~> 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 > 1");
+    r = MsiEvaluateConditionA(hpkg, "1 > 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 ~> 1");
+    r = MsiEvaluateConditionA(hpkg, "1 ~> 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 >= 1");
+    r = MsiEvaluateConditionA(hpkg, "0 >= 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 ~>= 1");
+    r = MsiEvaluateConditionA(hpkg, "0 ~>= 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 >= 1");
+    r = MsiEvaluateConditionA(hpkg, "1 >= 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 ~>= 1");
+    r = MsiEvaluateConditionA(hpkg, "1 ~>= 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 < 1");
+    r = MsiEvaluateConditionA(hpkg, "0 < 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 ~< 1");
+    r = MsiEvaluateConditionA(hpkg, "0 ~< 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 < 1");
+    r = MsiEvaluateConditionA(hpkg, "1 < 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 ~< 1");
+    r = MsiEvaluateConditionA(hpkg, "1 ~< 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 <= 1");
+    r = MsiEvaluateConditionA(hpkg, "0 <= 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 ~<= 1");
+    r = MsiEvaluateConditionA(hpkg, "0 ~<= 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 <= 1");
+    r = MsiEvaluateConditionA(hpkg, "1 <= 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 ~<= 1");
+    r = MsiEvaluateConditionA(hpkg, "1 ~<= 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 >=");
+    r = MsiEvaluateConditionA(hpkg, "0 >=");
     ok( r == MSICONDITION_ERROR, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " ");
+    r = MsiEvaluateConditionA(hpkg, " ");
     ok( r == MSICONDITION_NONE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "LicView <> \"1\"");
+    r = MsiEvaluateConditionA(hpkg, "LicView <> \"1\"");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "LicView <> \"0\"");
+    r = MsiEvaluateConditionA(hpkg, "LicView <> \"0\"");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "LicView <> LicView");
+    r = MsiEvaluateConditionA(hpkg, "LicView <> LicView");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "not 0");
+    r = MsiEvaluateConditionA(hpkg, "not 0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "not LicView");
+    r = MsiEvaluateConditionA(hpkg, "not LicView");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "\"Testing\" ~<< \"Testing\"");
+    r = MsiEvaluateConditionA(hpkg, "\"Testing\" ~<< \"Testing\"");
     ok (r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "LicView ~<< \"Testing\"");
+    r = MsiEvaluateConditionA(hpkg, "LicView ~<< \"Testing\"");
     ok (r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "Not LicView ~<< \"Testing\"");
+    r = MsiEvaluateConditionA(hpkg, "Not LicView ~<< \"Testing\"");
     ok (r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "not \"A\"");
+    r = MsiEvaluateConditionA(hpkg, "not \"A\"");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "~not \"A\"");
+    r = MsiEvaluateConditionA(hpkg, "~not \"A\"");
     ok( r == MSICONDITION_ERROR, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "\"0\"");
+    r = MsiEvaluateConditionA(hpkg, "\"0\"");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 and 2");
+    r = MsiEvaluateConditionA(hpkg, "1 and 2");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "not 0 and 3");
+    r = MsiEvaluateConditionA(hpkg, "not 0 and 3");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "not 0 and 0");
+    r = MsiEvaluateConditionA(hpkg, "not 0 and 0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "not 0 or 1");
+    r = MsiEvaluateConditionA(hpkg, "not 0 or 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "(0)");
+    r = MsiEvaluateConditionA(hpkg, "(0)");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "(((((1))))))");
+    r = MsiEvaluateConditionA(hpkg, "(((((1))))))");
     ok( r == MSICONDITION_ERROR, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "(((((1)))))");
+    r = MsiEvaluateConditionA(hpkg, "(((((1)))))");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " \"A\" < \"B\" ");
+    r = MsiEvaluateConditionA(hpkg, " \"A\" < \"B\" ");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " \"A\" > \"B\" ");
+    r = MsiEvaluateConditionA(hpkg, " \"A\" > \"B\" ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " \"1\" > \"12\" ");
+    r = MsiEvaluateConditionA(hpkg, " \"1\" > \"12\" ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " \"100\" < \"21\" ");
+    r = MsiEvaluateConditionA(hpkg, " \"100\" < \"21\" ");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 < > 0");
+    r = MsiEvaluateConditionA(hpkg, "0 < > 0");
     ok( r == MSICONDITION_ERROR, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "(1<<1) == 2");
+    r = MsiEvaluateConditionA(hpkg, "(1<<1) == 2");
     ok( r == MSICONDITION_ERROR, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " \"A\" = \"a\" ");
+    r = MsiEvaluateConditionA(hpkg, " \"A\" = \"a\" ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " \"A\" ~ = \"a\" ");
+    r = MsiEvaluateConditionA(hpkg, " \"A\" ~ = \"a\" ");
     ok( r == MSICONDITION_ERROR, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " \"A\" ~= \"a\" ");
+    r = MsiEvaluateConditionA(hpkg, " \"A\" ~= \"a\" ");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " \"A\" ~= 1 ");
+    r = MsiEvaluateConditionA(hpkg, " \"A\" ~= 1 ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " \"A\" = 1 ");
+    r = MsiEvaluateConditionA(hpkg, " \"A\" = 1 ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " 1 ~= 1 ");
+    r = MsiEvaluateConditionA(hpkg, " 1 ~= 1 ");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " 1 ~= \"1\" ");
+    r = MsiEvaluateConditionA(hpkg, " 1 ~= \"1\" ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " 1 = \"1\" ");
+    r = MsiEvaluateConditionA(hpkg, " 1 = \"1\" ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " 0 = \"1\" ");
+    r = MsiEvaluateConditionA(hpkg, " 0 = \"1\" ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " 0 < \"100\" ");
+    r = MsiEvaluateConditionA(hpkg, " 0 < \"100\" ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, " 100 > \"0\" ");
+    r = MsiEvaluateConditionA(hpkg, " 100 > \"0\" ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 XOR 1");
+    r = MsiEvaluateConditionA(hpkg, "1 XOR 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 IMP 1");
+    r = MsiEvaluateConditionA(hpkg, "1 IMP 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 IMP 0");
+    r = MsiEvaluateConditionA(hpkg, "1 IMP 0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 IMP 0");
+    r = MsiEvaluateConditionA(hpkg, "0 IMP 0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 EQV 0");
+    r = MsiEvaluateConditionA(hpkg, "0 EQV 0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 EQV 1");
+    r = MsiEvaluateConditionA(hpkg, "0 EQV 1");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 IMP 1 OR 0");
+    r = MsiEvaluateConditionA(hpkg, "1 IMP 1 OR 0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 IMPL 1");
+    r = MsiEvaluateConditionA(hpkg, "1 IMPL 1");
     ok( r == MSICONDITION_ERROR, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "\"ASFD\" >< \"S\" ");
+    r = MsiEvaluateConditionA(hpkg, "\"ASFD\" >< \"S\" ");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "\"ASFD\" ~>< \"s\" ");
+    r = MsiEvaluateConditionA(hpkg, "\"ASFD\" ~>< \"s\" ");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "\"ASFD\" ~>< \"\" ");
+    r = MsiEvaluateConditionA(hpkg, "\"ASFD\" ~>< \"\" ");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "\"ASFD\" ~>< \"sss\" ");
+    r = MsiEvaluateConditionA(hpkg, "\"ASFD\" ~>< \"sss\" ");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "mm", "5" );
+    MsiSetPropertyA(hpkg, "mm", "5" );
 
-    r = MsiEvaluateCondition(hpkg, "mm = 5");
+    r = MsiEvaluateConditionA(hpkg, "mm = 5");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "mm < 6");
+    r = MsiEvaluateConditionA(hpkg, "mm < 6");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "mm <= 5");
+    r = MsiEvaluateConditionA(hpkg, "mm <= 5");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "mm > 4");
+    r = MsiEvaluateConditionA(hpkg, "mm > 4");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "mm < 12");
+    r = MsiEvaluateConditionA(hpkg, "mm < 12");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "mm = \"5\"");
+    r = MsiEvaluateConditionA(hpkg, "mm = \"5\"");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 = \"\"");
+    r = MsiEvaluateConditionA(hpkg, "0 = \"\"");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 AND \"\"");
+    r = MsiEvaluateConditionA(hpkg, "0 AND \"\"");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 AND \"\"");
+    r = MsiEvaluateConditionA(hpkg, "1 AND \"\"");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "1 AND \"1\"");
+    r = MsiEvaluateConditionA(hpkg, "1 AND \"1\"");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "3 >< 1");
+    r = MsiEvaluateConditionA(hpkg, "3 >< 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "3 >< 4");
+    r = MsiEvaluateConditionA(hpkg, "3 >< 4");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "NOT 0 AND 0");
+    r = MsiEvaluateConditionA(hpkg, "NOT 0 AND 0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "NOT 0 AND 1");
+    r = MsiEvaluateConditionA(hpkg, "NOT 0 AND 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "NOT 1 OR 0");
+    r = MsiEvaluateConditionA(hpkg, "NOT 1 OR 0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 AND 1 OR 1");
+    r = MsiEvaluateConditionA(hpkg, "0 AND 1 OR 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "0 AND 0 OR 1");
+    r = MsiEvaluateConditionA(hpkg, "0 AND 0 OR 1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "NOT 0 AND 1 OR 0");
+    r = MsiEvaluateConditionA(hpkg, "NOT 0 AND 1 OR 0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "_1 = _1");
+    r = MsiEvaluateConditionA(hpkg, "_1 = _1");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "( 1 AND 1 ) = 2");
+    r = MsiEvaluateConditionA(hpkg, "( 1 AND 1 ) = 2");
     ok( r == MSICONDITION_ERROR, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "NOT ( 1 AND 1 )");
+    r = MsiEvaluateConditionA(hpkg, "NOT ( 1 AND 1 )");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "NOT A AND (BBBBBBBBBB=2 OR CCC=1) AND Ddddddddd");
+    r = MsiEvaluateConditionA(hpkg, "NOT A AND (BBBBBBBBBB=2 OR CCC=1) AND Ddddddddd");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "Installed<>\"\"");
+    r = MsiEvaluateConditionA(hpkg, "Installed<>\"\"");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "NOT 1 AND 0");
+    r = MsiEvaluateConditionA(hpkg, "NOT 1 AND 0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "bandalmael<>0");
+    r = MsiEvaluateConditionA(hpkg, "bandalmael<>0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "bandalmael<0");
+    r = MsiEvaluateConditionA(hpkg, "bandalmael<0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "bandalmael>0");
+    r = MsiEvaluateConditionA(hpkg, "bandalmael>0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "bandalmael>=0");
+    r = MsiEvaluateConditionA(hpkg, "bandalmael>=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "bandalmael<=0");
+    r = MsiEvaluateConditionA(hpkg, "bandalmael<=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    r = MsiEvaluateCondition(hpkg, "bandalmael~<>0");
+    r = MsiEvaluateConditionA(hpkg, "bandalmael~<>0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "0" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "0" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "asdf" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "asdf" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "0asdf" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "0asdf" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "0 " );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "0 " );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "-0" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "-0" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "0000000000000" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "0000000000000" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "--0" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "--0" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "0x00" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "0x00" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "-" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "-" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "+0" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "+0" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "bandalmael", "0.0" );
-    r = MsiEvaluateCondition(hpkg, "bandalmael=0");
+    MsiSetPropertyA(hpkg, "bandalmael", "0.0" );
+    r = MsiEvaluateConditionA(hpkg, "bandalmael=0");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
-    r = MsiEvaluateCondition(hpkg, "bandalmael<>0");
+    r = MsiEvaluateConditionA(hpkg, "bandalmael<>0");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hi");
-    MsiSetProperty(hpkg, "two", "hithere");
-    r = MsiEvaluateCondition(hpkg, "one >< two");
+    MsiSetPropertyA(hpkg, "one", "hi");
+    MsiSetPropertyA(hpkg, "two", "hithere");
+    r = MsiEvaluateConditionA(hpkg, "one >< two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hithere");
-    MsiSetProperty(hpkg, "two", "hi");
-    r = MsiEvaluateCondition(hpkg, "one >< two");
+    MsiSetPropertyA(hpkg, "one", "hithere");
+    MsiSetPropertyA(hpkg, "two", "hi");
+    r = MsiEvaluateConditionA(hpkg, "one >< two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hello");
-    MsiSetProperty(hpkg, "two", "hi");
-    r = MsiEvaluateCondition(hpkg, "one >< two");
+    MsiSetPropertyA(hpkg, "one", "hello");
+    MsiSetPropertyA(hpkg, "two", "hi");
+    r = MsiEvaluateConditionA(hpkg, "one >< two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hellohithere");
-    MsiSetProperty(hpkg, "two", "hi");
-    r = MsiEvaluateCondition(hpkg, "one >< two");
+    MsiSetPropertyA(hpkg, "one", "hellohithere");
+    MsiSetPropertyA(hpkg, "two", "hi");
+    r = MsiEvaluateConditionA(hpkg, "one >< two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "");
-    MsiSetProperty(hpkg, "two", "hi");
-    r = MsiEvaluateCondition(hpkg, "one >< two");
+    MsiSetPropertyA(hpkg, "one", "");
+    MsiSetPropertyA(hpkg, "two", "hi");
+    r = MsiEvaluateConditionA(hpkg, "one >< two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hi");
-    MsiSetProperty(hpkg, "two", "");
-    r = MsiEvaluateCondition(hpkg, "one >< two");
+    MsiSetPropertyA(hpkg, "one", "hi");
+    MsiSetPropertyA(hpkg, "two", "");
+    r = MsiEvaluateConditionA(hpkg, "one >< two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "");
-    MsiSetProperty(hpkg, "two", "");
-    r = MsiEvaluateCondition(hpkg, "one >< two");
+    MsiSetPropertyA(hpkg, "one", "");
+    MsiSetPropertyA(hpkg, "two", "");
+    r = MsiEvaluateConditionA(hpkg, "one >< two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "1234");
-    MsiSetProperty(hpkg, "two", "1");
-    r = MsiEvaluateCondition(hpkg, "one >< two");
+    MsiSetPropertyA(hpkg, "one", "1234");
+    MsiSetPropertyA(hpkg, "two", "1");
+    r = MsiEvaluateConditionA(hpkg, "one >< two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "one 1234");
-    MsiSetProperty(hpkg, "two", "1");
-    r = MsiEvaluateCondition(hpkg, "one >< two");
+    MsiSetPropertyA(hpkg, "one", "one 1234");
+    MsiSetPropertyA(hpkg, "two", "1");
+    r = MsiEvaluateConditionA(hpkg, "one >< two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hithere");
-    MsiSetProperty(hpkg, "two", "hi");
-    r = MsiEvaluateCondition(hpkg, "one << two");
+    MsiSetPropertyA(hpkg, "one", "hithere");
+    MsiSetPropertyA(hpkg, "two", "hi");
+    r = MsiEvaluateConditionA(hpkg, "one << two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hi");
-    MsiSetProperty(hpkg, "two", "hithere");
-    r = MsiEvaluateCondition(hpkg, "one << two");
+    MsiSetPropertyA(hpkg, "one", "hi");
+    MsiSetPropertyA(hpkg, "two", "hithere");
+    r = MsiEvaluateConditionA(hpkg, "one << two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hi");
-    MsiSetProperty(hpkg, "two", "hi");
-    r = MsiEvaluateCondition(hpkg, "one << two");
+    MsiSetPropertyA(hpkg, "one", "hi");
+    MsiSetPropertyA(hpkg, "two", "hi");
+    r = MsiEvaluateConditionA(hpkg, "one << two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "abcdhithere");
-    MsiSetProperty(hpkg, "two", "hi");
-    r = MsiEvaluateCondition(hpkg, "one << two");
+    MsiSetPropertyA(hpkg, "one", "abcdhithere");
+    MsiSetPropertyA(hpkg, "two", "hi");
+    r = MsiEvaluateConditionA(hpkg, "one << two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "");
-    MsiSetProperty(hpkg, "two", "hi");
-    r = MsiEvaluateCondition(hpkg, "one << two");
+    MsiSetPropertyA(hpkg, "one", "");
+    MsiSetPropertyA(hpkg, "two", "hi");
+    r = MsiEvaluateConditionA(hpkg, "one << two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hithere");
-    MsiSetProperty(hpkg, "two", "");
-    r = MsiEvaluateCondition(hpkg, "one << two");
+    MsiSetPropertyA(hpkg, "one", "hithere");
+    MsiSetPropertyA(hpkg, "two", "");
+    r = MsiEvaluateConditionA(hpkg, "one << two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "");
-    MsiSetProperty(hpkg, "two", "");
-    r = MsiEvaluateCondition(hpkg, "one << two");
+    MsiSetPropertyA(hpkg, "one", "");
+    MsiSetPropertyA(hpkg, "two", "");
+    r = MsiEvaluateConditionA(hpkg, "one << two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "1234");
-    MsiSetProperty(hpkg, "two", "1");
-    r = MsiEvaluateCondition(hpkg, "one << two");
+    MsiSetPropertyA(hpkg, "one", "1234");
+    MsiSetPropertyA(hpkg, "two", "1");
+    r = MsiEvaluateConditionA(hpkg, "one << two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "1234 one");
-    MsiSetProperty(hpkg, "two", "1");
-    r = MsiEvaluateCondition(hpkg, "one << two");
+    MsiSetPropertyA(hpkg, "one", "1234 one");
+    MsiSetPropertyA(hpkg, "two", "1");
+    r = MsiEvaluateConditionA(hpkg, "one << two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hithere");
-    MsiSetProperty(hpkg, "two", "there");
-    r = MsiEvaluateCondition(hpkg, "one >> two");
+    MsiSetPropertyA(hpkg, "one", "hithere");
+    MsiSetPropertyA(hpkg, "two", "there");
+    r = MsiEvaluateConditionA(hpkg, "one >> two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "hithere");
-    MsiSetProperty(hpkg, "two", "hi");
-    r = MsiEvaluateCondition(hpkg, "one >> two");
+    MsiSetPropertyA(hpkg, "one", "hithere");
+    MsiSetPropertyA(hpkg, "two", "hi");
+    r = MsiEvaluateConditionA(hpkg, "one >> two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "there");
-    MsiSetProperty(hpkg, "two", "hithere");
-    r = MsiEvaluateCondition(hpkg, "one >> two");
+    MsiSetPropertyA(hpkg, "one", "there");
+    MsiSetPropertyA(hpkg, "two", "hithere");
+    r = MsiEvaluateConditionA(hpkg, "one >> two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "there");
-    MsiSetProperty(hpkg, "two", "there");
-    r = MsiEvaluateCondition(hpkg, "one >> two");
+    MsiSetPropertyA(hpkg, "one", "there");
+    MsiSetPropertyA(hpkg, "two", "there");
+    r = MsiEvaluateConditionA(hpkg, "one >> two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "abcdhithere");
-    MsiSetProperty(hpkg, "two", "hi");
-    r = MsiEvaluateCondition(hpkg, "one >> two");
+    MsiSetPropertyA(hpkg, "one", "abcdhithere");
+    MsiSetPropertyA(hpkg, "two", "hi");
+    r = MsiEvaluateConditionA(hpkg, "one >> two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "");
-    MsiSetProperty(hpkg, "two", "there");
-    r = MsiEvaluateCondition(hpkg, "one >> two");
+    MsiSetPropertyA(hpkg, "one", "");
+    MsiSetPropertyA(hpkg, "two", "there");
+    r = MsiEvaluateConditionA(hpkg, "one >> two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "there");
-    MsiSetProperty(hpkg, "two", "");
-    r = MsiEvaluateCondition(hpkg, "one >> two");
+    MsiSetPropertyA(hpkg, "one", "there");
+    MsiSetPropertyA(hpkg, "two", "");
+    r = MsiEvaluateConditionA(hpkg, "one >> two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "");
-    MsiSetProperty(hpkg, "two", "");
-    r = MsiEvaluateCondition(hpkg, "one >> two");
+    MsiSetPropertyA(hpkg, "one", "");
+    MsiSetPropertyA(hpkg, "two", "");
+    r = MsiEvaluateConditionA(hpkg, "one >> two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "1234");
-    MsiSetProperty(hpkg, "two", "4");
-    r = MsiEvaluateCondition(hpkg, "one >> two");
+    MsiSetPropertyA(hpkg, "one", "1234");
+    MsiSetPropertyA(hpkg, "two", "4");
+    r = MsiEvaluateConditionA(hpkg, "one >> two");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "one", "one 1234");
-    MsiSetProperty(hpkg, "two", "4");
-    r = MsiEvaluateCondition(hpkg, "one >> two");
+    MsiSetPropertyA(hpkg, "one", "one 1234");
+    MsiSetPropertyA(hpkg, "two", "4");
+    r = MsiEvaluateConditionA(hpkg, "one >> two");
     ok( r == MSICONDITION_TRUE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "MsiNetAssemblySupport", NULL);  /* make sure it's empty */
+    MsiSetPropertyA(hpkg, "MsiNetAssemblySupport", NULL);  /* make sure it's empty */
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1.1.4322\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1.1.4322\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport > \"1.1.4322\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport > \"1.1.4322\"");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport >= \"1.1.4322\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport >= \"1.1.4322\"");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport <= \"1.1.4322\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport <= \"1.1.4322\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport <> \"1.1.4322\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport <> \"1.1.4322\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport ~< \"1.1.4322\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport ~< \"1.1.4322\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"abcd\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"abcd\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"a1.1.4322\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"a1.1.4322\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1.1.4322a\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1.1.4322a\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"0000001.1.4322\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"0000001.1.4322\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1.1.4322.1\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1.1.4322.1\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1.1.4322.1.1\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1.1.4322.1.1\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "\"2\" < \"1.1");
+    r = MsiEvaluateConditionA(hpkg, "\"2\" < \"1.1");
     ok( r == MSICONDITION_ERROR, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "\"2\" < \"1.1\"");
+    r = MsiEvaluateConditionA(hpkg, "\"2\" < \"1.1\"");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "\"2\" < \"12.1\"");
+    r = MsiEvaluateConditionA(hpkg, "\"2\" < \"12.1\"");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "\"02.1\" < \"2.11\"");
+    r = MsiEvaluateConditionA(hpkg, "\"02.1\" < \"2.11\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "\"02.1.1\" < \"2.1\"");
+    r = MsiEvaluateConditionA(hpkg, "\"02.1.1\" < \"2.1\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1.1\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1.1\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"0\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"0\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"-1\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"-1\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"a\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"a\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"!\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"!\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"!\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"!\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"/\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"/\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \" \"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \" \"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"azAZ_\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"azAZ_\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"a[a]\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"a[a]\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"a[a]a\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"a[a]a\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"[a]\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"[a]\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"[a]a\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"[a]a\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"{a}\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"{a}\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"{a\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"{a\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"[a\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"[a\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"a{\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"a{\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"a]\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"a]\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"A\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"A\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    MsiSetProperty(hpkg, "MsiNetAssemblySupport", "1.1.4322");
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1.1.4322\"");
+    MsiSetPropertyA(hpkg, "MsiNetAssemblySupport", "1.1.4322");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1.1.4322\"");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1.1.14322\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1.1.14322\"");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1.1.5\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1.1.5\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1.1\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1.1\"");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "MsiNetAssemblySupport < \"1\"");
+    r = MsiEvaluateConditionA(hpkg, "MsiNetAssemblySupport < \"1\"");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    MsiSetProperty(hpkg, "one", "1");
-    r = MsiEvaluateCondition(hpkg, "one < \"1\"");
+    MsiSetPropertyA(hpkg, "one", "1");
+    r = MsiEvaluateConditionA(hpkg, "one < \"1\"");
     ok( r == MSICONDITION_FALSE, "wrong return val\n");
 
-    MsiSetProperty(hpkg, "X", "5.0");
+    MsiSetPropertyA(hpkg, "X", "5.0");
 
-    r = MsiEvaluateCondition(hpkg, "X != \"\"");
+    r = MsiEvaluateConditionA(hpkg, "X != \"\"");
     ok( r == MSICONDITION_ERROR, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "X =\"5.0\"");
+    r = MsiEvaluateConditionA(hpkg, "X =\"5.0\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "X =\"5.1\"");
+    r = MsiEvaluateConditionA(hpkg, "X =\"5.1\"");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "X =\"6.0\"");
+    r = MsiEvaluateConditionA(hpkg, "X =\"6.0\"");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "X =\"5.0\" or X =\"5.1\" or X =\"6.0\"");
+    r = MsiEvaluateConditionA(hpkg, "X =\"5.0\" or X =\"5.1\" or X =\"6.0\"");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "(X =\"5.0\" or X =\"5.1\" or X =\"6.0\")");
+    r = MsiEvaluateConditionA(hpkg, "(X =\"5.0\" or X =\"5.1\" or X =\"6.0\")");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "X !=\"\" and (X =\"5.0\" or X =\"5.1\" or X =\"6.0\")");
+    r = MsiEvaluateConditionA(hpkg, "X !=\"\" and (X =\"5.0\" or X =\"5.1\" or X =\"6.0\")");
     ok( r == MSICONDITION_ERROR, "wrong return val (%d)\n", r);
 
     /* feature doesn't exist */
-    r = MsiEvaluateCondition(hpkg, "&nofeature");
+    r = MsiEvaluateConditionA(hpkg, "&nofeature");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    MsiSetProperty(hpkg, "A", "2");
-    MsiSetProperty(hpkg, "X", "50");
+    MsiSetPropertyA(hpkg, "A", "2");
+    MsiSetPropertyA(hpkg, "X", "50");
 
-    r = MsiEvaluateCondition(hpkg, "2 <= X");
+    r = MsiEvaluateConditionA(hpkg, "2 <= X");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "A <= X");
+    r = MsiEvaluateConditionA(hpkg, "A <= X");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "A <= 50");
+    r = MsiEvaluateConditionA(hpkg, "A <= 50");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    MsiSetProperty(hpkg, "X", "50val");
+    MsiSetPropertyA(hpkg, "X", "50val");
 
-    r = MsiEvaluateCondition(hpkg, "2 <= X");
+    r = MsiEvaluateConditionA(hpkg, "2 <= X");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "A <= X");
+    r = MsiEvaluateConditionA(hpkg, "A <= X");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    MsiSetProperty(hpkg, "A", "7");
-    MsiSetProperty(hpkg, "X", "50");
+    MsiSetPropertyA(hpkg, "A", "7");
+    MsiSetPropertyA(hpkg, "X", "50");
 
-    r = MsiEvaluateCondition(hpkg, "7 <= X");
+    r = MsiEvaluateConditionA(hpkg, "7 <= X");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "A <= X");
+    r = MsiEvaluateConditionA(hpkg, "A <= X");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "A <= 50");
+    r = MsiEvaluateConditionA(hpkg, "A <= 50");
     ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
 
-    MsiSetProperty(hpkg, "X", "50val");
+    MsiSetPropertyA(hpkg, "X", "50val");
 
-    r = MsiEvaluateCondition(hpkg, "2 <= X");
+    r = MsiEvaluateConditionA(hpkg, "2 <= X");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
-    r = MsiEvaluateCondition(hpkg, "A <= X");
+    r = MsiEvaluateConditionA(hpkg, "A <= X");
     ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r);
 
     r = MsiEvaluateConditionW(hpkg, cond1);
@@ -1958,7 +1991,7 @@ static void test_condition(void)
         "wrong return val (%d)\n", r);
 
     MsiCloseHandle( hpkg );
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static BOOL check_prop_empty( MSIHANDLE hpkg, const char * prop)
@@ -1969,7 +2002,7 @@ static BOOL check_prop_empty( MSIHANDLE hpkg, const char * prop)
 
     sz = sizeof buffer;
     strcpy(buffer,"x");
-    r = MsiGetProperty( hpkg, prop, buffer, &sz );
+    r = MsiGetPropertyA( hpkg, prop, buffer, &sz );
     return r == ERROR_SUCCESS && buffer[0] == 0 && sz == 0;
 }
 
@@ -1998,160 +2031,160 @@ static void test_props(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r);
 
     /* test invalid values */
-    r = MsiGetProperty( 0, NULL, NULL, NULL );
+    r = MsiGetPropertyA( 0, NULL, NULL, NULL );
     ok( r == ERROR_INVALID_PARAMETER, "wrong return val\n");
 
-    r = MsiGetProperty( hpkg, NULL, NULL, NULL );
+    r = MsiGetPropertyA( hpkg, NULL, NULL, NULL );
     ok( r == ERROR_INVALID_PARAMETER, "wrong return val\n");
 
-    r = MsiGetProperty( hpkg, "boo", NULL, NULL );
+    r = MsiGetPropertyA( hpkg, "boo", NULL, NULL );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
 
-    r = MsiGetProperty( hpkg, "boo", buffer, NULL );
+    r = MsiGetPropertyA( hpkg, "boo", buffer, NULL );
     ok( r == ERROR_INVALID_PARAMETER, "wrong return val\n");
 
     /* test retrieving an empty/nonexistent property */
     sz = sizeof buffer;
-    r = MsiGetProperty( hpkg, "boo", NULL, &sz );
+    r = MsiGetPropertyA( hpkg, "boo", NULL, &sz );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
     ok( sz == 0, "wrong size returned\n");
 
     check_prop_empty( hpkg, "boo");
     sz = 0;
     strcpy(buffer,"x");
-    r = MsiGetProperty( hpkg, "boo", buffer, &sz );
+    r = MsiGetPropertyA( hpkg, "boo", buffer, &sz );
     ok( r == ERROR_MORE_DATA, "wrong return val\n");
     ok( !strcmp(buffer,"x"), "buffer was changed\n");
     ok( sz == 0, "wrong size returned\n");
 
     sz = 1;
     strcpy(buffer,"x");
-    r = MsiGetProperty( hpkg, "boo", buffer, &sz );
+    r = MsiGetPropertyA( hpkg, "boo", buffer, &sz );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
     ok( buffer[0] == 0, "buffer was not changed\n");
     ok( sz == 0, "wrong size returned\n");
 
     /* set the property to something */
-    r = MsiSetProperty( 0, NULL, NULL );
+    r = MsiSetPropertyA( 0, NULL, NULL );
     ok( r == ERROR_INVALID_HANDLE, "wrong return val\n");
 
-    r = MsiSetProperty( hpkg, NULL, NULL );
+    r = MsiSetPropertyA( hpkg, NULL, NULL );
     ok( r == ERROR_INVALID_PARAMETER, "wrong return val\n");
 
-    r = MsiSetProperty( hpkg, "", NULL );
+    r = MsiSetPropertyA( hpkg, "", NULL );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
 
     /* try set and get some illegal property identifiers */
-    r = MsiSetProperty( hpkg, "", "asdf" );
+    r = MsiSetPropertyA( hpkg, "", "asdf" );
     ok( r == ERROR_FUNCTION_FAILED, "wrong return val\n");
 
-    r = MsiSetProperty( hpkg, "=", "asdf" );
+    r = MsiSetPropertyA( hpkg, "=", "asdf" );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
 
-    r = MsiSetProperty( hpkg, " ", "asdf" );
+    r = MsiSetPropertyA( hpkg, " ", "asdf" );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
 
-    r = MsiSetProperty( hpkg, "'", "asdf" );
+    r = MsiSetPropertyA( hpkg, "'", "asdf" );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
 
     sz = sizeof buffer;
     buffer[0]=0;
-    r = MsiGetProperty( hpkg, "'", buffer, &sz );
+    r = MsiGetPropertyA( hpkg, "'", buffer, &sz );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
     ok( !strcmp(buffer,"asdf"), "buffer was not changed\n");
 
     /* set empty values */
-    r = MsiSetProperty( hpkg, "boo", NULL );
+    r = MsiSetPropertyA( hpkg, "boo", NULL );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
     ok( check_prop_empty( hpkg, "boo"), "prop wasn't empty\n");
 
-    r = MsiSetProperty( hpkg, "boo", "" );
+    r = MsiSetPropertyA( hpkg, "boo", "" );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
     ok( check_prop_empty( hpkg, "boo"), "prop wasn't empty\n");
 
     /* set a non-empty value */
-    r = MsiSetProperty( hpkg, "boo", "xyz" );
+    r = MsiSetPropertyA( hpkg, "boo", "xyz" );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
 
     sz = 1;
     strcpy(buffer,"x");
-    r = MsiGetProperty( hpkg, "boo", buffer, &sz );
+    r = MsiGetPropertyA( hpkg, "boo", buffer, &sz );
     ok( r == ERROR_MORE_DATA, "wrong return val\n");
     ok( buffer[0] == 0, "buffer was not changed\n");
     ok( sz == 3, "wrong size returned\n");
 
     sz = 4;
     strcpy(buffer,"x");
-    r = MsiGetProperty( hpkg, "boo", buffer, &sz );
+    r = MsiGetPropertyA( hpkg, "boo", buffer, &sz );
     ok( r == ERROR_SUCCESS, "wrong return val\n");
     ok( !strcmp(buffer,"xyz"), "buffer was not changed\n");
     ok( sz == 3, "wrong size returned\n");
 
     sz = 3;
     strcpy(buffer,"x");
-    r = MsiGetProperty( hpkg, "boo", buffer, &sz );
+    r = MsiGetPropertyA( hpkg, "boo", buffer, &sz );
     ok( r == ERROR_MORE_DATA, "wrong return val\n");
     ok( !strcmp(buffer,"xy"), "buffer was not changed\n");
     ok( sz == 3, "wrong size returned\n");
 
-    r = MsiSetProperty(hpkg, "SourceDir", "foo");
+    r = MsiSetPropertyA(hpkg, "SourceDir", "foo");
     ok( r == ERROR_SUCCESS, "wrong return val\n");
 
     sz = 4;
-    r = MsiGetProperty(hpkg, "SOURCEDIR", buffer, &sz);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", buffer, &sz);
     ok( r == ERROR_SUCCESS, "wrong return val\n");
     ok( !strcmp(buffer,""), "buffer wrong\n");
     ok( sz == 0, "wrong size returned\n");
 
     sz = 4;
-    r = MsiGetProperty(hpkg, "SOMERANDOMNAME", buffer, &sz);
+    r = MsiGetPropertyA(hpkg, "SOMERANDOMNAME", buffer, &sz);
     ok( r == ERROR_SUCCESS, "wrong return val\n");
     ok( !strcmp(buffer,""), "buffer wrong\n");
     ok( sz == 0, "wrong size returned\n");
 
     sz = 4;
-    r = MsiGetProperty(hpkg, "SourceDir", buffer, &sz);
+    r = MsiGetPropertyA(hpkg, "SourceDir", buffer, &sz);
     ok( r == ERROR_SUCCESS, "wrong return val\n");
     ok( !strcmp(buffer,"foo"), "buffer wrong\n");
     ok( sz == 3, "wrong size returned\n");
 
-    r = MsiSetProperty(hpkg, "MetadataCompName", "Photoshop.dll");
+    r = MsiSetPropertyA(hpkg, "MetadataCompName", "Photoshop.dll");
     ok( r == ERROR_SUCCESS, "wrong return val\n");
 
     sz = 0;
-    r = MsiGetProperty(hpkg, "MetadataCompName", NULL, &sz );
+    r = MsiGetPropertyA(hpkg, "MetadataCompName", NULL, &sz );
     ok( r == ERROR_SUCCESS, "return wrong\n");
     ok( sz == 13, "size wrong (%d)\n", sz);
 
     sz = 13;
-    r = MsiGetProperty(hpkg, "MetadataCompName", buffer, &sz );
+    r = MsiGetPropertyA(hpkg, "MetadataCompName", buffer, &sz );
     ok( r == ERROR_MORE_DATA, "return wrong\n");
     ok( !strcmp(buffer,"Photoshop.dl"), "buffer wrong\n");
 
-    r = MsiSetProperty(hpkg, "property", "value");
+    r = MsiSetPropertyA(hpkg, "property", "value");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     sz = 6;
-    r = MsiGetProperty(hpkg, "property", buffer, &sz);
+    r = MsiGetPropertyA(hpkg, "property", buffer, &sz);
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok( !strcmp(buffer, "value"), "Expected value, got %s\n", buffer);
 
-    r = MsiSetProperty(hpkg, "property", NULL);
+    r = MsiSetPropertyA(hpkg, "property", NULL);
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     sz = 6;
-    r = MsiGetProperty(hpkg, "property", buffer, &sz);
+    r = MsiGetPropertyA(hpkg, "property", buffer, &sz);
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok( !strlen(buffer), "Expected empty string, got %s\n", buffer);
 
     MsiCloseHandle( hpkg );
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static BOOL find_prop_in_property(MSIHANDLE hdb, LPCSTR prop, LPCSTR val, int len)
@@ -2162,7 +2195,7 @@ static BOOL find_prop_in_property(MSIHANDLE hdb, LPCSTR prop, LPCSTR val, int le
     DWORD sz;
     UINT r;
 
-    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `_Property`", &hview);
+    r = MsiDatabaseOpenViewA(hdb, "SELECT * FROM `_Property`", &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -2175,11 +2208,11 @@ static BOOL find_prop_in_property(MSIHANDLE hdb, LPCSTR prop, LPCSTR val, int le
         if (r != ERROR_SUCCESS) break;
 
         sz = MAX_PATH;
-        r = MsiRecordGetString(hrec, 1, buffer, &sz);
+        r = MsiRecordGetStringA(hrec, 1, buffer, &sz);
         if (r == ERROR_SUCCESS && !lstrcmpA(buffer, prop))
         {
             sz = MAX_PATH;
-            r = MsiRecordGetString(hrec, 2, buffer, &sz);
+            r = MsiRecordGetStringA(hrec, 2, buffer, &sz);
             if (r == ERROR_SUCCESS && !memcmp(buffer, val, len) && !buffer[len])
             {
                 ok(sz == len, "wrong size %u\n", sz);
@@ -2210,7 +2243,7 @@ static void test_property_table(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r);
@@ -2226,7 +2259,7 @@ static void test_property_table(void)
 
     MsiCloseHandle(hdb);
     MsiCloseHandle(hpkg);
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     hdb = create_package_db();
     ok( hdb, "failed to create package\n");
@@ -2249,7 +2282,7 @@ static void test_property_table(void)
     ok(r == ERROR_SUCCESS, "failed to add column\n");
 
     sprintf(package, "#%i", hdb);
-    r = MsiOpenPackage(package, &hpkg);
+    r = MsiOpenPackageA(package, &hpkg);
     ok(r != ERROR_SUCCESS, "MsiOpenPackage succeeded\n");
     if (r == ERROR_SUCCESS)
         MsiCloseHandle(hpkg);
@@ -2278,9 +2311,9 @@ static void test_property_table(void)
     MsiCloseHandle(hdb);
 
     sz = MAX_PATH;
-    r = MsiGetProperty(hpkg, "prop", buffer, &sz);
+    r = MsiGetPropertyA(hpkg, "prop", buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    ok(!lstrcmp(buffer, "val"), "Expected val, got %s\n", buffer);
+    ok(!lstrcmpA(buffer, "val"), "Expected val, got %s\n", buffer);
 
     hdb = MsiGetActiveDatabase(hpkg);
 
@@ -2298,23 +2331,23 @@ static void test_property_table(void)
     ok(found == FALSE, "dantes should not be in the _Property table\n");
 
     sz = MAX_PATH;
-    lstrcpy(buffer, "aaa");
-    r = MsiGetProperty(hpkg, "dantes", buffer, &sz);
+    lstrcpyA(buffer, "aaa");
+    r = MsiGetPropertyA(hpkg, "dantes", buffer, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(lstrlenA(buffer) == 0, "Expected empty string, got %s\n", buffer);
 
-    r = MsiSetProperty(hpkg, "dantes", "mercedes");
+    r = MsiSetPropertyA(hpkg, "dantes", "mercedes");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     found = find_prop_in_property(hdb, "dantes", "mercedes", -1);
     ok(found == TRUE, "dantes should be in the _Property table\n");
 
-    r = MsiDoAction( hpkg, "EmbedNull" );
+    r = MsiDoActionA( hpkg, "EmbedNull" );
     ok( r == ERROR_SUCCESS, "EmbedNull failed: %d\n", r);
 
     sz = MAX_PATH;
     memset( buffer, 'a', sizeof(buffer) );
-    r = MsiGetProperty( hpkg, "prop2", buffer, &sz );
+    r = MsiGetPropertyA( hpkg, "prop2", buffer, &sz );
     ok( r == ERROR_SUCCESS, "get property failed: %d\n", r);
     ok( !memcmp( buffer, "\0np", sizeof("\0np") ), "wrong value\n");
     ok( sz == sizeof("\0np") - 1, "got %u\n", sz );
@@ -2324,7 +2357,7 @@ static void test_property_table(void)
 
     MsiCloseHandle(hdb);
     MsiCloseHandle(hpkg);
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static UINT try_query_param( MSIHANDLE hdb, LPCSTR szQuery, MSIHANDLE hrec )
@@ -2332,7 +2365,7 @@ static UINT try_query_param( MSIHANDLE hdb, LPCSTR szQuery, MSIHANDLE hrec )
     MSIHANDLE htab = 0;
     UINT res;
 
-    res = MsiDatabaseOpenView( hdb, szQuery, &htab );
+    res = MsiDatabaseOpenViewA( hdb, szQuery, &htab );
     if( res == ERROR_SUCCESS )
     {
         UINT r;
@@ -2402,11 +2435,11 @@ static void test_msipackage(void)
     char name[10];
 
     /* NULL szPackagePath */
-    r = MsiOpenPackage(NULL, &hpack);
+    r = MsiOpenPackageA(NULL, &hpack);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* empty szPackagePath */
-    r = MsiOpenPackage("", &hpack);
+    r = MsiOpenPackageA("", &hpack);
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
@@ -2421,24 +2454,24 @@ static void test_msipackage(void)
         MsiCloseHandle(hpack);
 
     /* nonexistent szPackagePath */
-    r = MsiOpenPackage("nonexistent", &hpack);
+    r = MsiOpenPackageA("nonexistent", &hpack);
     ok(r == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %d\n", r);
 
     /* NULL hProduct */
-    r = MsiOpenPackage(msifile, NULL);
+    r = MsiOpenPackageA(msifile, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     name[0]='#';
     name[1]=0;
-    r = MsiOpenPackage(name, &hpack);
+    r = MsiOpenPackageA(name, &hpack);
     ok(r == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", r);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* database exists, but is emtpy */
     sprintf(name, "#%d", hdb);
-    r = MsiOpenPackage(name, &hpack);
+    r = MsiOpenPackageA(name, &hpack);
     ok(r == ERROR_INSTALL_PACKAGE_INVALID,
        "Expected ERROR_INSTALL_PACKAGE_INVALID, got %d\n", r);
 
@@ -2456,15 +2489,15 @@ static void test_msipackage(void)
 
     /* a few key tables exist */
     sprintf(name, "#%d", hdb);
-    r = MsiOpenPackage(name, &hpack);
+    r = MsiOpenPackageA(name, &hpack);
     ok(r == ERROR_INSTALL_PACKAGE_INVALID,
        "Expected ERROR_INSTALL_PACKAGE_INVALID, got %d\n", r);
 
     MsiCloseHandle(hdb);
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     /* start with a clean database to show what constitutes a valid package */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     sprintf(name, "#%d", hdb);
@@ -2475,18 +2508,18 @@ static void test_msipackage(void)
      */
 
     set_summary_dword(hdb, PID_PAGECOUNT, 100);
-    r = MsiOpenPackage(name, &hpack);
+    r = MsiOpenPackageA(name, &hpack);
     ok(r == ERROR_INSTALL_PACKAGE_INVALID,
        "Expected ERROR_INSTALL_PACKAGE_INVALID, got %d\n", r);
 
     set_summary_str(hdb, PID_REVNUMBER, "{004757CD-5092-49C2-AD20-28E1CE0DF5F2}");
-    r = MsiOpenPackage(name, &hpack);
+    r = MsiOpenPackageA(name, &hpack);
     ok(r == ERROR_SUCCESS,
        "Expected ERROR_SUCCESS, got %d\n", r);
 
     MsiCloseHandle(hpack);
     MsiCloseHandle(hdb);
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_formatrecord2(void)
@@ -2500,93 +2533,93 @@ static void test_formatrecord2(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r);
 
-    r = MsiSetProperty(hpkg, "Manufacturer", " " );
+    r = MsiSetPropertyA(hpkg, "Manufacturer", " " );
     ok( r == ERROR_SUCCESS, "set property failed\n");
 
     hrec = MsiCreateRecord(2);
     ok(hrec, "create record failed\n");
 
-    r = MsiRecordSetString( hrec, 0, "[ProgramFilesFolder][Manufacturer]\\asdf");
+    r = MsiRecordSetStringA( hrec, 0, "[ProgramFilesFolder][Manufacturer]\\asdf");
     ok( r == ERROR_SUCCESS, "format record failed\n");
 
     buffer[0] = 0;
     sz = sizeof buffer;
-    r = MsiFormatRecord( hpkg, hrec, buffer, &sz );
+    r = MsiFormatRecordA( hpkg, hrec, buffer, &sz );
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
 
-    r = MsiRecordSetString(hrec, 0, "[foo][1]");
+    r = MsiRecordSetStringA(hrec, 0, "[foo][1]");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
     sz = sizeof buffer;
-    r = MsiFormatRecord(hpkg, hrec, buffer, &sz);
+    r = MsiFormatRecordA(hpkg, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"hoo"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "x[~]x");
+    r = MsiRecordSetStringA(hrec, 0, "x[~]x");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
     sz = sizeof buffer;
-    r = MsiFormatRecord(hpkg, hrec, buffer, &sz);
+    r = MsiFormatRecordA(hpkg, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"x"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[foo.$%}][1]");
+    r = MsiRecordSetStringA(hrec, 0, "[foo.$%}][1]");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
-    r = MsiRecordSetString(hrec, 1, "hoo");
+    r = MsiRecordSetStringA(hrec, 1, "hoo");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
     sz = sizeof buffer;
-    r = MsiFormatRecord(hpkg, hrec, buffer, &sz);
+    r = MsiFormatRecordA(hpkg, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"hoo"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[\\[]");
+    r = MsiRecordSetStringA(hrec, 0, "[\\[]");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
     sz = sizeof buffer;
-    r = MsiFormatRecord(hpkg, hrec, buffer, &sz);
+    r = MsiFormatRecordA(hpkg, hrec, buffer, &sz);
     ok( sz == 1, "size wrong\n");
     ok( 0 == strcmp(buffer,"["), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    SetEnvironmentVariable("FOO", "BAR");
-    r = MsiRecordSetString(hrec, 0, "[%FOO]");
+    SetEnvironmentVariableA("FOO", "BAR");
+    r = MsiRecordSetStringA(hrec, 0, "[%FOO]");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
     sz = sizeof buffer;
-    r = MsiFormatRecord(hpkg, hrec, buffer, &sz);
+    r = MsiFormatRecordA(hpkg, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"BAR"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
-    r = MsiRecordSetString(hrec, 0, "[[1]]");
+    r = MsiRecordSetStringA(hrec, 0, "[[1]]");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
-    r = MsiRecordSetString(hrec, 1, "%FOO");
+    r = MsiRecordSetStringA(hrec, 1, "%FOO");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
     sz = sizeof buffer;
-    r = MsiFormatRecord(hpkg, hrec, buffer, &sz);
+    r = MsiFormatRecordA(hpkg, hrec, buffer, &sz);
     ok( sz == 3, "size wrong\n");
     ok( 0 == strcmp(buffer,"BAR"), "wrong output %s\n",buffer);
     ok( r == ERROR_SUCCESS, "format failed\n");
 
     MsiCloseHandle( hrec );
     MsiCloseHandle( hpkg );
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_feature_states( UINT line, MSIHANDLE package, const char *feature, UINT error,
-                                 INSTALLSTATE expected_state, INSTALLSTATE expected_action, int todo )
+                                 INSTALLSTATE expected_state, INSTALLSTATE expected_action, BOOL todo )
 {
     UINT r;
     INSTALLSTATE state = 0xdeadbee;
     INSTALLSTATE action = 0xdeadbee;
 
-    r = MsiGetFeatureState( package, feature, &state, &action );
+    r = MsiGetFeatureStateA( package, feature, &state, &action );
     ok( r == error, "%u: expected %d got %d\n", line, error, r );
     if (r == ERROR_SUCCESS)
     {
@@ -2611,13 +2644,13 @@ static void test_feature_states( UINT line, MSIHANDLE package, const char *featu
 }
 
 static void test_component_states( UINT line, MSIHANDLE package, const char *component, UINT error,
-                                   INSTALLSTATE expected_state, INSTALLSTATE expected_action, int todo )
+                                   INSTALLSTATE expected_state, INSTALLSTATE expected_action, BOOL todo )
 {
     UINT r;
     INSTALLSTATE state = 0xdeadbee;
     INSTALLSTATE action = 0xdeadbee;
 
-    r = MsiGetComponentState( package, component, &state, &action );
+    r = MsiGetComponentStateA( package, component, &state, &action );
     ok( r == error, "%u: expected %d got %d\n", line, error, r );
     if (r == ERROR_SUCCESS)
     {
@@ -2645,9 +2678,15 @@ static void test_component_states( UINT line, MSIHANDLE package, const char *com
 
 static void test_states(void)
 {
-    static char msifile2[] = "winetest2-package.msi";
-    static char msifile3[] = "winetest3-package.msi";
-    static char msifile4[] = "winetest4-package.msi";
+    static const char msifile2[] = "winetest2-package.msi";
+    static const char msifile3[] = "winetest3-package.msi";
+    static const char msifile4[] = "winetest4-package.msi";
+    static const WCHAR msifile2W[] =
+        {'w','i','n','e','t','e','s','t','2','-','p','a','c','k','a','g','e','.','m','s','i',0};
+    static const WCHAR msifile3W[] =
+        {'w','i','n','e','t','e','s','t','3','-','p','a','c','k','a','g','e','.','m','s','i',0};
+    static const WCHAR msifile4W[] =
+        {'w','i','n','e','t','e','s','t','4','-','p','a','c','k','a','g','e','.','m','s','i',0};
     MSIHANDLE hpkg;
     UINT r;
     MSIHANDLE hdb;
@@ -3022,7 +3061,7 @@ static void test_states(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r );
@@ -3033,70 +3072,70 @@ static void test_states(void)
     CopyFileA(msifile, msifile3, FALSE);
     CopyFileA(msifile, msifile4, FALSE);
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_UNKNOWN_FEATURE, 0, 0, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_UNKNOWN_COMPONENT, 0, 0, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_UNKNOWN_FEATURE, 0, 0, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_UNKNOWN_COMPONENT, 0, 0, FALSE );
 
-    r = MsiDoAction( hpkg, "CostInitialize");
+    r = MsiDoActionA( hpkg, "CostInitialize");
     ok( r == ERROR_SUCCESS, "cost init failed\n");
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction( hpkg, "FileCost");
+    r = MsiDoActionA( hpkg, "FileCost");
     ok( r == ERROR_SUCCESS, "file cost failed\n");
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
 
-    r = MsiDoAction( hpkg, "CostFinalize");
+    r = MsiDoActionA( hpkg, "CostFinalize");
     ok( r == ERROR_SUCCESS, "cost finalize failed: %d\n", r);
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "two", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "three", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "four", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "five", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "six", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "seven", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "eight", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "nine", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "ten", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "eleven", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "beta", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "gamma", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "theta", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "delta", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "epsilon", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "zeta", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "iota", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "eta", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "kappa", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "lambda", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "mu", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "nu", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "xi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "omicron", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "pi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "rho", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "sigma", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "tau", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "phi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "chi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "psi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "two", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "three", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "four", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "five", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "six", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "seven", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "eight", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "nine", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "ten", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "eleven", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "beta", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "gamma", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "theta", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "delta", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "epsilon", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "zeta", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "iota", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "eta", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "kappa", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "lambda", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "mu", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "nu", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "xi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "omicron", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "pi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "rho", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "sigma", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "tau", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "phi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "chi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "psi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
 
     MsiCloseHandle( hpkg );
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
     /* publish the features and components */
-    r = MsiInstallProduct(msifile, "ADDLOCAL=one,four ADDSOURCE=two,three REMOVE=six,seven REINSTALL=eight,nine,ten");
+    r = MsiInstallProductA(msifile, "ADDLOCAL=one,four ADDSOURCE=two,three REMOVE=six,seven REINSTALL=eight,nine,ten");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_DIRECT, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_DIRECT, &hdb);
     ok(r == ERROR_SUCCESS, "failed to open database: %d\n", r);
 
     /* these properties must not be in the saved msi file */
@@ -3117,70 +3156,70 @@ static void test_states(void)
 
     MsiCloseHandle(hdb);
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_UNKNOWN_FEATURE, 0, 0, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_UNKNOWN_COMPONENT, 0, 0, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_UNKNOWN_FEATURE, 0, 0, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_UNKNOWN_COMPONENT, 0, 0, FALSE );
 
-    r = MsiDoAction( hpkg, "CostInitialize");
+    r = MsiDoActionA( hpkg, "CostInitialize");
     ok( r == ERROR_SUCCESS, "cost init failed\n");
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
 
-    r = MsiDoAction( hpkg, "FileCost");
+    r = MsiDoActionA( hpkg, "FileCost");
     ok( r == ERROR_SUCCESS, "file cost failed\n");
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
 
-    r = MsiDoAction( hpkg, "CostFinalize");
+    r = MsiDoActionA( hpkg, "CostFinalize");
     ok( r == ERROR_SUCCESS, "cost finalize failed: %d\n", r);
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "two", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "three", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "four", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "five", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "six", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "seven", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "eight", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "nine", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "ten", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "eleven", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "beta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "gamma", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "theta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "delta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "epsilon", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "zeta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "iota", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "eta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "kappa", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "lambda", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "mu", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "nu", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "xi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "omicron", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "pi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "rho", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "sigma", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "tau", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "phi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "chi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "psi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "two", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "three", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "four", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "five", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "six", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "seven", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "eight", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "nine", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "ten", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "eleven", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "beta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "gamma", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "theta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "delta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "epsilon", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "zeta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "iota", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "eta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "kappa", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "lambda", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "mu", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "nu", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "xi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "omicron", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "pi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "rho", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "sigma", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "tau", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "phi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "chi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "psi", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
 
     MsiCloseHandle(hpkg);
 
     /* uninstall the product */
-    r = MsiInstallProduct(msifile, "REMOVE=ALL");
+    r = MsiInstallProductA(msifile, "REMOVE=ALL");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* all features installed locally */
-    r = MsiInstallProduct(msifile2, "ADDLOCAL=ALL");
+    r = MsiInstallProductA(msifile2, "ADDLOCAL=ALL");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
-    r = MsiOpenDatabase(msifile2, MSIDBOPEN_DIRECT, &hdb);
+    r = MsiOpenDatabaseW(msifile2W, MSIDBOPEN_DIRECT, &hdb);
     ok(r == ERROR_SUCCESS, "failed to open database: %d\n", r);
 
     /* these properties must not be in the saved msi file */
@@ -3190,64 +3229,64 @@ static void test_states(void)
     r = package_from_db( hdb, &hpkg );
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r );
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_UNKNOWN_FEATURE, 0, 0, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_UNKNOWN_COMPONENT, 0, 0, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_UNKNOWN_FEATURE, 0, 0, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_UNKNOWN_COMPONENT, 0, 0, FALSE );
 
-    r = MsiDoAction( hpkg, "CostInitialize");
+    r = MsiDoActionA( hpkg, "CostInitialize");
     ok( r == ERROR_SUCCESS, "cost init failed\n");
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
 
-    r = MsiDoAction( hpkg, "CostFinalize");
+    r = MsiDoActionA( hpkg, "CostFinalize");
     ok( r == ERROR_SUCCESS, "cost finalize failed: %d\n", r);
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "two", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "three", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "four", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "five", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "six", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "seven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "eight", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 1 );
-    test_feature_states( __LINE__, hpkg, "nine", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 1 );
-    test_feature_states( __LINE__, hpkg, "ten", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 1 );
-    test_feature_states( __LINE__, hpkg, "eleven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 1 );
-
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "beta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "gamma", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "theta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "delta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "epsilon", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "zeta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "iota", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "eta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "kappa", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "lambda", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "mu", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "nu", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "xi", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "omicron", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "pi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "rho", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "sigma", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "tau", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 1 );
-    test_component_states( __LINE__, hpkg, "phi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 1 );
-    test_component_states( __LINE__, hpkg, "chi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 1 );
-    test_component_states( __LINE__, hpkg, "psi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "two", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "three", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "four", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "five", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "six", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "seven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "eight", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, TRUE );
+    test_feature_states( __LINE__, hpkg, "nine", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, TRUE );
+    test_feature_states( __LINE__, hpkg, "ten", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, TRUE );
+    test_feature_states( __LINE__, hpkg, "eleven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, TRUE );
+
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "beta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "gamma", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "theta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "delta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "epsilon", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "zeta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "iota", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "eta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "kappa", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "lambda", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "mu", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "nu", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "xi", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "omicron", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "pi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "rho", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "sigma", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "tau", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, TRUE );
+    test_component_states( __LINE__, hpkg, "phi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, TRUE );
+    test_component_states( __LINE__, hpkg, "chi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, TRUE );
+    test_component_states( __LINE__, hpkg, "psi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
 
     MsiCloseHandle(hpkg);
 
     /* uninstall the product */
-    r = MsiInstallProduct(msifile2, "REMOVE=ALL");
+    r = MsiInstallProductA(msifile2, "REMOVE=ALL");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* all features installed from source */
-    r = MsiInstallProduct(msifile3, "ADDSOURCE=ALL");
+    r = MsiInstallProductA(msifile3, "ADDSOURCE=ALL");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
-    r = MsiOpenDatabase(msifile3, MSIDBOPEN_DIRECT, &hdb);
+    r = MsiOpenDatabaseW(msifile3W, MSIDBOPEN_DIRECT, &hdb);
     ok(r == ERROR_SUCCESS, "failed to open database: %d\n", r);
 
     /* this property must not be in the saved msi file */
@@ -3257,66 +3296,66 @@ static void test_states(void)
     r = package_from_db( hdb, &hpkg );
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r );
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_UNKNOWN_FEATURE, 0, 0, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_UNKNOWN_COMPONENT, 0, 0, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_UNKNOWN_FEATURE, 0, 0, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_UNKNOWN_COMPONENT, 0, 0, FALSE );
 
-    r = MsiDoAction( hpkg, "CostInitialize");
+    r = MsiDoActionA( hpkg, "CostInitialize");
     ok( r == ERROR_SUCCESS, "cost init failed\n");
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
 
-    r = MsiDoAction( hpkg, "FileCost");
+    r = MsiDoActionA( hpkg, "FileCost");
     ok( r == ERROR_SUCCESS, "file cost failed\n");
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
 
-    r = MsiDoAction( hpkg, "CostFinalize");
+    r = MsiDoActionA( hpkg, "CostFinalize");
     ok( r == ERROR_SUCCESS, "cost finalize failed: %d\n", r);
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "two", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "three", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "four", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "five", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "six", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "seven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "eight", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "nine", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "ten", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "eleven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 1 );
-
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "beta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "gamma", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "theta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "delta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "epsilon", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "zeta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "iota", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "eta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "kappa", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "lambda", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "mu", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "nu", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "xi", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "omicron", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "pi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "rho", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "sigma", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "tau", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "phi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "chi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "psi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "two", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "three", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "four", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "five", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "six", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "seven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "eight", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "nine", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "ten", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "eleven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, TRUE );
+
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "beta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "gamma", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "theta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "delta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "epsilon", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "zeta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "iota", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "eta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "kappa", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "lambda", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "mu", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "nu", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "xi", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "omicron", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "pi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "rho", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "sigma", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "tau", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "phi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "chi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "psi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
 
     MsiCloseHandle(hpkg);
 
     /* reinstall the product */
-    r = MsiInstallProduct(msifile3, "REINSTALL=ALL");
+    r = MsiInstallProductA(msifile3, "REINSTALL=ALL");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
-    r = MsiOpenDatabase(msifile4, MSIDBOPEN_DIRECT, &hdb);
+    r = MsiOpenDatabaseW(msifile4W, MSIDBOPEN_DIRECT, &hdb);
     ok(r == ERROR_SUCCESS, "failed to open database: %d\n", r);
 
     /* this property must not be in the saved msi file */
@@ -3326,63 +3365,63 @@ static void test_states(void)
     r = package_from_db( hdb, &hpkg );
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r );
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_UNKNOWN_FEATURE, 0, 0, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_UNKNOWN_COMPONENT, 0, 0, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_UNKNOWN_FEATURE, 0, 0, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_UNKNOWN_COMPONENT, 0, 0, FALSE );
 
-    r = MsiDoAction( hpkg, "CostInitialize");
+    r = MsiDoActionA( hpkg, "CostInitialize");
     ok( r == ERROR_SUCCESS, "cost init failed\n");
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
 
-    r = MsiDoAction( hpkg, "FileCost");
+    r = MsiDoActionA( hpkg, "FileCost");
     ok( r == ERROR_SUCCESS, "file cost failed\n");
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
 
-    r = MsiDoAction( hpkg, "CostFinalize");
+    r = MsiDoActionA( hpkg, "CostFinalize");
     ok( r == ERROR_SUCCESS, "cost finalize failed: %d\n", r);
 
-    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "two", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "three", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "four", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "five", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "six", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "seven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "eight", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "nine", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "ten", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "eleven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 1 );
-
-    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "beta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "gamma", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "theta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "delta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "epsilon", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "zeta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "iota", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "eta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "kappa", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "lambda", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "mu", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "nu", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "xi", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "omicron", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "pi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "rho", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "sigma", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "tau", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "phi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "chi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "psi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "one", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "two", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "three", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "four", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "five", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "six", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "seven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "eight", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "nine", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "ten", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "eleven", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, TRUE );
+
+    test_component_states( __LINE__, hpkg, "alpha", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "beta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "gamma", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "theta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "delta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "epsilon", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "zeta", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "iota", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "eta", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "kappa", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "lambda", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "mu", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "nu", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "xi", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "omicron", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "pi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "rho", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "sigma", ERROR_SUCCESS, INSTALLSTATE_LOCAL, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "tau", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "phi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "chi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "psi", ERROR_SUCCESS, INSTALLSTATE_SOURCE, INSTALLSTATE_UNKNOWN, FALSE );
 
     MsiCloseHandle(hpkg);
 
     /* uninstall the product */
-    r = MsiInstallProduct(msifile4, "REMOVE=ALL");
+    r = MsiInstallProductA(msifile4, "REMOVE=ALL");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     DeleteFileA(msifile);
@@ -3403,43 +3442,43 @@ static void test_getproperty(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "Failed to create package %u\n", r );
 
     /* set the property */
-    r = MsiSetProperty(hPackage, "Name", "Value");
+    r = MsiSetPropertyA(hPackage, "Name", "Value");
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* retrieve the size, NULL pointer */
     size = 0;
-    r = MsiGetProperty(hPackage, "Name", NULL, &size);
+    r = MsiGetPropertyA(hPackage, "Name", NULL, &size);
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok( size == 5, "Expected 5, got %d\n", size);
 
     /* retrieve the size, empty string */
     size = 0;
-    r = MsiGetProperty(hPackage, "Name", empty, &size);
+    r = MsiGetPropertyA(hPackage, "Name", empty, &size);
     ok( r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok( size == 5, "Expected 5, got %d\n", size);
 
     /* don't change size */
-    r = MsiGetProperty(hPackage, "Name", prop, &size);
+    r = MsiGetPropertyA(hPackage, "Name", prop, &size);
     ok( r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok( size == 5, "Expected 5, got %d\n", size);
-    ok( !lstrcmp(prop, "Valu"), "Expected Valu, got %s\n", prop);
+    ok( !lstrcmpA(prop, "Valu"), "Expected Valu, got %s\n", prop);
 
     /* increase the size by 1 */
     size++;
-    r = MsiGetProperty(hPackage, "Name", prop, &size);
+    r = MsiGetPropertyA(hPackage, "Name", prop, &size);
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok( size == 5, "Expected 5, got %d\n", size);
-    ok( !lstrcmp(prop, "Value"), "Expected Value, got %s\n", prop);
+    ok( !lstrcmpA(prop, "Value"), "Expected Value, got %s\n", prop);
 
     r = MsiCloseHandle( hPackage);
     ok( r == ERROR_SUCCESS , "Failed to close package\n" );
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_removefiles(void)
@@ -3540,7 +3579,7 @@ static void test_removefiles(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r );
@@ -3555,76 +3594,76 @@ static void test_removefiles(void)
     create_test_file( "carbon.txt" );
     create_test_file( "oxygen.txt" );
 
-    r = MsiSetProperty( hpkg, "TARGETDIR", CURR_DIR );
+    r = MsiSetPropertyA( hpkg, "TARGETDIR", CURR_DIR );
     ok( r == ERROR_SUCCESS, "set property failed\n");
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiGetComponentState( hpkg, "oxygen", &installed, &action );
+    r = MsiGetComponentStateA( hpkg, "oxygen", &installed, &action );
     ok( r == ERROR_UNKNOWN_COMPONENT, "expected ERROR_UNKNOWN_COMPONENT, got %u\n", r );
 
-    r = MsiDoAction( hpkg, "CostInitialize");
+    r = MsiDoActionA( hpkg, "CostInitialize");
     ok( r == ERROR_SUCCESS, "cost init failed\n");
 
-    r = MsiDoAction( hpkg, "FileCost");
+    r = MsiDoActionA( hpkg, "FileCost");
     ok( r == ERROR_SUCCESS, "file cost failed\n");
 
     installed = action = 0xdeadbeef;
-    r = MsiGetComponentState( hpkg, "oxygen", &installed, &action );
+    r = MsiGetComponentStateA( hpkg, "oxygen", &installed, &action );
     ok( r == ERROR_SUCCESS, "failed to get component state %u\n", r );
     ok( installed == INSTALLSTATE_UNKNOWN, "expected INSTALLSTATE_UNKNOWN, got %d\n", installed );
     ok( action == INSTALLSTATE_UNKNOWN, "expected INSTALLSTATE_UNKNOWN, got %d\n", action );
 
-    r = MsiDoAction( hpkg, "CostFinalize");
+    r = MsiDoActionA( hpkg, "CostFinalize");
     ok( r == ERROR_SUCCESS, "cost finalize failed\n");
 
-    r = MsiDoAction( hpkg, "InstallValidate");
+    r = MsiDoActionA( hpkg, "InstallValidate");
     ok( r == ERROR_SUCCESS, "install validate failed\n");
 
-    r = MsiSetComponentState( hpkg, "hydrogen", INSTALLSTATE_ABSENT );
+    r = MsiSetComponentStateA( hpkg, "hydrogen", INSTALLSTATE_ABSENT );
     ok( r == ERROR_SUCCESS, "failed to set component state: %d\n", r);
 
     installed = action = 0xdeadbeef;
-    r = MsiGetComponentState( hpkg, "hydrogen", &installed, &action );
+    r = MsiGetComponentStateA( hpkg, "hydrogen", &installed, &action );
     ok( r == ERROR_SUCCESS, "failed to get component state %u\n", r );
     ok( installed == INSTALLSTATE_UNKNOWN, "expected INSTALLSTATE_UNKNOWN, got %d\n", installed );
     todo_wine ok( action == INSTALLSTATE_UNKNOWN, "expected INSTALLSTATE_UNKNOWN, got %d\n", action );
 
-    r = MsiSetComponentState( hpkg, "helium", INSTALLSTATE_LOCAL );
+    r = MsiSetComponentStateA( hpkg, "helium", INSTALLSTATE_LOCAL );
     ok( r == ERROR_SUCCESS, "failed to set component state: %d\n", r);
 
-    r = MsiSetComponentState( hpkg, "lithium", INSTALLSTATE_SOURCE );
+    r = MsiSetComponentStateA( hpkg, "lithium", INSTALLSTATE_SOURCE );
     ok( r == ERROR_SUCCESS, "failed to set component state: %d\n", r);
 
-    r = MsiSetComponentState( hpkg, "beryllium", INSTALLSTATE_ABSENT );
+    r = MsiSetComponentStateA( hpkg, "beryllium", INSTALLSTATE_ABSENT );
     ok( r == ERROR_SUCCESS, "failed to set component state: %d\n", r);
 
-    r = MsiSetComponentState( hpkg, "boron", INSTALLSTATE_LOCAL );
+    r = MsiSetComponentStateA( hpkg, "boron", INSTALLSTATE_LOCAL );
     ok( r == ERROR_SUCCESS, "failed to set component state: %d\n", r);
 
-    r = MsiSetComponentState( hpkg, "carbon", INSTALLSTATE_SOURCE );
+    r = MsiSetComponentStateA( hpkg, "carbon", INSTALLSTATE_SOURCE );
     ok( r == ERROR_SUCCESS, "failed to set component state: %d\n", r);
 
     installed = action = 0xdeadbeef;
-    r = MsiGetComponentState( hpkg, "oxygen", &installed, &action );
+    r = MsiGetComponentStateA( hpkg, "oxygen", &installed, &action );
     ok( r == ERROR_SUCCESS, "failed to get component state %u\n", r );
     ok( installed == INSTALLSTATE_UNKNOWN, "expected INSTALLSTATE_UNKNOWN, got %d\n", installed );
     ok( action == INSTALLSTATE_UNKNOWN, "expected INSTALLSTATE_UNKNOWN, got %d\n", action );
 
-    r = MsiSetComponentState( hpkg, "oxygen", INSTALLSTATE_ABSENT );
+    r = MsiSetComponentStateA( hpkg, "oxygen", INSTALLSTATE_ABSENT );
     ok( r == ERROR_SUCCESS, "failed to set component state: %d\n", r);
 
     installed = action = 0xdeadbeef;
-    r = MsiGetComponentState( hpkg, "oxygen", &installed, &action );
+    r = MsiGetComponentStateA( hpkg, "oxygen", &installed, &action );
     ok( r == ERROR_SUCCESS, "failed to get component state %u\n", r );
     ok( installed == INSTALLSTATE_UNKNOWN, "expected INSTALLSTATE_UNKNOWN, got %d\n", installed );
     ok( action == INSTALLSTATE_UNKNOWN, "expected INSTALLSTATE_UNKNOWN, got %d\n", action );
 
-    r = MsiDoAction( hpkg, "RemoveFiles");
+    r = MsiDoActionA( hpkg, "RemoveFiles");
     ok( r == ERROR_SUCCESS, "remove files failed\n");
 
     installed = action = 0xdeadbeef;
-    r = MsiGetComponentState( hpkg, "oxygen", &installed, &action );
+    r = MsiGetComponentStateA( hpkg, "oxygen", &installed, &action );
     ok( r == ERROR_SUCCESS, "failed to get component state %u\n", r );
     ok( installed == INSTALLSTATE_UNKNOWN, "expected INSTALLSTATE_UNKNOWN, got %d\n", installed );
     ok( action == INSTALLSTATE_UNKNOWN, "expected INSTALLSTATE_UNKNOWN, got %d\n", action );
@@ -3686,7 +3725,7 @@ static void test_appsearch(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r );
@@ -3696,7 +3735,7 @@ static void test_appsearch(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction( hpkg, "AppSearch" );
+    r = MsiDoActionA( hpkg, "AppSearch" );
     ok( r == ERROR_SUCCESS, "AppSearch failed: %d\n", r);
 
     size = sizeof(prop);
@@ -3905,7 +3944,7 @@ static void test_appsearch_complocator(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction(hpkg, "AppSearch");
+    r = MsiDoActionA(hpkg, "AppSearch");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
@@ -4453,7 +4492,7 @@ static void test_appsearch_reglocator(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction(hpkg, "AppSearch");
+    r = MsiDoActionA(hpkg, "AppSearch");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
@@ -4674,7 +4713,7 @@ static void test_appsearch_reglocator(void)
     RegDeleteValueA(hklm, "Value15");
     RegDeleteValueA(hklm, "Value16");
     RegDeleteValueA(hklm, "Value17");
-    RegDeleteKey(hklm, "");
+    RegDeleteKeyA(hklm, "");
     RegCloseKey(hklm);
 
     RegDeleteValueA(classes, "Value1");
@@ -4881,7 +4920,7 @@ static void test_appsearch_inilocator(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction(hpkg, "AppSearch");
+    r = MsiDoActionA(hpkg, "AppSearch");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
@@ -4987,7 +5026,7 @@ static void search_absolute_directory(LPSTR absolute, LPCSTR relative)
             continue;
 
         absolute[0] = 'A' + i;
-        if (GetDriveType(absolute) != DRIVE_FIXED)
+        if (GetDriveTypeA(absolute) != DRIVE_FIXED)
             continue;
 
         lstrcpynA(absolute + 3, relative, size + 1);
@@ -5186,7 +5225,7 @@ static void test_appsearch_drlocator(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction(hpkg, "AppSearch");
+    r = MsiDoActionA(hpkg, "AppSearch");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
@@ -5455,7 +5494,7 @@ static void test_featureparents(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r );
@@ -5464,61 +5503,61 @@ static void test_featureparents(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction( hpkg, "CostInitialize");
+    r = MsiDoActionA( hpkg, "CostInitialize");
     ok( r == ERROR_SUCCESS, "cost init failed\n");
 
-    r = MsiDoAction( hpkg, "FileCost");
+    r = MsiDoActionA( hpkg, "FileCost");
     ok( r == ERROR_SUCCESS, "file cost failed\n");
 
-    r = MsiDoAction( hpkg, "CostFinalize");
+    r = MsiDoActionA( hpkg, "CostFinalize");
     ok( r == ERROR_SUCCESS, "cost finalize failed\n");
 
-    test_feature_states( __LINE__, hpkg, "zodiac", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "perseus", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "orion", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "lyra", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "waters", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "bayer", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-
-    test_component_states( __LINE__, hpkg, "leo", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "virgo", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "libra", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "cassiopeia", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "cepheus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "andromeda", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "canis", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "monoceros", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "lepus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "delphinus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "hydrus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-
-    r = MsiSetFeatureState(hpkg, "orion", INSTALLSTATE_ABSENT);
+    test_feature_states( __LINE__, hpkg, "zodiac", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "perseus", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "orion", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "lyra", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "waters", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "bayer", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+
+    test_component_states( __LINE__, hpkg, "leo", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "virgo", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "libra", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "cassiopeia", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "cepheus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "andromeda", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "canis", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "monoceros", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "lepus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "delphinus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "hydrus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+
+    r = MsiSetFeatureStateA(hpkg, "orion", INSTALLSTATE_ABSENT);
     ok( r == ERROR_SUCCESS, "failed to set feature state: %d\n", r);
 
-    r = MsiSetFeatureState(hpkg, "lyra", INSTALLSTATE_ABSENT);
+    r = MsiSetFeatureStateA(hpkg, "lyra", INSTALLSTATE_ABSENT);
     ok( r == ERROR_SUCCESS, "failed to set feature state: %d\n", r);
 
-    r = MsiSetFeatureState(hpkg, "nosuchfeature", INSTALLSTATE_ABSENT);
+    r = MsiSetFeatureStateA(hpkg, "nosuchfeature", INSTALLSTATE_ABSENT);
     ok( r == ERROR_UNKNOWN_FEATURE, "Expected ERROR_UNKNOWN_FEATURE, got %u\n", r);
 
-    test_feature_states( __LINE__, hpkg, "zodiac", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, 0 );
-    test_feature_states( __LINE__, hpkg, "perseus", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, 0 );
-    test_feature_states( __LINE__, hpkg, "orion", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_ABSENT, 0 );
-    test_feature_states( __LINE__, hpkg, "lyra", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_ABSENT, 0 );
-    test_feature_states( __LINE__, hpkg, "waters", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-    test_feature_states( __LINE__, hpkg, "bayer", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, 0 );
-
-    test_component_states( __LINE__, hpkg, "leo", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "virgo", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "libra", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "cassiopeia", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, 0 );
-    test_component_states( __LINE__, hpkg, "cepheus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "andromeda", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, 0 );
-    test_component_states( __LINE__, hpkg, "canis", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "monoceros", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "lepus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "delphinus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
-    test_component_states( __LINE__, hpkg, "hydrus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, 0 );
+    test_feature_states( __LINE__, hpkg, "zodiac", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_LOCAL, FALSE );
+    test_feature_states( __LINE__, hpkg, "perseus", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_SOURCE, FALSE );
+    test_feature_states( __LINE__, hpkg, "orion", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_ABSENT, FALSE );
+    test_feature_states( __LINE__, hpkg, "lyra", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_ABSENT, FALSE );
+    test_feature_states( __LINE__, hpkg, "waters", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+    test_feature_states( __LINE__, hpkg, "bayer", ERROR_SUCCESS, INSTALLSTATE_ABSENT, INSTALLSTATE_UNKNOWN, FALSE );
+
+    test_component_states( __LINE__, hpkg, "leo", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "virgo", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "libra", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "cassiopeia", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_LOCAL, FALSE );
+    test_component_states( __LINE__, hpkg, "cepheus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "andromeda", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_SOURCE, FALSE );
+    test_component_states( __LINE__, hpkg, "canis", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "monoceros", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "lepus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "delphinus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
+    test_component_states( __LINE__, hpkg, "hydrus", ERROR_SUCCESS, INSTALLSTATE_UNKNOWN, INSTALLSTATE_UNKNOWN, FALSE );
 
     MsiCloseHandle(hpkg);
     DeleteFileA(msifile);
@@ -5540,9 +5579,9 @@ static void test_installprops(void)
     if (is_wow64)
         access |= KEY_WOW64_64KEY;
 
-    GetCurrentDirectory(MAX_PATH, path);
-    lstrcat(path, "\\");
-    lstrcat(path, msifile);
+    GetCurrentDirectoryA(MAX_PATH, path);
+    lstrcatA(path, "\\");
+    lstrcatA(path, msifile);
 
     uilevel = MsiSetInternalUI(INSTALLUILEVEL_BASIC|INSTALLUILEVEL_SOURCERESONLY, NULL);
 
@@ -5554,7 +5593,7 @@ static void test_installprops(void)
     {
         skip("Not enough rights to perform tests\n");
         MsiSetInternalUI(uilevel, NULL);
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r );
@@ -5563,95 +5602,95 @@ static void test_installprops(void)
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "UILevel", buf, &size);
+    r = MsiGetPropertyA(hpkg, "UILevel", buf, &size);
     ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
-    ok( !lstrcmp(buf, "3"), "Expected \"3\", got \"%s\"\n", buf);
+    ok( !lstrcmpA(buf, "3"), "Expected \"3\", got \"%s\"\n", buf);
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "UILevel", buf, &size);
+    r = MsiGetPropertyA(hpkg, "UILevel", buf, &size);
     ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
-    ok( !lstrcmp(buf, "3"), "Expected \"3\", got \"%s\"\n", buf);
+    ok( !lstrcmpA(buf, "3"), "Expected \"3\", got \"%s\"\n", buf);
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "DATABASE", buf, &size);
+    r = MsiGetPropertyA(hpkg, "DATABASE", buf, &size);
     ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
-    ok( !lstrcmp(buf, path), "Expected %s, got %s\n", path, buf);
+    ok( !lstrcmpA(buf, path), "Expected %s, got %s\n", path, buf);
 
-    RegOpenKey(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\MS Setup (ACME)\\User Info", &hkey1);
-    RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, access, &hkey2);
+    RegOpenKeyA(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\MS Setup (ACME)\\User Info", &hkey1);
+    RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, access, &hkey2);
 
     size = MAX_PATH;
     type = REG_SZ;
     *path = '\0';
-    if (RegQueryValueEx(hkey1, "DefName", NULL, &type, (LPBYTE)path, &size) != ERROR_SUCCESS)
+    if (RegQueryValueExA(hkey1, "DefName", NULL, &type, (LPBYTE)path, &size) != ERROR_SUCCESS)
     {
         size = MAX_PATH;
         type = REG_SZ;
-        RegQueryValueEx(hkey2, "RegisteredOwner", NULL, &type, (LPBYTE)path, &size);
+        RegQueryValueExA(hkey2, "RegisteredOwner", NULL, &type, (LPBYTE)path, &size);
     }
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "USERNAME", buf, &size);
+    r = MsiGetPropertyA(hpkg, "USERNAME", buf, &size);
     ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
-    ok( !lstrcmp(buf, path), "Expected %s, got %s\n", path, buf);
+    ok( !lstrcmpA(buf, path), "Expected %s, got %s\n", path, buf);
 
     size = MAX_PATH;
     type = REG_SZ;
     *path = '\0';
-    if (RegQueryValueEx(hkey1, "DefCompany", NULL, &type, (LPBYTE)path, &size) != ERROR_SUCCESS)
+    if (RegQueryValueExA(hkey1, "DefCompany", NULL, &type, (LPBYTE)path, &size) != ERROR_SUCCESS)
     {
         size = MAX_PATH;
         type = REG_SZ;
-        RegQueryValueEx(hkey2, "RegisteredOrganization", NULL, &type, (LPBYTE)path, &size);
+        RegQueryValueExA(hkey2, "RegisteredOrganization", NULL, &type, (LPBYTE)path, &size);
     }
 
     if (*path)
     {
         buf[0] = 0;
         size = MAX_PATH;
-        r = MsiGetProperty(hpkg, "COMPANYNAME", buf, &size);
+        r = MsiGetPropertyA(hpkg, "COMPANYNAME", buf, &size);
         ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
-        ok( !lstrcmp(buf, path), "Expected %s, got %s\n", path, buf);
+        ok( !lstrcmpA(buf, path), "Expected %s, got %s\n", path, buf);
     }
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "VersionDatabase", buf, &size);
+    r = MsiGetPropertyA(hpkg, "VersionDatabase", buf, &size);
     ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
     trace("VersionDatabase = %s\n", buf);
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "VersionMsi", buf, &size);
+    r = MsiGetPropertyA(hpkg, "VersionMsi", buf, &size);
     ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
     trace("VersionMsi = %s\n", buf);
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "Date", buf, &size);
+    r = MsiGetPropertyA(hpkg, "Date", buf, &size);
     ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
     trace("Date = %s\n", buf);
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "Time", buf, &size);
+    r = MsiGetPropertyA(hpkg, "Time", buf, &size);
     ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
     trace("Time = %s\n", buf);
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "PackageCode", buf, &size);
+    r = MsiGetPropertyA(hpkg, "PackageCode", buf, &size);
     ok( r == ERROR_SUCCESS, "failed to get property: %d\n", r);
     trace("PackageCode = %s\n", buf);
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "ComputerName", buf, &size);
+    r = MsiGetPropertyA(hpkg, "ComputerName", buf, &size);
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
     trace("ComputerName = %s\n", buf);
 
@@ -5660,21 +5699,21 @@ static void test_installprops(void)
 
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "UserLanguageID", buf, &size);
+    r = MsiGetPropertyA(hpkg, "UserLanguageID", buf, &size);
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
     ok( !lstrcmpA(buf, path), "Expected \"%s\", got \"%s\"\n", path, buf);
 
     res = GetSystemMetrics(SM_CXSCREEN);
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "ScreenX", buf, &size);
+    r = MsiGetPropertyA(hpkg, "ScreenX", buf, &size);
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
     ok(atol(buf) == res, "Expected %d, got %ld\n", res, atol(buf));
 
     res = GetSystemMetrics(SM_CYSCREEN);
     buf[0] = 0;
     size = MAX_PATH;
-    r = MsiGetProperty(hpkg, "ScreenY", buf, &size);
+    r = MsiGetPropertyA(hpkg, "ScreenY", buf, &size);
     ok( r == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %d\n", r);
     ok(atol(buf) == res, "Expected %d, got %ld\n", res, atol(buf));
 
@@ -5685,25 +5724,25 @@ static void test_installprops(void)
         {
             buf[0] = 0;
             size = MAX_PATH;
-            r = MsiGetProperty(hpkg, "Intel", buf, &size);
+            r = MsiGetPropertyA(hpkg, "Intel", buf, &size);
             ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
             ok(buf[0], "property not set\n");
 
             buf[0] = 0;
             size = MAX_PATH;
-            r = MsiGetProperty(hpkg, "MsiAMD64", buf, &size);
+            r = MsiGetPropertyA(hpkg, "MsiAMD64", buf, &size);
             ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
             ok(buf[0], "property not set\n");
 
             buf[0] = 0;
             size = MAX_PATH;
-            r = MsiGetProperty(hpkg, "Msix64", buf, &size);
+            r = MsiGetPropertyA(hpkg, "Msix64", buf, &size);
             ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
             ok(buf[0], "property not set\n");
 
             buf[0] = 0;
             size = MAX_PATH;
-            r = MsiGetProperty(hpkg, "System64Folder", buf, &size);
+            r = MsiGetPropertyA(hpkg, "System64Folder", buf, &size);
             ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
             GetSystemDirectoryA(path, MAX_PATH);
             if (size) buf[size - 1] = 0;
@@ -5711,7 +5750,7 @@ static void test_installprops(void)
 
             buf[0] = 0;
             size = MAX_PATH;
-            r = MsiGetProperty(hpkg, "SystemFolder", buf, &size);
+            r = MsiGetPropertyA(hpkg, "SystemFolder", buf, &size);
             ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
             pGetSystemWow64DirectoryA(path, MAX_PATH);
             if (size) buf[size - 1] = 0;
@@ -5719,7 +5758,7 @@ static void test_installprops(void)
 
             buf[0] = 0;
             size = MAX_PATH;
-            r = MsiGetProperty(hpkg, "ProgramFiles64Folder", buf, &size);
+            r = MsiGetPropertyA(hpkg, "ProgramFiles64Folder", buf, &size);
             ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
             pSHGetFolderPathA(NULL, CSIDL_PROGRAM_FILES, NULL, 0, path);
             if (size) buf[size - 1] = 0;
@@ -5727,7 +5766,7 @@ static void test_installprops(void)
 
             buf[0] = 0;
             size = MAX_PATH;
-            r = MsiGetProperty(hpkg, "ProgramFilesFolder", buf, &size);
+            r = MsiGetPropertyA(hpkg, "ProgramFilesFolder", buf, &size);
             ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
             pSHGetFolderPathA(NULL, CSIDL_PROGRAM_FILESX86, NULL, 0, path);
             if (size) buf[size - 1] = 0;
@@ -5735,7 +5774,7 @@ static void test_installprops(void)
 
             buf[0] = 0;
             size = MAX_PATH;
-            r = MsiGetProperty(hpkg, "CommonFiles64Folder", buf, &size);
+            r = MsiGetPropertyA(hpkg, "CommonFiles64Folder", buf, &size);
             ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
             pSHGetFolderPathA(NULL, CSIDL_PROGRAM_FILES_COMMON, NULL, 0, path);
             if (size) buf[size - 1] = 0;
@@ -5743,7 +5782,7 @@ static void test_installprops(void)
 
             buf[0] = 0;
             size = MAX_PATH;
-            r = MsiGetProperty(hpkg, "CommonFilesFolder", buf, &size);
+            r = MsiGetPropertyA(hpkg, "CommonFilesFolder", buf, &size);
             ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
             pSHGetFolderPathA(NULL, CSIDL_PROGRAM_FILES_COMMONX86, NULL, 0, path);
             if (size) buf[size - 1] = 0;
@@ -5751,7 +5790,7 @@ static void test_installprops(void)
 
             buf[0] = 0;
             size = MAX_PATH;
-            r = MsiGetProperty(hpkg, "VersionNT64", buf, &size);
+            r = MsiGetPropertyA(hpkg, "VersionNT64", buf, &size);
             ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
             ok(buf[0], "property not set\n");
         }
@@ -5761,31 +5800,31 @@ static void test_installprops(void)
             {
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "Intel", buf, &size);
+                r = MsiGetPropertyA(hpkg, "Intel", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(buf[0], "property not set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "MsiAMD64", buf, &size);
+                r = MsiGetPropertyA(hpkg, "MsiAMD64", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(!buf[0], "property set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "Msix64", buf, &size);
+                r = MsiGetPropertyA(hpkg, "Msix64", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(!buf[0], "property set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "System64Folder", buf, &size);
+                r = MsiGetPropertyA(hpkg, "System64Folder", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(!buf[0], "property set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "SystemFolder", buf, &size);
+                r = MsiGetPropertyA(hpkg, "SystemFolder", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 GetSystemDirectoryA(path, MAX_PATH);
                 if (size) buf[size - 1] = 0;
@@ -5793,13 +5832,13 @@ static void test_installprops(void)
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "ProgramFiles64Folder", buf, &size);
+                r = MsiGetPropertyA(hpkg, "ProgramFiles64Folder", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(!buf[0], "property set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "ProgramFilesFolder", buf, &size);
+                r = MsiGetPropertyA(hpkg, "ProgramFilesFolder", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 pSHGetFolderPathA(NULL, CSIDL_PROGRAM_FILES, NULL, 0, path);
                 if (size) buf[size - 1] = 0;
@@ -5807,13 +5846,13 @@ static void test_installprops(void)
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "CommonFiles64Folder", buf, &size);
+                r = MsiGetPropertyA(hpkg, "CommonFiles64Folder", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(!buf[0], "property set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "CommonFilesFolder", buf, &size);
+                r = MsiGetPropertyA(hpkg, "CommonFilesFolder", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 pSHGetFolderPathA(NULL, CSIDL_PROGRAM_FILES_COMMON, NULL, 0, path);
                 if (size) buf[size - 1] = 0;
@@ -5821,7 +5860,7 @@ static void test_installprops(void)
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "VersionNT64", buf, &size);
+                r = MsiGetPropertyA(hpkg, "VersionNT64", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(!buf[0], "property set\n");
             }
@@ -5829,25 +5868,25 @@ static void test_installprops(void)
             {
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "Intel", buf, &size);
+                r = MsiGetPropertyA(hpkg, "Intel", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(buf[0], "property not set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "MsiAMD64", buf, &size);
+                r = MsiGetPropertyA(hpkg, "MsiAMD64", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(buf[0], "property not set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "Msix64", buf, &size);
+                r = MsiGetPropertyA(hpkg, "Msix64", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(buf[0], "property not set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "System64Folder", buf, &size);
+                r = MsiGetPropertyA(hpkg, "System64Folder", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 GetSystemDirectoryA(path, MAX_PATH);
                 if (size) buf[size - 1] = 0;
@@ -5855,7 +5894,7 @@ static void test_installprops(void)
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "SystemFolder", buf, &size);
+                r = MsiGetPropertyA(hpkg, "SystemFolder", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 pGetSystemWow64DirectoryA(path, MAX_PATH);
                 if (size) buf[size - 1] = 0;
@@ -5863,13 +5902,13 @@ static void test_installprops(void)
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "ProgramFilesFolder64", buf, &size);
+                r = MsiGetPropertyA(hpkg, "ProgramFilesFolder64", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(!buf[0], "property set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "ProgramFilesFolder", buf, &size);
+                r = MsiGetPropertyA(hpkg, "ProgramFilesFolder", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 pSHGetFolderPathA(NULL, CSIDL_PROGRAM_FILESX86, NULL, 0, path);
                 if (size) buf[size - 1] = 0;
@@ -5877,13 +5916,13 @@ static void test_installprops(void)
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "CommonFilesFolder64", buf, &size);
+                r = MsiGetPropertyA(hpkg, "CommonFilesFolder64", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(!buf[0], "property set\n");
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "CommonFilesFolder", buf, &size);
+                r = MsiGetPropertyA(hpkg, "CommonFilesFolder", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 pSHGetFolderPathA(NULL, CSIDL_PROGRAM_FILES_COMMONX86, NULL, 0, path);
                 if (size) buf[size - 1] = 0;
@@ -5891,7 +5930,7 @@ static void test_installprops(void)
 
                 buf[0] = 0;
                 size = MAX_PATH;
-                r = MsiGetProperty(hpkg, "VersionNT64", buf, &size);
+                r = MsiGetPropertyA(hpkg, "VersionNT64", buf, &size);
                 ok(r == ERROR_SUCCESS, "failed to get property: %d\n", r);
                 ok(buf[0], "property not set\n");
             }
@@ -5901,7 +5940,7 @@ static void test_installprops(void)
     CloseHandle(hkey1);
     CloseHandle(hkey2);
     MsiCloseHandle(hpkg);
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
     MsiSetInternalUI(uilevel, NULL);
 }
 
@@ -5930,31 +5969,31 @@ static void test_launchconditions(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok( r == ERROR_SUCCESS, "failed to create package %u\n", r );
 
     MsiCloseHandle( hdb );
 
-    r = MsiSetProperty( hpkg, "X", "1" );
+    r = MsiSetPropertyA( hpkg, "X", "1" );
     ok( r == ERROR_SUCCESS, "failed to set property\n" );
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
     /* invalid conditions are ignored */
-    r = MsiDoAction( hpkg, "LaunchConditions" );
+    r = MsiDoActionA( hpkg, "LaunchConditions" );
     ok( r == ERROR_SUCCESS, "cost init failed\n" );
 
     /* verify LaunchConditions still does some verification */
-    r = MsiSetProperty( hpkg, "X", "2" );
+    r = MsiSetPropertyA( hpkg, "X", "2" );
     ok( r == ERROR_SUCCESS, "failed to set property\n" );
 
-    r = MsiDoAction( hpkg, "LaunchConditions" );
+    r = MsiDoActionA( hpkg, "LaunchConditions" );
     ok( r == ERROR_INSTALL_FAILURE, "Expected ERROR_INSTALL_FAILURE, got %d\n", r );
 
     MsiCloseHandle( hpkg );
-    DeleteFile( msifile );
+    DeleteFileA( msifile );
 }
 
 static void test_ccpsearch(void)
@@ -5995,7 +6034,7 @@ static void test_ccpsearch(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok(r == ERROR_SUCCESS, "failed to create package %u\n", r);
@@ -6004,7 +6043,7 @@ static void test_ccpsearch(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction(hpkg, "CCPSearch");
+    r = MsiDoActionA(hpkg, "CCPSearch");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiGetPropertyA(hpkg, "CCP_Success", prop, &size);
@@ -6159,7 +6198,7 @@ static void test_complocator(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok(r == ERROR_SUCCESS, "failed to create package %u\n", r);
@@ -6202,7 +6241,7 @@ static void test_complocator(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction(hpkg, "AppSearch");
+    r = MsiDoActionA(hpkg, "AppSearch");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     size = MAX_PATH;
@@ -6398,7 +6437,7 @@ static void test_MsiGetSourcePath(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok(r == ERROR_SUCCESS, "failed to create package %u\n", r);
@@ -6408,7 +6447,7 @@ static void test_MsiGetSourcePath(void)
     /* invalid database handle */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(-1, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(-1, "TARGETDIR", path, &size);
     ok(r == ERROR_INVALID_HANDLE,
        "Expected ERROR_INVALID_HANDLE, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
@@ -6418,7 +6457,7 @@ static void test_MsiGetSourcePath(void)
     /* NULL szFolder */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, NULL, path, &size);
+    r = MsiGetSourcePathA(hpkg, NULL, path, &size);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
@@ -6428,7 +6467,7 @@ static void test_MsiGetSourcePath(void)
     /* empty szFolder */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "", path, &size);
+    r = MsiGetSourcePathA(hpkg, "", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6437,7 +6476,7 @@ static void test_MsiGetSourcePath(void)
     /* try TARGETDIR */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "TARGETDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6445,14 +6484,14 @@ static void test_MsiGetSourcePath(void)
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -6460,7 +6499,7 @@ static void test_MsiGetSourcePath(void)
     /* try SourceDir */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6469,7 +6508,7 @@ static void test_MsiGetSourcePath(void)
     /* try SOURCEDIR */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6478,14 +6517,14 @@ static void test_MsiGetSourcePath(void)
     /* source path does not exist, but the property exists */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -6493,7 +6532,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6502,7 +6541,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir2 */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6510,13 +6549,13 @@ static void test_MsiGetSourcePath(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction(hpkg, "CostInitialize");
+    r = MsiDoActionA(hpkg, "CostInitialize");
     ok(r == ERROR_SUCCESS, "cost init failed\n");
 
     /* try TARGETDIR after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "TARGETDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6524,7 +6563,7 @@ static void test_MsiGetSourcePath(void)
     /* try SourceDir after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6532,7 +6571,7 @@ static void test_MsiGetSourcePath(void)
     /* try SOURCEDIR after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6541,14 +6580,14 @@ static void test_MsiGetSourcePath(void)
     /* source path does not exist, but the property exists */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6556,7 +6595,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -6564,18 +6603,18 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir2 after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, sub2), "Expected \"%s\", got \"%s\"\n", sub2, path);
     ok(size == lstrlenA(sub2), "Expected %d, got %d\n", lstrlenA(sub2), size);
 
-    r = MsiDoAction(hpkg, "ResolveSource");
+    r = MsiDoActionA(hpkg, "ResolveSource");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* try TARGETDIR after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "TARGETDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6583,7 +6622,7 @@ static void test_MsiGetSourcePath(void)
     /* try SourceDir after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6591,7 +6630,7 @@ static void test_MsiGetSourcePath(void)
     /* try SOURCEDIR after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6600,14 +6639,14 @@ static void test_MsiGetSourcePath(void)
     /* source path does not exist, but the property exists */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6615,7 +6654,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -6623,18 +6662,18 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir2 after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, sub2), "Expected \"%s\", got \"%s\"\n", sub2, path);
     ok(size == lstrlenA(sub2), "Expected %d, got %d\n", lstrlenA(sub2), size);
 
-    r = MsiDoAction(hpkg, "FileCost");
+    r = MsiDoActionA(hpkg, "FileCost");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* try TARGETDIR after FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "TARGETDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6642,7 +6681,7 @@ static void test_MsiGetSourcePath(void)
     /* try SourceDir after FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6650,7 +6689,7 @@ static void test_MsiGetSourcePath(void)
     /* try SOURCEDIR after FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6659,14 +6698,14 @@ static void test_MsiGetSourcePath(void)
     /* source path does not exist, but the property exists */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6674,7 +6713,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir after FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -6682,18 +6721,18 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir2 after FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, sub2), "Expected \"%s\", got \"%s\"\n", sub2, path);
     ok(size == lstrlenA(sub2), "Expected %d, got %d\n", lstrlenA(sub2), size);
 
-    r = MsiDoAction(hpkg, "CostFinalize");
+    r = MsiDoActionA(hpkg, "CostFinalize");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* try TARGETDIR after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "TARGETDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6701,7 +6740,7 @@ static void test_MsiGetSourcePath(void)
     /* try SourceDir after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6709,7 +6748,7 @@ static void test_MsiGetSourcePath(void)
     /* try SOURCEDIR after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6718,14 +6757,14 @@ static void test_MsiGetSourcePath(void)
     /* source path does not exist, but the property exists */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6733,7 +6772,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -6741,7 +6780,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir2 after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, sub2), "Expected \"%s\", got \"%s\"\n", sub2, path);
     ok(size == lstrlenA(sub2), "Expected %d, got %d\n", lstrlenA(sub2), size);
@@ -6749,7 +6788,7 @@ static void test_MsiGetSourcePath(void)
     /* nonexistent directory */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "IDontExist", path, &size);
+    r = MsiGetSourcePathA(hpkg, "IDontExist", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6757,13 +6796,13 @@ static void test_MsiGetSourcePath(void)
 
     /* NULL szPathBuf */
     size = MAX_PATH;
-    r = MsiGetSourcePath(hpkg, "SourceDir", NULL, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", NULL, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     /* NULL pcchPathBuf */
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, NULL);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, NULL);
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
@@ -6772,7 +6811,7 @@ static void test_MsiGetSourcePath(void)
     /* pcchPathBuf is 0 */
     size = 0;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6781,7 +6820,7 @@ static void test_MsiGetSourcePath(void)
     /* pcchPathBuf does not have room for NULL terminator */
     size = lstrlenA(cwd);
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(!strncmp(path, cwd, lstrlenA(cwd) - 1),
        "Expected path with no backslash, got \"%s\"\n", path);
@@ -6790,31 +6829,31 @@ static void test_MsiGetSourcePath(void)
     /* pcchPathBuf has room for NULL terminator */
     size = lstrlenA(cwd) + 1;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     /* remove property */
-    r = MsiSetProperty(hpkg, "SourceDir", NULL);
+    r = MsiSetPropertyA(hpkg, "SourceDir", NULL);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* try SourceDir again */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     /* set property to a valid directory */
-    r = MsiSetProperty(hpkg, "SOURCEDIR", cwd);
+    r = MsiSetPropertyA(hpkg, "SOURCEDIR", cwd);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* try SOURCEDIR again */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6824,7 +6863,7 @@ static void test_MsiGetSourcePath(void)
 
     /* compressed source */
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_DIRECT, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_DIRECT, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     set_suminfo_prop(hdb, PID_WORDCOUNT, msidbSumInfoSourceTypeCompressed);
@@ -6835,7 +6874,7 @@ static void test_MsiGetSourcePath(void)
     /* try TARGETDIR */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "TARGETDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6844,7 +6883,7 @@ static void test_MsiGetSourcePath(void)
     /* try SourceDir */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6853,7 +6892,7 @@ static void test_MsiGetSourcePath(void)
     /* try SOURCEDIR */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6862,14 +6901,14 @@ static void test_MsiGetSourcePath(void)
     /* source path nor the property exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -6877,7 +6916,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -6886,19 +6925,19 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir2 */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
     ok(size == MAX_PATH, "Expected size to be unchanged, got %d\n", size);
 
-    r = MsiDoAction(hpkg, "CostInitialize");
+    r = MsiDoActionA(hpkg, "CostInitialize");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* try TARGETDIR after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "TARGETDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6906,7 +6945,7 @@ static void test_MsiGetSourcePath(void)
     /* try SourceDir after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6914,7 +6953,7 @@ static void test_MsiGetSourcePath(void)
     /* try SOURCEDIR after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     todo_wine
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6925,14 +6964,14 @@ static void test_MsiGetSourcePath(void)
     /* source path does not exist, but the property exists */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6940,7 +6979,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6948,18 +6987,18 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir2 after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
-    r = MsiDoAction(hpkg, "ResolveSource");
+    r = MsiDoActionA(hpkg, "ResolveSource");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* try TARGETDIR after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "TARGETDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6967,7 +7006,7 @@ static void test_MsiGetSourcePath(void)
     /* try SourceDir after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -6975,7 +7014,7 @@ static void test_MsiGetSourcePath(void)
     /* try SOURCEDIR after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     todo_wine
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -6986,14 +7025,14 @@ static void test_MsiGetSourcePath(void)
     /* source path and the property exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7001,7 +7040,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7009,18 +7048,18 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir2 after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
-    r = MsiDoAction(hpkg, "FileCost");
+    r = MsiDoActionA(hpkg, "FileCost");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* try TARGETDIR after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "TARGETDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7028,7 +7067,7 @@ static void test_MsiGetSourcePath(void)
     /* try SourceDir after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7036,7 +7075,7 @@ static void test_MsiGetSourcePath(void)
     /* try SOURCEDIR after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     todo_wine
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -7047,14 +7086,14 @@ static void test_MsiGetSourcePath(void)
     /* source path and the property exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7062,7 +7101,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7070,18 +7109,18 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir2 after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
-    r = MsiDoAction(hpkg, "CostFinalize");
+    r = MsiDoActionA(hpkg, "CostFinalize");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* try TARGETDIR after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "TARGETDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "TARGETDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7089,7 +7128,7 @@ static void test_MsiGetSourcePath(void)
     /* try SourceDir after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7097,7 +7136,7 @@ static void test_MsiGetSourcePath(void)
     /* try SOURCEDIR after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     todo_wine
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -7108,14 +7147,14 @@ static void test_MsiGetSourcePath(void)
     /* source path and the property exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7123,7 +7162,7 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7131,13 +7170,13 @@ static void test_MsiGetSourcePath(void)
     /* try SubDir2 after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
 
     MsiCloseHandle(hpkg);
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 }
 
 static void test_shortlongsource(void)
@@ -7199,7 +7238,7 @@ static void test_shortlongsource(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok(r == ERROR_SUCCESS, "failed to create package %u\n", r);
@@ -7211,25 +7250,25 @@ static void test_shortlongsource(void)
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction(hpkg, "CostInitialize");
+    r = MsiDoActionA(hpkg, "CostInitialize");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
-    CreateDirectory("five", NULL);
-    CreateDirectory("eight", NULL);
+    CreateDirectoryA("five", NULL);
+    CreateDirectoryA("eight", NULL);
 
-    r = MsiDoAction(hpkg, "FileCost");
+    r = MsiDoActionA(hpkg, "FileCost");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
-    CreateDirectory("nine", NULL);
-    CreateDirectory("twelve", NULL);
+    CreateDirectoryA("nine", NULL);
+    CreateDirectoryA("twelve", NULL);
 
-    r = MsiDoAction(hpkg, "CostFinalize");
+    r = MsiDoActionA(hpkg, "CostFinalize");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* neither short nor long source directories exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7239,7 +7278,7 @@ static void test_shortlongsource(void)
     /* short source directory exists */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7249,7 +7288,7 @@ static void test_shortlongsource(void)
     /* both short and long source directories exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7261,7 +7300,7 @@ static void test_shortlongsource(void)
     /* short dir exists before CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7273,7 +7312,7 @@ static void test_shortlongsource(void)
     /* long dir exists before CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir3", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir3", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7285,7 +7324,7 @@ static void test_shortlongsource(void)
     /* short dir exists before FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir4", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir4", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7297,7 +7336,7 @@ static void test_shortlongsource(void)
     /* long dir exists before FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir5", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir5", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7309,7 +7348,7 @@ static void test_shortlongsource(void)
     /* short dir exists before CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir6", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir6", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7321,7 +7360,7 @@ static void test_shortlongsource(void)
     /* long dir exists before CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir7", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir7", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7338,7 +7377,7 @@ static void test_shortlongsource(void)
 
     /* short file names */
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_DIRECT, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_DIRECT, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     set_suminfo_prop(hdb, PID_WORDCOUNT, msidbSumInfoSourceTypeSFN);
@@ -7351,19 +7390,19 @@ static void test_shortlongsource(void)
     CreateDirectoryA("one", NULL);
     CreateDirectoryA("four", NULL);
 
-    r = MsiDoAction(hpkg, "CostInitialize");
+    r = MsiDoActionA(hpkg, "CostInitialize");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
-    CreateDirectory("five", NULL);
-    CreateDirectory("eight", NULL);
+    CreateDirectoryA("five", NULL);
+    CreateDirectoryA("eight", NULL);
 
-    r = MsiDoAction(hpkg, "FileCost");
+    r = MsiDoActionA(hpkg, "FileCost");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
-    CreateDirectory("nine", NULL);
-    CreateDirectory("twelve", NULL);
+    CreateDirectoryA("nine", NULL);
+    CreateDirectoryA("twelve", NULL);
 
-    r = MsiDoAction(hpkg, "CostFinalize");
+    r = MsiDoActionA(hpkg, "CostFinalize");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     lstrcpyA(subsrc, cwd);
@@ -7373,7 +7412,7 @@ static void test_shortlongsource(void)
     /* neither short nor long source directories exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7383,7 +7422,7 @@ static void test_shortlongsource(void)
     /* short source directory exists */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7393,7 +7432,7 @@ static void test_shortlongsource(void)
     /* both short and long source directories exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7405,7 +7444,7 @@ static void test_shortlongsource(void)
     /* short dir exists before CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir2", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir2", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7417,7 +7456,7 @@ static void test_shortlongsource(void)
     /* long dir exists before CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir3", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir3", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7429,7 +7468,7 @@ static void test_shortlongsource(void)
     /* short dir exists before FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir4", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir4", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7441,7 +7480,7 @@ static void test_shortlongsource(void)
     /* long dir exists before FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir5", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir5", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7453,7 +7492,7 @@ static void test_shortlongsource(void)
     /* short dir exists before CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir6", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir6", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7465,7 +7504,7 @@ static void test_shortlongsource(void)
     /* long dir exists before CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SubDir7", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SubDir7", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, subsrc), "Expected \"%s\", got \"%s\"\n", subsrc, path);
     ok(size == lstrlenA(subsrc), "Expected %d, got %d\n", lstrlenA(subsrc), size);
@@ -7506,7 +7545,7 @@ static void test_sourcedir(void)
     ok(r == S_OK, "failed\n");
 
     sprintf(package, "#%u", hdb);
-    r = MsiOpenPackage(package, &hpkg);
+    r = MsiOpenPackageA(package, &hpkg);
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
@@ -7519,7 +7558,7 @@ static void test_sourcedir(void)
     /* SourceDir prop */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -7527,20 +7566,20 @@ static void test_sourcedir(void)
     /* SOURCEDIR prop */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
 
     MsiSetInternalUI(INSTALLUILEVEL_NONE, NULL);
 
-    r = MsiDoAction(hpkg, "CostInitialize");
+    r = MsiDoActionA(hpkg, "CostInitialize");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* SourceDir after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -7548,18 +7587,18 @@ static void test_sourcedir(void)
     /* SOURCEDIR after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
 
-    r = MsiDoAction(hpkg, "FileCost");
+    r = MsiDoActionA(hpkg, "FileCost");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* SourceDir after FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -7567,18 +7606,18 @@ static void test_sourcedir(void)
     /* SOURCEDIR after FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
 
-    r = MsiDoAction(hpkg, "CostFinalize");
+    r = MsiDoActionA(hpkg, "CostFinalize");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* SourceDir after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -7586,14 +7625,14 @@ static void test_sourcedir(void)
     /* SOURCEDIR after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"), "Expected \"kiwi\", got \"%s\"\n", path);
     ok(size == MAX_PATH, "Expected %d, got %d\n", MAX_PATH, size);
@@ -7601,20 +7640,20 @@ static void test_sourcedir(void)
     /* SOURCEDIR after calling MsiGetSourcePath */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     todo_wine {
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
     }
 
-    r = MsiDoAction(hpkg, "ResolveSource");
+    r = MsiDoActionA(hpkg, "ResolveSource");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* SourceDir after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7622,7 +7661,7 @@ static void test_sourcedir(void)
     /* SOURCEDIR after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7630,7 +7669,7 @@ static void test_sourcedir(void)
     /* random casing */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SoUrCeDiR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SoUrCeDiR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, ""), "Expected \"\", got \"%s\"\n", path);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -7639,7 +7678,7 @@ static void test_sourcedir(void)
 
     /* reset the package state */
     sprintf(package, "#%i", hdb);
-    r = MsiOpenPackage(package, &hpkg);
+    r = MsiOpenPackageA(package, &hpkg);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* test how MsiGetSourcePath affects the properties */
@@ -7647,7 +7686,7 @@ static void test_sourcedir(void)
     /* SourceDir prop */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     todo_wine
     {
@@ -7657,7 +7696,7 @@ static void test_sourcedir(void)
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -7666,7 +7705,7 @@ static void test_sourcedir(void)
     /* SourceDir after MsiGetSourcePath */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     todo_wine
     {
@@ -7677,7 +7716,7 @@ static void test_sourcedir(void)
     /* SOURCEDIR prop */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     todo_wine
     {
@@ -7687,7 +7726,7 @@ static void test_sourcedir(void)
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -7696,7 +7735,7 @@ static void test_sourcedir(void)
     /* SOURCEDIR prop after MsiGetSourcePath */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     todo_wine
     {
@@ -7704,13 +7743,13 @@ static void test_sourcedir(void)
         ok(size == 0, "Expected 0, got %d\n", size);
     }
 
-    r = MsiDoAction(hpkg, "CostInitialize");
+    r = MsiDoActionA(hpkg, "CostInitialize");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* SourceDir after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     todo_wine
     {
@@ -7720,7 +7759,7 @@ static void test_sourcedir(void)
 
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SourceDir", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7728,7 +7767,7 @@ static void test_sourcedir(void)
     /* SourceDir after MsiGetSourcePath */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7736,7 +7775,7 @@ static void test_sourcedir(void)
     /* SOURCEDIR after CostInitialize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7744,19 +7783,19 @@ static void test_sourcedir(void)
     /* SOURCEDIR source path still does not exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
     ok(size == MAX_PATH, "Expected size to be unchanged, got %d\n", size);
 
-    r = MsiDoAction(hpkg, "FileCost");
+    r = MsiDoActionA(hpkg, "FileCost");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* SourceDir after FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7764,7 +7803,7 @@ static void test_sourcedir(void)
     /* SOURCEDIR after FileCost */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7772,19 +7811,19 @@ static void test_sourcedir(void)
     /* SOURCEDIR source path still does not exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
     ok(size == MAX_PATH, "Expected size to be unchanged, got %d\n", size);
 
-    r = MsiDoAction(hpkg, "CostFinalize");
+    r = MsiDoActionA(hpkg, "CostFinalize");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* SourceDir after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7792,7 +7831,7 @@ static void test_sourcedir(void)
     /* SOURCEDIR after CostFinalize */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7800,19 +7839,19 @@ static void test_sourcedir(void)
     /* SOURCEDIR source path still does not exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
     ok(size == MAX_PATH, "Expected size to be unchanged, got %d\n", size);
 
-    r = MsiDoAction(hpkg, "ResolveSource");
+    r = MsiDoActionA(hpkg, "ResolveSource");
     ok(r == ERROR_SUCCESS, "file cost failed\n");
 
     /* SourceDir after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SourceDir", path, &size);
+    r = MsiGetPropertyA(hpkg, "SourceDir", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7820,7 +7859,7 @@ static void test_sourcedir(void)
     /* SOURCEDIR after ResolveSource */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetProperty(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetPropertyA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(path, cwd), "Expected \"%s\", got \"%s\"\n", cwd, path);
     ok(size == lstrlenA(cwd), "Expected %d, got %d\n", lstrlenA(cwd), size);
@@ -7828,7 +7867,7 @@ static void test_sourcedir(void)
     /* SOURCEDIR source path still does not exist */
     size = MAX_PATH;
     lstrcpyA(path, "kiwi");
-    r = MsiGetSourcePath(hpkg, "SOURCEDIR", path, &size);
+    r = MsiGetSourcePathA(hpkg, "SOURCEDIR", path, &size);
     ok(r == ERROR_DIRECTORY, "Expected ERROR_DIRECTORY, got %d\n", r);
     ok(!lstrcmpA(path, "kiwi"),
        "Expected path to be unchanged, got \"%s\"\n", path);
@@ -7958,7 +7997,7 @@ static void test_access(void)
     MSIHANDLE hdb;
     UINT r;
 
-    r = MsiOpenDatabaseA(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     test_file_access(msifile, create);
@@ -7972,7 +8011,7 @@ static void test_access(void)
     test_file_access(msifile, create_close);
     DeleteFileA(msifile);
 
-    r = MsiOpenDatabaseA(msifile, MSIDBOPEN_CREATEDIRECT, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATEDIRECT, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     test_file_access(msifile, create);
@@ -8013,7 +8052,7 @@ static void test_emptypackage(void)
         ok(hdb != 0, "Expected a valid database handle\n");
     }
 
-    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `_Tables`", &hview);
+    r = MsiDatabaseOpenViewA(hdb, "SELECT * FROM `_Tables`", &hview);
     todo_wine
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -8032,7 +8071,7 @@ static void test_emptypackage(void)
 
     buffer[0] = 0;
     size = MAX_PATH;
-    r = MsiRecordGetString(hrec, 1, buffer, &size);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &size);
     todo_wine
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -8049,7 +8088,7 @@ static void test_emptypackage(void)
     }
 
     size = MAX_PATH;
-    r = MsiRecordGetString(hrec, 1, buffer, &size);
+    r = MsiRecordGetStringA(hrec, 1, buffer, &size);
     todo_wine
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -8068,7 +8107,7 @@ static void test_emptypackage(void)
            "Expected MSICONDITION_FALSE, got %d\n", condition);
     }
 
-    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `_Property`", &hview);
+    r = MsiDatabaseOpenViewA(hdb, "SELECT * FROM `_Property`", &hview);
     todo_wine
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -8097,7 +8136,7 @@ static void test_emptypackage(void)
            "Expected MSICONDITION_FALSE, got %d\n", condition);
     }
 
-    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `#_FolderCache`", &hview);
+    r = MsiDatabaseOpenViewA(hdb, "SELECT * FROM `#_FolderCache`", &hview);
     todo_wine
     {
         ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -8119,14 +8158,14 @@ static void test_emptypackage(void)
     MsiViewClose(hview);
     MsiCloseHandle(hview);
 
-    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `_Streams`", &hview);
+    r = MsiDatabaseOpenViewA(hdb, "SELECT * FROM `_Streams`", &hview);
     todo_wine
     {
         ok(r == ERROR_BAD_QUERY_SYNTAX,
            "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
     }
 
-    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `_Storages`", &hview);
+    r = MsiDatabaseOpenViewA(hdb, "SELECT * FROM `_Storages`", &hview);
     todo_wine
     {
         ok(r == ERROR_BAD_QUERY_SYNTAX,
@@ -8175,7 +8214,7 @@ static void test_MsiGetProductProperty(void)
     if (is_wow64)
         access |= KEY_WOW64_64KEY;
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiDatabaseCommit(hdb);
@@ -8217,7 +8256,7 @@ static void test_MsiGetProductProperty(void)
     if (res == ERROR_ACCESS_DENIED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
@@ -8392,7 +8431,7 @@ static void test_MsiSetProperty(void)
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
-        DeleteFile(msifile);
+        DeleteFileA(msifile);
         return;
     }
     ok(r == ERROR_SUCCESS, "Expected a valid package %u\n", r);
@@ -8497,7 +8536,7 @@ static void test_MsiSetProperty(void)
 
 static void test_MsiApplyMultiplePatches(void)
 {
-    UINT r, type = GetDriveType(NULL);
+    UINT r, type = GetDriveTypeW(NULL);
 
     if (!pMsiApplyMultiplePatchesA) {
         win_skip("MsiApplyMultiplePatchesA not found\n");
@@ -8548,10 +8587,10 @@ static void test_MsiApplyPatch(void)
 {
     UINT r;
 
-    r = MsiApplyPatch(NULL, NULL, INSTALLTYPE_DEFAULT, NULL);
+    r = MsiApplyPatchA(NULL, NULL, INSTALLTYPE_DEFAULT, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %u\n", r);
 
-    r = MsiApplyPatch("", NULL, INSTALLTYPE_DEFAULT, NULL);
+    r = MsiApplyPatchA("", NULL, INSTALLTYPE_DEFAULT, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %u\n", r);
 }
 
@@ -8682,17 +8721,17 @@ static void test_MsiEnumComponentCosts(void)
 
     MsiSetInternalUI( INSTALLUILEVEL_NONE, NULL );
 
-    r = MsiDoAction( hpkg, "CostInitialize" );
+    r = MsiDoActionA( hpkg, "CostInitialize" );
     ok( r == ERROR_SUCCESS, "CostInitialize failed %u\n", r );
 
-    r = MsiDoAction( hpkg, "FileCost" );
+    r = MsiDoActionA( hpkg, "FileCost" );
     ok( r == ERROR_SUCCESS, "FileCost failed %u\n", r );
 
     len = sizeof(drive);
     r = MsiEnumComponentCostsA( hpkg, "one", 0, INSTALLSTATE_LOCAL, drive, &len, &cost, &temp );
     ok( r == ERROR_FUNCTION_NOT_CALLED, "Expected ERROR_FUNCTION_NOT_CALLED, got %u\n", r );
 
-    r = MsiDoAction( hpkg, "CostFinalize" );
+    r = MsiDoActionA( hpkg, "CostFinalize" );
     ok( r == ERROR_SUCCESS, "CostFinalize failed %u\n", r );
 
     /* contrary to what msdn says InstallValidate must be called too */
@@ -8700,7 +8739,7 @@ static void test_MsiEnumComponentCosts(void)
     r = MsiEnumComponentCostsA( hpkg, "one", 0, INSTALLSTATE_LOCAL, drive, &len, &cost, &temp );
     todo_wine ok( r == ERROR_FUNCTION_NOT_CALLED, "Expected ERROR_FUNCTION_NOT_CALLED, got %u\n", r );
 
-    r = MsiDoAction( hpkg, "InstallValidate" );
+    r = MsiDoActionA( hpkg, "InstallValidate" );
     ok( r == ERROR_SUCCESS, "InstallValidate failed %u\n", r );
 
     len = 0;
@@ -8794,7 +8833,7 @@ static void test_MsiDatabaseCommit(void)
     ok( r == ERROR_SUCCESS, "can't create Property table %u\n", r );
 
     sprintf( package, "#%u", hdb );
-    r = MsiOpenPackage( package, &hpkg );
+    r = MsiOpenPackageA( package, &hpkg );
     if (r == ERROR_INSTALL_PACKAGE_REJECTED)
     {
         skip("Not enough rights to perform tests\n");
index 81ef949..c660e2c 100644 (file)
@@ -39,6 +39,10 @@ static BOOL (WINAPI *pOpenProcessToken)( HANDLE, DWORD, PHANDLE );
 
 static const char *msifile = "winetest-patch.msi";
 static const char *mspfile = "winetest-patch.msp";
+static const WCHAR msifileW[] =
+    {'w','i','n','e','t','e','s','t','-','p','a','t','c','h','.','m','s','i',0};
+static const WCHAR mspfileW[] =
+    {'w','i','n','e','t','e','s','t','-','p','a','t','c','h','.','m','s','p',0};
 
 static char CURR_DIR[MAX_PATH];
 static char PROG_FILES_DIR[MAX_PATH];
@@ -179,7 +183,7 @@ static BOOL get_program_files_dir( char *buf, char *buf2 )
     HKEY hkey;
     DWORD type, size;
 
-    if (RegOpenKey( HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion", &hkey ))
+    if (RegOpenKeyA( HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion", &hkey ))
         return FALSE;
 
     size = MAX_PATH;
@@ -255,42 +259,42 @@ static DWORD get_pf_file_size( const char *filename )
 static void write_file( const char *filename, const char *data, DWORD data_size )
 {
     DWORD size;
-    HANDLE file = CreateFile( filename, GENERIC_WRITE, 0, NULL,
-                              CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
+    HANDLE file = CreateFileA( filename, GENERIC_WRITE, 0, NULL,
+                               CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
     WriteFile( file, data, data_size, &size, NULL );
     CloseHandle( file );
 }
 
-static void set_suminfo( const char *filename )
+static void set_suminfo( const WCHAR *filename )
 {
     UINT r;
     MSIHANDLE hsi, hdb;
 
-    r = MsiOpenDatabaseA( filename, MSIDBOPEN_DIRECT, &hdb );
+    r = MsiOpenDatabaseW( filename, MSIDBOPEN_DIRECT, &hdb );
     ok( r == ERROR_SUCCESS, "failed to open database %u\n", r );
 
-    r = MsiGetSummaryInformation( hdb, NULL, 7, &hsi );
+    r = MsiGetSummaryInformationA( hdb, NULL, 7, &hsi );
     ok( r == ERROR_SUCCESS, "failed to open summaryinfo %u\n", r );
 
-    r = MsiSummaryInfoSetProperty( hsi, 2, VT_LPSTR, 0, NULL, "Installation Database" );
+    r = MsiSummaryInfoSetPropertyA( hsi, 2, VT_LPSTR, 0, NULL, "Installation Database" );
     ok( r == ERROR_SUCCESS, "failed to set summary info %u\n", r );
 
-    r = MsiSummaryInfoSetProperty( hsi, 3, VT_LPSTR, 0, NULL, "Installation Database" );
+    r = MsiSummaryInfoSetPropertyA( hsi, 3, VT_LPSTR, 0, NULL, "Installation Database" );
     ok( r == ERROR_SUCCESS, "failed to set summary info %u\n", r );
 
-    r = MsiSummaryInfoSetProperty( hsi, 4, VT_LPSTR, 0, NULL, "WineHQ" );
+    r = MsiSummaryInfoSetPropertyA( hsi, 4, VT_LPSTR, 0, NULL, "WineHQ" );
     ok( r == ERROR_SUCCESS, "failed to set summary info %u\n", r );
 
-    r = MsiSummaryInfoSetProperty( hsi, 7, VT_LPSTR, 0, NULL, ";1033" );
+    r = MsiSummaryInfoSetPropertyA( hsi, 7, VT_LPSTR, 0, NULL, ";1033" );
     ok( r == ERROR_SUCCESS, "failed to set summary info %u\n", r );
 
-    r = MsiSummaryInfoSetProperty( hsi, 9, VT_LPSTR, 0, NULL, "{E528DDD6-4801-4BEC-BBB6-C5EE0FD097E9}" );
+    r = MsiSummaryInfoSetPropertyA( hsi, 9, VT_LPSTR, 0, NULL, "{E528DDD6-4801-4BEC-BBB6-C5EE0FD097E9}" );
     ok( r == ERROR_SUCCESS, "failed to set summary info %u\n", r );
 
-    r = MsiSummaryInfoSetProperty( hsi, 14, VT_I4, 100, NULL, NULL );
+    r = MsiSummaryInfoSetPropertyA( hsi, 14, VT_I4, 100, NULL, NULL );
     ok( r == ERROR_SUCCESS, "failed to set summary info %u\n", r );
 
-    r = MsiSummaryInfoSetProperty( hsi, 15, VT_I4, 0, NULL, NULL );
+    r = MsiSummaryInfoSetPropertyA( hsi, 15, VT_I4, 0, NULL, NULL );
     ok( r == ERROR_SUCCESS, "failed to set summary info %u\n", r );
 
     r = MsiSummaryInfoPersist( hsi );
@@ -307,8 +311,14 @@ static void create_database( const char *filename, const struct msi_table *table
 {
     MSIHANDLE hdb;
     UINT r, i;
+    WCHAR *filenameW;
+    int len;
+
+    len = MultiByteToWideChar( CP_ACP, 0, filename, -1, NULL, 0 );
+    if (!(filenameW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return;
+    MultiByteToWideChar( CP_ACP, 0, filename, -1, filenameW, len );
 
-    r = MsiOpenDatabaseA( filename, MSIDBOPEN_CREATE, &hdb );
+    r = MsiOpenDatabaseW( filenameW, MSIDBOPEN_CREATE, &hdb );
     ok(r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r);
 
     /* import the tables into the database */
@@ -328,7 +338,8 @@ static void create_database( const char *filename, const struct msi_table *table
     ok(r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r);
 
     MsiCloseHandle( hdb );
-    set_suminfo( filename );
+    set_suminfo( filenameW );
+    HeapFree( GetProcessHeap(), 0, filenameW );
 }
 
 /* data for generating a patch */
@@ -707,6 +718,7 @@ static void test_simple_patch( void )
     DWORD size;
     char path[MAX_PATH], install_source[MAX_PATH], buffer[32];
     const char *query;
+    WCHAR pathW[MAX_PATH];
     MSIHANDLE hpackage, hdb, hview, hrec;
 
     if (!pMsiApplyPatchA)
@@ -754,7 +766,7 @@ static void test_simple_patch( void )
     ok( hdb, "failed to get database handle\n" );
 
     query = "SELECT * FROM `Property` where `Property` = 'PATCHNEWPACKAGECODE'";
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
     r = MsiViewExecute( hview, 0 );
@@ -769,7 +781,7 @@ static void test_simple_patch( void )
 
     query = "SELECT * FROM `Property` WHERE `Property` = 'PATCHNEWSUMMARYSUBJECT' "
             "AND `Value` = 'Installer Database'";
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
     r = MsiViewExecute( hview, 0 );
@@ -784,7 +796,7 @@ static void test_simple_patch( void )
 
     buffer[0] = 0;
     size = sizeof(buffer);
-    r = MsiGetProperty( hpackage, "PATCHNEWSUMMARYSUBJECT", buffer, &size );
+    r = MsiGetPropertyA( hpackage, "PATCHNEWSUMMARYSUBJECT", buffer, &size );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
     ok( !strcmp( buffer, "Installer Database" ), "expected \'Installer Database\', got \'%s\'\n", buffer );
 
@@ -812,7 +824,7 @@ static void test_simple_patch( void )
     ok( hdb, "failed to get database handle\n" );
 
     query = "SELECT * FROM `Property` where `Property` = 'PATCHNEWPACKAGECODE'";
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
     r = MsiViewExecute( hview, 0 );
@@ -827,7 +839,7 @@ static void test_simple_patch( void )
 
     query = "SELECT * FROM `Property` WHERE `Property` = 'PATCHNEWSUMMARYSUBJECT' "
             "AND `Value` = 'Installation Database'";
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
     r = MsiViewExecute( hview, 0 );
@@ -842,7 +854,7 @@ static void test_simple_patch( void )
 
     buffer[0] = 0;
     size = sizeof(buffer);
-    r = MsiGetProperty( hpackage, "PATCHNEWSUMMARYSUBJECT", buffer, &size );
+    r = MsiGetPropertyA( hpackage, "PATCHNEWSUMMARYSUBJECT", buffer, &size );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
     ok( !strcmp( buffer, "Installation Database" ), "expected \'Installation Database\', got \'%s\'\n", buffer );
 
@@ -855,10 +867,11 @@ static void test_simple_patch( void )
                             "LocalPackage", path, &size );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
-    r = MsiOpenDatabaseA( path, MSIDBOPEN_READONLY, &hdb );
+    MultiByteToWideChar( CP_ACP, 0, path, -1, pathW, MAX_PATH );
+    r = MsiOpenDatabaseW( pathW, MSIDBOPEN_READONLY, &hdb );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
     r = MsiViewExecute( hview, 0 );
@@ -897,25 +910,25 @@ static void test_MsiOpenDatabase( void )
     UINT r;
     MSIHANDLE hdb;
 
-    r = MsiOpenDatabase( mspfile, MSIDBOPEN_CREATE, &hdb );
+    r = MsiOpenDatabaseW( mspfileW, MSIDBOPEN_CREATE, &hdb );
     ok(r == ERROR_SUCCESS, "failed to open database %u\n", r);
 
     r = MsiDatabaseCommit( hdb );
     ok(r == ERROR_SUCCESS, "failed to commit database %u\n", r);
     MsiCloseHandle( hdb );
 
-    r = MsiOpenDatabase( mspfile, MSIDBOPEN_READONLY + MSIDBOPEN_PATCHFILE, &hdb );
+    r = MsiOpenDatabaseW( mspfileW, MSIDBOPEN_READONLY + MSIDBOPEN_PATCHFILE, &hdb );
     ok(r == ERROR_OPEN_FAILED, "expected ERROR_OPEN_FAILED, got %u\n", r);
     DeleteFileA( mspfile );
 
-    r = MsiOpenDatabase( mspfile, MSIDBOPEN_CREATE + MSIDBOPEN_PATCHFILE, &hdb );
+    r = MsiOpenDatabaseW( mspfileW, MSIDBOPEN_CREATE + MSIDBOPEN_PATCHFILE, &hdb );
     ok(r == ERROR_SUCCESS , "failed to open database %u\n", r);
 
     r = MsiDatabaseCommit( hdb );
     ok(r == ERROR_SUCCESS, "failed to commit database %u\n", r);
     MsiCloseHandle( hdb );
 
-    r = MsiOpenDatabase( mspfile, MSIDBOPEN_READONLY + MSIDBOPEN_PATCHFILE, &hdb );
+    r = MsiOpenDatabaseW( mspfileW, MSIDBOPEN_READONLY + MSIDBOPEN_PATCHFILE, &hdb );
     ok(r == ERROR_SUCCESS, "failed to open database %u\n", r);
     MsiCloseHandle( hdb );
     DeleteFileA( mspfile );
@@ -923,10 +936,10 @@ static void test_MsiOpenDatabase( void )
     create_database( msifile, tables, sizeof(tables) / sizeof(struct msi_table) );
     create_patch( mspfile );
 
-    r = MsiOpenDatabase( msifile, MSIDBOPEN_READONLY + MSIDBOPEN_PATCHFILE, &hdb );
+    r = MsiOpenDatabaseW( msifileW, MSIDBOPEN_READONLY + MSIDBOPEN_PATCHFILE, &hdb );
     ok(r == ERROR_OPEN_FAILED, "failed to open database %u\n", r );
 
-    r = MsiOpenDatabase( mspfile, MSIDBOPEN_READONLY + MSIDBOPEN_PATCHFILE, &hdb );
+    r = MsiOpenDatabaseW( mspfileW, MSIDBOPEN_READONLY + MSIDBOPEN_PATCHFILE, &hdb );
     ok(r == ERROR_SUCCESS, "failed to open database %u\n", r );
     MsiCloseHandle( hdb );
 
@@ -936,13 +949,13 @@ static void test_MsiOpenDatabase( void )
 
 static UINT find_entry( MSIHANDLE hdb, const char *table, const char *entry )
 {
-    static char fmt[] = "SELECT * FROM `%s` WHERE `Name` = '%s'";
+    static const char fmt[] = "SELECT * FROM `%s` WHERE `Name` = '%s'";
     char query[0x100];
     UINT r;
     MSIHANDLE hview, hrec;
 
     sprintf( query, fmt, table, entry );
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
     r = MsiViewExecute( hview, 0 );
@@ -961,7 +974,7 @@ static INT get_integer( MSIHANDLE hdb, UINT field, const char *query)
     INT ret = -1;
     MSIHANDLE hview, hrec;
 
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
     r = MsiViewExecute( hview, 0 );
@@ -992,7 +1005,7 @@ static char *get_string( MSIHANDLE hdb, UINT field, const char *query)
 
     ret[0] = '\0';
 
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
     r = MsiViewExecute( hview, 0 );
@@ -1060,7 +1073,7 @@ static void test_system_tables( void )
     ok( r == ERROR_SUCCESS, "failed to find entry %u\n", r );
 
     query = "SELECT * FROM `_Storages`";
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
     r = MsiViewExecute( hview, 0 );
@@ -1125,7 +1138,7 @@ static void test_system_tables( void )
     ok( r == ERROR_SUCCESS, "failed to find entry %u\n", r );
 
     query = "SELECT * FROM `_Storages`";
-    r = MsiDatabaseOpenView( hdb, query, &hview );
+    r = MsiDatabaseOpenViewA( hdb, query, &hview );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
     r = MsiViewExecute( hview, 0 );
@@ -1251,7 +1264,7 @@ static void test_patch_registration( void )
     r = pMsiGetPatchInfoExA( "{0F96CDC0-4CDF-4304-B283-7B9264889EF7}",
                              "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}",
                               NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_LOCALPACKAGE, buffer, &size );
+                              INSTALLPROPERTY_LOCALPACKAGEA, buffer, &size );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
     ok( buffer[0], "buffer empty\n" );
 
@@ -1260,7 +1273,7 @@ static void test_patch_registration( void )
     r = pMsiGetPatchInfoExA( "{0F96CDC0-4CDF-4304-B283-7B9264889EF7}",
                              "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}",
                              NULL, MSIINSTALLCONTEXT_MACHINE,
-                             INSTALLPROPERTY_LOCALPACKAGE, buffer, &size );
+                             INSTALLPROPERTY_LOCALPACKAGEA, buffer, &size );
     ok( r == ERROR_UNKNOWN_PRODUCT, "expected ERROR_UNKNOWN_PRODUCT, got %u\n", r );
 
     buffer[0] = 0;
@@ -1268,7 +1281,7 @@ static void test_patch_registration( void )
     r = pMsiGetPatchInfoExA( "{0F96CDC0-4CDF-4304-B283-7B9264889EF7}",
                              "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}",
                              NULL, MSIINSTALLCONTEXT_USERMANAGED,
-                             INSTALLPROPERTY_LOCALPACKAGE, buffer, &size );
+                             INSTALLPROPERTY_LOCALPACKAGEA, buffer, &size );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
     ok( !buffer[0], "got %s\n", buffer );
 
@@ -1297,7 +1310,7 @@ uninstall:
     r = pMsiGetPatchInfoExA( "{0F96CDC0-4CDF-4304-B283-7B9264889EF7}",
                              "{913B8D18-FBB6-4CAC-A239-C74C11E3FA74}",
                               NULL, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              INSTALLPROPERTY_LOCALPACKAGE, buffer, &size );
+                              INSTALLPROPERTY_LOCALPACKAGEA, buffer, &size );
     ok( r == ERROR_UNKNOWN_PRODUCT, "expected ERROR_UNKNOWN_PRODUCT, got %u\n", r );
 
 cleanup:
@@ -1315,7 +1328,7 @@ START_TEST(patch)
     init_function_pointers();
 
     GetCurrentDirectoryA( MAX_PATH, prev_path );
-    GetTempPath( MAX_PATH, temp_path );
+    GetTempPathA( MAX_PATH, temp_path );
     SetCurrentDirectoryA( temp_path );
 
     strcpy( CURR_DIR, temp_path );
index 2de43cb..38d0f76 100644 (file)
@@ -25,6 +25,8 @@
 #include "wine/test.h"
 
 static const char *msifile = "winetest-record.msi";
+static const WCHAR msifileW[] =
+    {'w','i','n','e','t','e','s','t','-','r','e','c','o','r','d','.','m','s','i',0};
 
 static BOOL create_temp_file(char *name)
 {
@@ -33,13 +35,13 @@ static BOOL create_temp_file(char *name)
     DWORD sz;
     HANDLE handle;
     
-    r = GetTempFileName(".", "msitest",0,name);
+    r = GetTempFileNameA(".", "msitest",0,name);
     if(!r)
         return r;
-    handle = CreateFile(name, GENERIC_READ|GENERIC_WRITE, 
+    handle = CreateFileA(name, GENERIC_READ|GENERIC_WRITE,
         0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     if(handle==INVALID_HANDLE_VALUE)
-        return 0;
+        return FALSE;
     for(i=0; i<26; i++)
         buffer[i]=i+'a';
     r = WriteFile(handle,buffer,sizeof buffer,&sz,NULL);
@@ -99,7 +101,7 @@ static void test_msirecord(void)
     ok(r==0, "size of null record is 0\n");
     sz = sizeof buf;
     strcpy(buf,"x");
-    r = MsiRecordGetString(h, 0, buf, &sz);
+    r = MsiRecordGetStringA(h, 0, buf, &sz);
     ok(r==ERROR_SUCCESS, "failed to get null string\n");
     ok(sz==0, "null string too long\n");
     ok(buf[0]==0, "null string not set\n");
@@ -123,7 +125,7 @@ static void test_msirecord(void)
     ok(r == 1, "failed to get integer\n");
 
     /* same record, but add a null or empty string to it */
-    r = MsiRecordSetString(h, 0, NULL);
+    r = MsiRecordSetStringA(h, 0, NULL);
     ok(r == ERROR_SUCCESS, "Failed to set null string at 0\n");
     r = MsiRecordIsNull(h, 0);
     ok(r == TRUE, "null string not null field\n");
@@ -141,7 +143,7 @@ static void test_msirecord(void)
     ok(r == ERROR_SUCCESS, "Failed to get string at 0\n");
     ok(bufW[0] == 0, "MsiRecordGetStringW returned the wrong string\n");
     ok(sz == 0, "MsiRecordGetStringW returned the wrong length\n");
-    r = MsiRecordSetString(h, 0, "");
+    r = MsiRecordSetStringA(h, 0, "");
     ok(r == ERROR_SUCCESS, "Failed to set empty string at 0\n");
     r = MsiRecordIsNull(h, 0);
     ok(r == TRUE, "null string not null field\n");
@@ -161,7 +163,7 @@ static void test_msirecord(void)
     ok(sz == 0, "MsiRecordGetStringW returned the wrong length\n");
 
     /* same record, but add a string to it */
-    r = MsiRecordSetString(h,0,str);
+    r = MsiRecordSetStringA(h,0,str);
     ok(r == ERROR_SUCCESS, "Failed to set string at 0\n");
     r = MsiRecordGetInteger(h, 0);
     ok(r == MSI_NULL_INTEGER, "should get invalid integer\n");
@@ -169,53 +171,53 @@ static void test_msirecord(void)
     ok(r==sizeof str-1, "size of string record is strlen\n");
     buf[0]=0;
     sz = sizeof buf;
-    r = MsiRecordGetString(h,0,buf,&sz);
+    r = MsiRecordGetStringA(h,0,buf,&sz);
     ok(r == ERROR_SUCCESS, "Failed to get string at 0\n");
-    ok(0==strcmp(buf,str), "MsiRecordGetString returned the wrong string\n");
-    ok(sz == sizeof str-1, "MsiRecordGetString returned the wrong length\n");
+    ok(0==strcmp(buf,str), "MsiRecordGetStringA returned the wrong string\n");
+    ok(sz == sizeof str-1, "MsiRecordGetStringA returned the wrong length\n");
     buf[0]=0;
     sz = sizeof str - 2;
-    r = MsiRecordGetString(h,0,buf,&sz);
+    r = MsiRecordGetStringA(h,0,buf,&sz);
     ok(r == ERROR_MORE_DATA, "small buffer should yield ERROR_MORE_DATA\n");
-    ok(sz == sizeof str-1, "MsiRecordGetString returned the wrong length\n");
-    ok(0==strncmp(buf,str,sizeof str-3), "MsiRecordGetString returned the wrong string\n");
+    ok(sz == sizeof str-1, "MsiRecordGetStringA returned the wrong length\n");
+    ok(0==strncmp(buf,str,sizeof str-3), "MsiRecordGetStringA returned the wrong string\n");
     ok(buf[sizeof str - 3]==0, "string wasn't nul terminated\n");
 
     buf[0]=0;
     sz = sizeof str;
-    r = MsiRecordGetString(h,0,buf,&sz);
+    r = MsiRecordGetStringA(h,0,buf,&sz);
     ok(r == ERROR_SUCCESS, "wrong error\n");
-    ok(sz == sizeof str-1, "MsiRecordGetString returned the wrong length\n");
-    ok(0==strcmp(buf,str), "MsiRecordGetString returned the wrong string\n");
+    ok(sz == sizeof str-1, "MsiRecordGetStringA returned the wrong length\n");
+    ok(0==strcmp(buf,str), "MsiRecordGetStringA returned the wrong string\n");
 
 
     memset(bufW, 0, sizeof bufW);
     sz = 5;
     r = MsiRecordGetStringW(h,0,bufW,&sz);
     ok(r == ERROR_MORE_DATA, "wrong error\n");
-    ok(sz == 5, "MsiRecordGetString returned the wrong length\n");
-    ok(0==memcmp(bufW,strW,8), "MsiRecordGetString returned the wrong string\n");
+    ok(sz == 5, "MsiRecordGetStringA returned the wrong length\n");
+    ok(0==memcmp(bufW,strW,8), "MsiRecordGetStringA returned the wrong string\n");
 
     sz = 0;
     bufW[0] = 'x';
     r = MsiRecordGetStringW(h,0,bufW,&sz);
     ok(r == ERROR_MORE_DATA, "wrong error\n");
-    ok(sz == 5, "MsiRecordGetString returned the wrong length\n");
-    ok('x'==bufW[0], "MsiRecordGetString returned the wrong string\n");
+    ok(sz == 5, "MsiRecordGetStringA returned the wrong length\n");
+    ok('x'==bufW[0], "MsiRecordGetStringA returned the wrong string\n");
 
     memset(buf, 0, sizeof buf);
     sz = 5;
     r = MsiRecordGetStringA(h,0,buf,&sz);
     ok(r == ERROR_MORE_DATA, "wrong error\n");
-    ok(sz == 5, "MsiRecordGetString returned the wrong length\n");
-    ok(0==memcmp(buf,str,4), "MsiRecordGetString returned the wrong string\n");
+    ok(sz == 5, "MsiRecordGetStringA returned the wrong length\n");
+    ok(0==memcmp(buf,str,4), "MsiRecordGetStringA returned the wrong string\n");
 
     sz = 0;
     buf[0] = 'x';
     r = MsiRecordGetStringA(h,0,buf,&sz);
     ok(r == ERROR_MORE_DATA, "wrong error\n");
-    ok(sz == 5, "MsiRecordGetString returned the wrong length\n");
-    ok('x'==buf[0], "MsiRecordGetString returned the wrong string\n");
+    ok(sz == 5, "MsiRecordGetStringA returned the wrong length\n");
+    ok('x'==buf[0], "MsiRecordGetStringA returned the wrong string\n");
 
     /* same record, check we can wipe all the data */
     r = MsiRecordClearData(h);
@@ -226,55 +228,55 @@ static void test_msirecord(void)
     ok(r, "cleared record wasn't null\n");
 
     /* same record, try converting strings to integers */
-    i = MsiRecordSetString(h,0,"42");
+    i = MsiRecordSetStringA(h,0,"42");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == 42, "should get invalid integer\n");
-    i = MsiRecordSetString(h,0,"-42");
+    i = MsiRecordSetStringA(h,0,"-42");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == -42, "should get invalid integer\n");
-    i = MsiRecordSetString(h,0," 42");
+    i = MsiRecordSetStringA(h,0," 42");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == MSI_NULL_INTEGER, "should get invalid integer\n");
-    i = MsiRecordSetString(h,0,"42 ");
+    i = MsiRecordSetStringA(h,0,"42 ");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == MSI_NULL_INTEGER, "should get invalid integer\n");
-    i = MsiRecordSetString(h,0,"42.0");
+    i = MsiRecordSetStringA(h,0,"42.0");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == MSI_NULL_INTEGER, "should get invalid integer\n");
-    i = MsiRecordSetString(h,0,"0x42");
+    i = MsiRecordSetStringA(h,0,"0x42");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == MSI_NULL_INTEGER, "should get invalid integer\n");
-    i = MsiRecordSetString(h,0,"1000000000000000");
+    i = MsiRecordSetStringA(h,0,"1000000000000000");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == -1530494976, "should get truncated integer\n");
-    i = MsiRecordSetString(h,0,"2147483647");
+    i = MsiRecordSetStringA(h,0,"2147483647");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == 2147483647, "should get maxint\n");
-    i = MsiRecordSetString(h,0,"-2147483647");
+    i = MsiRecordSetStringA(h,0,"-2147483647");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == -2147483647, "should get -maxint-1\n");
-    i = MsiRecordSetString(h,0,"4294967297");
+    i = MsiRecordSetStringA(h,0,"4294967297");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == 1, "should get one\n");
-    i = MsiRecordSetString(h,0,"foo");
+    i = MsiRecordSetStringA(h,0,"foo");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == MSI_NULL_INTEGER, "should get zero\n");
-    i = MsiRecordSetString(h,0,"");
+    i = MsiRecordSetStringA(h,0,"");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == MSI_NULL_INTEGER, "should get zero\n");
-    i = MsiRecordSetString(h,0,"+1");
+    i = MsiRecordSetStringA(h,0,"+1");
     ok(i == ERROR_SUCCESS, "Failed to set string at 0\n");
     i = MsiRecordGetInteger(h, 0);
     ok(i == MSI_NULL_INTEGER, "should get zero\n");
@@ -283,29 +285,29 @@ static void test_msirecord(void)
     r = MsiRecordSetInteger(h, 0, 32);
     ok(r == ERROR_SUCCESS, "Failed to set integer at 0 to 32\n");
     sz = 1;
-    r = MsiRecordGetString(h, 0, NULL, &sz);
+    r = MsiRecordGetStringA(h, 0, NULL, &sz);
     ok(r == ERROR_SUCCESS, "failed to get string from integer\n");
     ok(sz == 2, "length wrong\n");
     buf[0]=0;
     sz = sizeof buf;
-    r = MsiRecordGetString(h, 0, buf, &sz);
+    r = MsiRecordGetStringA(h, 0, buf, &sz);
     ok(r == ERROR_SUCCESS, "failed to get string from integer\n");
     ok(0==strcmp(buf,"32"), "failed to get string from integer\n");
     r = MsiRecordSetInteger(h, 0, -32);
     ok(r == ERROR_SUCCESS, "Failed to set integer at 0 to 32\n");
     buf[0]=0;
     sz = 1;
-    r = MsiRecordGetString(h, 0, NULL, &sz);
+    r = MsiRecordGetStringA(h, 0, NULL, &sz);
     ok(r == ERROR_SUCCESS, "failed to get string from integer\n");
     ok(sz == 3, "length wrong\n");
     sz = sizeof buf;
-    r = MsiRecordGetString(h, 0, buf, &sz);
+    r = MsiRecordGetStringA(h, 0, buf, &sz);
     ok(r == ERROR_SUCCESS, "failed to get string from integer\n");
     ok(0==strcmp(buf,"-32"), "failed to get string from integer\n");
     buf[0]=0;
 
     /* same record, now try streams */
-    r = MsiRecordSetStream(h, 0, NULL);
+    r = MsiRecordSetStreamA(h, 0, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "set NULL stream\n");
     sz = sizeof buf;
     r = MsiRecordReadStream(h, 0, buf, &sz);
@@ -328,13 +330,13 @@ static void test_msirecord(void)
     /* streams can't be inserted in field 0 for some reason */
     h = MsiCreateRecord(2);
     ok(h, "couldn't create a two field record\n");
-    r = MsiRecordSetStream(h, 0, filename);
+    r = MsiRecordSetStreamA(h, 0, filename);
     ok(r == ERROR_INVALID_PARAMETER, "added stream to field 0\n");
-    r = MsiRecordSetStream(h, 1, filename);
+    r = MsiRecordSetStreamA(h, 1, filename);
     ok(r == ERROR_SUCCESS, "failed to add stream to record\n");
     r = MsiRecordReadStream(h, 1, buf, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "should return error\n");
-    DeleteFile(filename); /* Windows 98 doesn't like this at all, so don't check return. */
+    DeleteFileA(filename); /* Windows 98 doesn't like this at all, so don't check return. */
     r = MsiRecordReadStream(h, 1, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "should return error\n");
     sz = sizeof buf;
@@ -367,7 +369,7 @@ static void test_msirecord(void)
     ok(r == ERROR_SUCCESS, "failed to read stream\n");
     ok(sz==0,"size non-zero at end of stream\n");
     ok(buf[0]==0, "read something at end of the stream\n");
-    r = MsiRecordSetStream(h, 1, NULL);
+    r = MsiRecordSetStreamA(h, 1, NULL);
     ok(r == ERROR_SUCCESS, "failed to reset stream\n");
     sz = 0;
     r = MsiRecordReadStream(h, 1, NULL, &sz);
@@ -379,7 +381,7 @@ static void test_msirecord(void)
     /* now close the stream record */
     r = MsiCloseHandle(h);
     ok(r == ERROR_SUCCESS, "Failed to close handle\n");
-    DeleteFile(filename); /* Delete it for sure, when everything else is closed. */
+    DeleteFileA(filename); /* Delete it for sure, when everything else is closed. */
 }
 
 static void test_MsiRecordGetString(void)
@@ -393,20 +395,20 @@ static void test_MsiRecordGetString(void)
     ok(rec != 0, "Expected a valid handle\n");
 
     sz = MAX_PATH;
-    r = MsiRecordGetString(rec, 1, NULL, &sz);
+    r = MsiRecordGetStringA(rec, 1, NULL, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n",r);
     ok(sz == 0, "Expected 0, got %d\n",sz);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiRecordGetString(rec, 10, buf, &sz);
+    r = MsiRecordGetStringA(rec, 10, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expected 0, got %d\n", sz);
@@ -420,13 +422,13 @@ static void test_MsiRecordGetString(void)
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     sz = MAX_PATH;
-    r = MsiRecordGetString(rec, 1, NULL, &sz);
+    r = MsiRecordGetStringA(rec, 1, NULL, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n",r);
     ok(sz == 1, "Expected 1, got %d\n",sz);
 
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "5"), "Expected \"5\", got \"%s\"\n", buf);
     ok(sz == 1, "Expectd 1, got %d\n", sz);
@@ -436,7 +438,7 @@ static void test_MsiRecordGetString(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "-5"), "Expected \"-5\", got \"%s\"\n", buf);
     ok(sz == 2, "Expectd 2, got %d\n", sz);
@@ -453,19 +455,19 @@ static void test_MsiRecordGetInteger(void)
     rec = MsiCreateRecord(1);
     ok(rec != 0, "Expected a valid handle\n");
 
-    r = MsiRecordSetString(rec, 1, "5");
+    r = MsiRecordSetStringA(rec, 1, "5");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     val = MsiRecordGetInteger(rec, 1);
     ok(val == 5, "Expected 5, got %d\n", val);
 
-    r = MsiRecordSetString(rec, 1, "-5");
+    r = MsiRecordSetStringA(rec, 1, "-5");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     val = MsiRecordGetInteger(rec, 1);
     ok(val == -5, "Expected -5, got %d\n", val);
 
-    r = MsiRecordSetString(rec, 1, "5apple");
+    r = MsiRecordSetStringA(rec, 1, "5apple");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     val = MsiRecordGetInteger(rec, 1);
@@ -490,7 +492,7 @@ static void test_fieldzero(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiRecordGetString(rec, 0, buf, &sz);
+    r = MsiRecordGetStringA(rec, 0, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expectd 0, got %d\n", sz);
@@ -509,7 +511,7 @@ static void test_fieldzero(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiRecordGetString(rec, 0, buf, &sz);
+    r = MsiRecordGetStringA(rec, 0, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expectd 0, got %d\n", sz);
@@ -520,7 +522,7 @@ static void test_fieldzero(void)
     r = MsiRecordGetInteger(rec, 1);
     ok(r == 42, "Expected 42, got %d\n", r);
 
-    r = MsiRecordSetString(rec, 1, "bologna");
+    r = MsiRecordSetStringA(rec, 1, "bologna");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     r = MsiRecordGetInteger(rec, 0);
@@ -528,7 +530,7 @@ static void test_fieldzero(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiRecordGetString(rec, 0, buf, &sz);
+    r = MsiRecordGetStringA(rec, 0, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, ""), "Expected \"\", got \"%s\"\n", buf);
     ok(sz == 0, "Expectd 0, got %d\n", sz);
@@ -538,20 +540,20 @@ static void test_fieldzero(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiRecordGetString(rec, 1, buf, &sz);
+    r = MsiRecordGetStringA(rec, 1, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "bologna"), "Expected \"bologna\", got \"%s\"\n", buf);
     ok(sz == 7, "Expectd 7, got %d\n", sz);
 
     MsiCloseHandle(rec);
 
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
     query = "CREATE TABLE `drone` ( "
            "`id` INT, `name` CHAR(32), `number` CHAR(32) "
            "PRIMARY KEY `id`)";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
@@ -562,7 +564,7 @@ static void test_fieldzero(void)
 
     query = "INSERT INTO `drone` ( `id`, `name`, `number` )"
            "VALUES('1', 'Abe', '8675309')";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "MsiDatabaseOpenView failed\n");
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "MsiViewExecute failed\n");
@@ -579,7 +581,7 @@ static void test_fieldzero(void)
 
     sz = MAX_PATH;
     lstrcpyA(buf, "apple");
-    r = MsiRecordGetString(rec, 0, buf, &sz);
+    r = MsiRecordGetStringA(rec, 0, buf, &sz);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(buf, "drone"), "Expected \"drone\", got \"%s\"\n", buf);
     ok(sz == 5, "Expectd 5, got %d\n", sz);
@@ -593,7 +595,7 @@ static void test_fieldzero(void)
     ok(r == ERROR_INVALID_TABLE, "Expected ERROR_INVALID_TABLE, got %d\n", r);
 
     query = "SELECT * FROM `drone` WHERE `id` = 1";
-    r = MsiDatabaseOpenView(hdb, query, &hview);
+    r = MsiDatabaseOpenViewA(hdb, query, &hview);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     r = MsiViewExecute(hview, 0);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
index 74b7cf3..38a2d10 100644 (file)
@@ -216,57 +216,57 @@ static void test_MsiSourceListGetInfo(void)
 
     /* NULL szProductCodeOrPatchCode */
     r = pMsiSourceListGetInfoA(NULL, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* empty szProductCodeOrPatchCode */
     r = pMsiSourceListGetInfoA("", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* garbage szProductCodeOrPatchCode */
     r = pMsiSourceListGetInfoA("garbage", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* guid without brackets */
     r = pMsiSourceListGetInfoA("51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* guid with brackets */
     r = pMsiSourceListGetInfoA("{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_UNKNOWN_PRODUCT, "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
 
     /* same length as guid, but random */
     r = pMsiSourceListGetInfoA("ADKD-2KSDFF2-DKK1KNFJASD9GLKWME-1I3KAD", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* invalid context */
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_NONE,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* another invalid context */
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_ALLUSERMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* yet another invalid context */
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_ALL,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* mix two valid contexts */
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* invalid option */
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              4, INSTALLPROPERTY_PACKAGENAME, NULL, NULL);
+                              4, INSTALLPROPERTY_PACKAGENAMEA, NULL, NULL);
     ok(r == ERROR_UNKNOWN_PRODUCT, "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
 
     /* NULL property */
@@ -281,13 +281,13 @@ static void test_MsiSourceListGetInfo(void)
 
     /* value is non-NULL while size is NULL */
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, value, NULL);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, value, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* size is non-NULL while value is NULL */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, &size);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, &size);
     ok(r == ERROR_UNKNOWN_PRODUCT || r == ERROR_INVALID_PARAMETER,
       "Expected ERROR_UNKNOWN_PRODUCT or ERROR_INVALID_PARAMETER, got %d\n", r);
 
@@ -301,7 +301,7 @@ static void test_MsiSourceListGetInfo(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_BAD_CONFIGURATION, "Expected ERROR_BAD_CONFIGURATION, got %d\n", r);
     ok(!lstrcmpA(value, "aaa"), "Expected \"aaa\", got \"%s\"\n", value);
 
@@ -312,7 +312,7 @@ static void test_MsiSourceListGetInfo(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(size == 0, "Expected 0, got %d\n", size);
     ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
@@ -324,7 +324,7 @@ static void test_MsiSourceListGetInfo(void)
     /* PackageName value exists */
     size = 0xdeadbeef;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, NULL, &size);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, NULL, &size);
     ok(r == ERROR_SUCCESS || r == ERROR_INVALID_PARAMETER,
           "Expected ERROR_SUCCESS or ERROR_INVALID_PARAMETER, got %d\n", r);
     ok(size == 11 || r != ERROR_SUCCESS, "Expected 11, got %d\n", size);
@@ -333,7 +333,7 @@ static void test_MsiSourceListGetInfo(void)
        size = 11;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(!lstrcmpA(value, "aaa"), "Expected 'aaa', got %s\n", value);
     ok(size == 11, "Expected 11, got %d\n", size);
@@ -341,7 +341,7 @@ static void test_MsiSourceListGetInfo(void)
     /* read the value, fix size */
     size++;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                              MSICODE_PRODUCT, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "msitest.msi"), "Expected 'msitest.msi', got %s\n", value);
     ok(size == 11, "Expected 11, got %d\n", size);
@@ -380,7 +380,7 @@ static void test_MsiSourceListGetInfo(void)
     /* invalid option now that product key exists */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              4, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                              4, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(size == 11, "Expected 11, got %d\n", size);
 
@@ -388,7 +388,7 @@ static void test_MsiSourceListGetInfo(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATH,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATHA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
@@ -405,7 +405,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_MEDIAPACKAGEPATH */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATH,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_MEDIAPACKAGEPATHA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "path"), "Expected \"path\", got \"%s\"\n", value);
@@ -419,7 +419,7 @@ static void test_MsiSourceListGetInfo(void)
 
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_DISKPROMPT,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_DISKPROMPTA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "prompt"), "Expected \"prompt\", got \"%s\"\n", value);
@@ -433,7 +433,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_LASTUSEDSOURCE, source is empty */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
@@ -447,7 +447,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_LASTUSEDSOURCE */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "source"), "Expected \"source\", got \"%s\"\n", value);
@@ -457,7 +457,7 @@ static void test_MsiSourceListGetInfo(void)
     size = 4;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA,
                                value, &size);
     ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(!lstrcmpA(value, "aaa"), "Expected value to be unchanged, got \"%s\"\n", value);
@@ -467,7 +467,7 @@ static void test_MsiSourceListGetInfo(void)
     size = 6;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA,
                                value, &size);
     ok(r == ERROR_MORE_DATA, "Expected ERROR_MORE_DATA, got %d\n", r);
     ok(!lstrcmpA(value, "aaa"), "Expected value to be unchanged, got \"%s\"\n", value);
@@ -481,7 +481,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_LASTUSEDSOURCE, one semi-colon */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "source"), "Expected \"source\", got \"%s\"\n", value);
@@ -495,7 +495,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_LASTUSEDSOURCE, one colon */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDSOURCEA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "a:source"), "Expected \"a:source\", got \"%s\"\n", value);
@@ -504,7 +504,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_LASTUSEDTYPE, invalid source format */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPEA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
@@ -518,7 +518,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_LASTUSEDTYPE, invalid source format */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPEA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
@@ -532,7 +532,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_LASTUSEDTYPE */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPEA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "n"), "Expected \"n\", got \"%s\"\n", value);
@@ -546,7 +546,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_LASTUSEDTYPE */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPEA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "n"), "Expected \"n\", got \"%s\"\n", value);
@@ -560,7 +560,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_LASTUSEDTYPE */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPEA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "m"), "Expected \"m\", got \"%s\"\n", value);
@@ -574,7 +574,7 @@ static void test_MsiSourceListGetInfo(void)
     /* INSTALLPROPERTY_LASTUSEDTYPE */
     size = MAX_PATH;
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPE,
+                               MSICODE_PRODUCT, INSTALLPROPERTY_LASTUSEDTYPEA,
                                value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, "u"), "Expected \"u\", got \"%s\"\n", value);
@@ -595,7 +595,7 @@ static void test_MsiSourceListGetInfo(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PATCH, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                              MSICODE_PATCH, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
     ok(size == MAX_PATH, "Expected %d, got %d\n", MAX_PATH, size);
     ok(!lstrcmpA(value, "aaa"), "Expected \"aaa\", got \"%s\"\n", value);
@@ -612,7 +612,7 @@ static void test_MsiSourceListGetInfo(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PATCH, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                              MSICODE_PATCH, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_BAD_CONFIGURATION, "Expected ERROR_BAD_CONFIGURATION, got %d\n", r);
     ok(size == MAX_PATH, "Expected %d, got %d\n", MAX_PATH, size);
     ok(!lstrcmpA(value, "aaa"), "Expected \"aaa\", got \"%s\"\n", value);
@@ -624,7 +624,7 @@ static void test_MsiSourceListGetInfo(void)
     size = MAX_PATH;
     lstrcpyA(value, "aaa");
     r = pMsiSourceListGetInfoA(prodcode, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
-                              MSICODE_PATCH, INSTALLPROPERTY_PACKAGENAME, value, &size);
+                              MSICODE_PATCH, INSTALLPROPERTY_PACKAGENAMEA, value, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     ok(!lstrcmpA(value, ""), "Expected \"\", got \"%s\"\n", value);
     ok(size == 0, "Expected 0, got %d\n", size);
@@ -1013,19 +1013,24 @@ machine_tests:
     r = pMsiSourceListAddSourceExA(prodcode, NULL,
                                   MSIINSTALLCONTEXT_MACHINE,
                                   MSICODE_PRODUCT | MSISOURCETYPE_URL, "C:\\source", 0);
-    ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    if (r == ERROR_ACCESS_DENIED)
+        skip("MsiSourceListAddSourceEx (insufficient privileges)\n");
+    else
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
-    res = RegOpenKeyExA(prodkey, "SourceList\\URL", 0, access, &url);
-    ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
+        res = RegOpenKeyExA(prodkey, "SourceList\\URL", 0, access, &url);
+        ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
-    size = MAX_PATH;
-    res = RegQueryValueExA(url, "1", NULL, NULL, (LPBYTE)value, &size);
-    ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
-    ok(!lstrcmpA(value, "C:\\source/"), "Expected 'C:\\source/', got %s\n", value);
-    ok(size == 11, "Expected 11, got %d\n", size);
+        size = MAX_PATH;
+        res = RegQueryValueExA(url, "1", NULL, NULL, (LPBYTE)value, &size);
+        ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
+        ok(!lstrcmpA(value, "C:\\source/"), "Expected 'C:\\source/', got %s\n", value);
+        ok(size == 11, "Expected 11, got %d\n", size);
 
-    RegCloseKey(url);
-    RegCloseKey(prodkey);
+        RegCloseKey(url);
+        RegCloseKey(prodkey);
+    }
     LocalFree(usersid);
 }
 
@@ -1681,14 +1686,14 @@ static void test_MsiSourceListSetInfo(void)
     /* NULL szProductCodeOrPatchCode */
     r = pMsiSourceListSetInfoA(NULL, usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* empty szProductCodeOrPatchCode */
     r = pMsiSourceListSetInfoA("", usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
@@ -1696,7 +1701,7 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA("garbage", usersid,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
@@ -1704,7 +1709,7 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA("51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA",
                                usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
@@ -1712,35 +1717,35 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA("{51CD2AD5-0482-4C46-8DDD-0ED1022AA1AA}",
                                usersid, MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
 
     /* dwOptions is MSICODE_PRODUCT */
     r = pMsiSourceListSetInfoA(prodcode, usersid,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
 
     /* dwOptions is MSICODE_PATCH */
     r = pMsiSourceListSetInfoA(prodcode, usersid,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PATCH,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
 
     /* dwOptions is both MSICODE_PRODUCT and MSICODE_PATCH */
     r = pMsiSourceListSetInfoA(prodcode, usersid,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSICODE_PATCH | MSISOURCETYPE_URL,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_UNKNOWN_PATCH, "Expected ERROR_UNKNOWN_PATCH, got %d\n", r);
 
     /* dwOptions has both MSISOURCETYPE_NETWORK and MSISOURCETYPE_URL */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK | MSISOURCETYPE_URL,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
 
@@ -1750,14 +1755,14 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK | MSISOURCETYPE_URL,
-                               INSTALLPROPERTY_LASTUSEDSOURCE, "path");
+                               INSTALLPROPERTY_LASTUSEDSOURCEA, "path");
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
 
     /* LastUsedSource and dwOptions has no source type */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_LASTUSEDSOURCE, "path");
+                               INSTALLPROPERTY_LASTUSEDSOURCEA, "path");
     ok(r == ERROR_UNKNOWN_PRODUCT,
        "Expected ERROR_UNKNOWN_PRODUCT, got %d\n", r);
 
@@ -1772,7 +1777,7 @@ static void test_MsiSourceListSetInfo(void)
     /* user product key exists */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_BAD_CONFIGURATION,
        "Expected ERROR_BAD_CONFIGURATION, got %d\n", r);
 
@@ -1782,7 +1787,7 @@ static void test_MsiSourceListSetInfo(void)
     /* SourceList key exists, no source type */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* Media key is created by MsiSourceListSetInfo */
@@ -1793,7 +1798,7 @@ static void test_MsiSourceListSetInfo(void)
     /* set the info again */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path2");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path2");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     CHECK_REG_STR(media, "MediaPackage", "path2");
 
@@ -1814,14 +1819,14 @@ static void test_MsiSourceListSetInfo(void)
     /* NULL szValue */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, NULL);
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, NULL);
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
 
     /* empty szValue */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     CHECK_REG_STR(media, "MediaPackage", "");
 
@@ -1829,7 +1834,7 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
@@ -1837,14 +1842,14 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_URL,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* INSTALLPROPERTY_DISKPROMPT */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_DISKPROMPT, "prompt");
+                               INSTALLPROPERTY_DISKPROMPTA, "prompt");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     CHECK_REG_STR(media, "DiskPrompt", "prompt");
 
@@ -1852,7 +1857,7 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK,
-                               INSTALLPROPERTY_DISKPROMPT, "prompt");
+                               INSTALLPROPERTY_DISKPROMPTA, "prompt");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
@@ -1860,14 +1865,14 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_URL,
-                               INSTALLPROPERTY_DISKPROMPT, "prompt");
+                               INSTALLPROPERTY_DISKPROMPTA, "prompt");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* INSTALLPROPERTY_LASTUSEDSOURCE */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_LASTUSEDSOURCE, "source");
+                               INSTALLPROPERTY_LASTUSEDSOURCEA, "source");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
@@ -1875,7 +1880,7 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK,
-                               INSTALLPROPERTY_LASTUSEDSOURCE, "source");
+                               INSTALLPROPERTY_LASTUSEDSOURCEA, "source");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* Net key is created by MsiSourceListSetInfo */
@@ -1888,7 +1893,7 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK,
-                               INSTALLPROPERTY_LASTUSEDSOURCE, "source/");
+                               INSTALLPROPERTY_LASTUSEDSOURCEA, "source/");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     CHECK_REG_STR(net, "1", "source\\");
     CHECK_REG_STR(net, "2", "source/\\");
@@ -1898,7 +1903,7 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_URL,
-                               INSTALLPROPERTY_LASTUSEDSOURCE, "source");
+                               INSTALLPROPERTY_LASTUSEDSOURCEA, "source");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* URL key is created by MsiSourceListSetInfo */
@@ -1911,7 +1916,7 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_URL,
-                               INSTALLPROPERTY_LASTUSEDSOURCE, "source\\");
+                               INSTALLPROPERTY_LASTUSEDSOURCEA, "source\\");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     CHECK_REG_STR(url, "1", "source/");
     CHECK_REG_STR(url, "2", "source\\/");
@@ -1921,14 +1926,14 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_MEDIA,
-                               INSTALLPROPERTY_LASTUSEDSOURCE, "source");
+                               INSTALLPROPERTY_LASTUSEDSOURCEA, "source");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* INSTALLPROPERTY_PACKAGENAME */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_PACKAGENAME, "name");
+                               INSTALLPROPERTY_PACKAGENAMEA, "name");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
     CHECK_REG_STR(source, "PackageName", "name");
 
@@ -1936,7 +1941,7 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_NETWORK,
-                               INSTALLPROPERTY_PACKAGENAME, "name");
+                               INSTALLPROPERTY_PACKAGENAMEA, "name");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
@@ -1944,14 +1949,14 @@ static void test_MsiSourceListSetInfo(void)
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED,
                                MSICODE_PRODUCT | MSISOURCETYPE_URL,
-                               INSTALLPROPERTY_PACKAGENAME, "name");
+                               INSTALLPROPERTY_PACKAGENAMEA, "name");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
 
     /* INSTALLPROPERTY_LASTUSEDTYPE */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERUNMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_LASTUSEDTYPE, "type");
+                               INSTALLPROPERTY_LASTUSEDTYPEA, "type");
     ok(r == ERROR_UNKNOWN_PROPERTY,
        "Expected ERROR_UNKNOWN_PROPERTY, got %d\n", r);
 
@@ -1995,7 +2000,7 @@ static void test_MsiSourceListSetInfo(void)
     /* user product key exists */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_BAD_CONFIGURATION,
        "Expected ERROR_BAD_CONFIGURATION, got %d\n", r);
 
@@ -2005,7 +2010,7 @@ static void test_MsiSourceListSetInfo(void)
     /* SourceList key exists, no source type */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_USERMANAGED, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* Media key is created by MsiSourceListSetInfo */
@@ -2038,7 +2043,7 @@ machine_tests:
     /* user product key exists */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_MACHINE, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_BAD_CONFIGURATION,
        "Expected ERROR_BAD_CONFIGURATION, got %d\n", r);
 
@@ -2048,7 +2053,12 @@ machine_tests:
     /* SourceList key exists, no source type */
     r = pMsiSourceListSetInfoA(prodcode, NULL,
                                MSIINSTALLCONTEXT_MACHINE, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
+    if (r == ERROR_ACCESS_DENIED)
+    {
+        skip("MsiSourceListSetInfo (insufficient privileges)\n");
+        goto done;
+    }
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* Media key is created by MsiSourceListSetInfo */
@@ -2059,13 +2069,14 @@ machine_tests:
     /* szUserSid is non-NULL */
     r = pMsiSourceListSetInfoA(prodcode, usersid,
                                MSIINSTALLCONTEXT_MACHINE, MSICODE_PRODUCT,
-                               INSTALLPROPERTY_MEDIAPACKAGEPATH, "path");
+                               INSTALLPROPERTY_MEDIAPACKAGEPATHA, "path");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
-
     RegDeleteValueA(media, "MediaPackage");
     delete_key(media, "", access);
     RegCloseKey(media);
+
+done:
     delete_key(source, "", access);
     RegCloseKey(source);
     delete_key(prodkey, "", access);
@@ -2360,6 +2371,11 @@ machine_tests:
     r = pMsiSourceListAddMediaDiskA(prodcode, NULL,
                                     MSIINSTALLCONTEXT_MACHINE,
                                     MSICODE_PRODUCT, 1, "label", "prompt");
+    if (r == ERROR_ACCESS_DENIED)
+    {
+        skip("MsiSourceListAddMediaDisk (insufficient privileges)\n");
+        goto done;
+    }
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
 
     /* Media subkey is created by MsiSourceListAddMediaDisk */
@@ -2374,10 +2390,11 @@ machine_tests:
                                     MSICODE_PRODUCT, 1, "label", "prompt");
     ok(r == ERROR_INVALID_PARAMETER,
        "Expected ERROR_INVALID_PARAMETER, got %d\n", r);
-
     RegDeleteValueA(media, "1");
     delete_key(media, "", access);
     RegCloseKey(media);
+
+done:
     delete_key(source, "", access);
     RegCloseKey(source);
     delete_key(prodkey, "", access);
@@ -3451,6 +3468,11 @@ machine_tests:
 
     /* Net key is created */
     res = RegOpenKeyExA(source, "Net", 0, access, &net);
+    if (res == ERROR_ACCESS_DENIED)
+    {
+        skip("MsiSourceListAddSource (insufficient privileges)\n");
+        goto done;
+    }
     ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", res);
 
     CHECK_REG_STR(net, "1", "source\\");
@@ -3466,6 +3488,8 @@ machine_tests:
     RegDeleteValueA(net, "1");
     delete_key(net, "", access);
     RegCloseKey(net);
+
+done:
     delete_key(source, "", access);
     RegCloseKey(source);
     delete_key(prodkey, "", access);
index 0ae2a3a..8c2e292 100644 (file)
@@ -76,27 +76,27 @@ static void test_suminfo(void)
     FILETIME ft;
     char buf[0x10];
 
-    DeleteFile(msifile);
+    DeleteFileA(msifile);
 
     /* just MsiOpenDatabase should not create a file */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_CREATE, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_CREATE, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
-    r = MsiGetSummaryInformation(hdb, NULL, 0, NULL);
+    r = MsiGetSummaryInformationA(hdb, NULL, 0, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "MsiGetSummaryInformation wrong error\n");
 
-    r = MsiGetSummaryInformation(hdb, NULL, 0, &hsuminfo);
+    r = MsiGetSummaryInformationA(hdb, NULL, 0, &hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiGetSummaryInformation failed %u\n", r);
 
     r = MsiCloseHandle(hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
-    r = MsiGetSummaryInformation(0, "", 0, &hsuminfo);
+    r = MsiGetSummaryInformationA(0, "", 0, &hsuminfo);
     todo_wine
     ok(r == ERROR_INSTALL_PACKAGE_INVALID || r == ERROR_INSTALL_PACKAGE_OPEN_FAILED,
        "MsiGetSummaryInformation failed %u\n", r);
 
-    r = MsiGetSummaryInformation(hdb, "", 0, &hsuminfo);
+    r = MsiGetSummaryInformationA(hdb, "", 0, &hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiGetSummaryInformation failed %u\n", r);
 
     r = MsiSummaryInfoGetPropertyCount(0, NULL);
@@ -110,23 +110,23 @@ static void test_suminfo(void)
     ok(r == ERROR_SUCCESS, "getpropcount failed\n");
     ok(count == 0, "count should be zero\n");
 
-    r = MsiSummaryInfoGetProperty(hsuminfo, 0, NULL, NULL, NULL, 0, NULL);
+    r = MsiSummaryInfoGetPropertyA(hsuminfo, 0, NULL, NULL, NULL, 0, NULL);
     ok(r == ERROR_SUCCESS, "getpropcount failed\n");
 
-    r = MsiSummaryInfoGetProperty(hsuminfo, -1, NULL, NULL, NULL, 0, NULL);
+    r = MsiSummaryInfoGetPropertyA(hsuminfo, -1, NULL, NULL, NULL, 0, NULL);
     ok(r == ERROR_UNKNOWN_PROPERTY, "MsiSummaryInfoGetProperty wrong error\n");
 
-    r = MsiSummaryInfoGetProperty(hsuminfo, PID_SECURITY+1, NULL, NULL, NULL, 0, NULL);
+    r = MsiSummaryInfoGetPropertyA(hsuminfo, PID_SECURITY+1, NULL, NULL, NULL, 0, NULL);
     ok(r == ERROR_UNKNOWN_PROPERTY, "MsiSummaryInfoGetProperty wrong error\n");
 
     type = -1;
-    r = MsiSummaryInfoGetProperty(hsuminfo, 0, &type, NULL, NULL, 0, NULL);
+    r = MsiSummaryInfoGetPropertyA(hsuminfo, 0, &type, NULL, NULL, 0, NULL);
     ok(r == ERROR_SUCCESS, "getpropcount failed\n");
     ok(type == 0, "wrong type\n");
 
     type = -1;
     val = 1234;
-    r = MsiSummaryInfoGetProperty(hsuminfo, 0, &type, &val, NULL, 0, NULL);
+    r = MsiSummaryInfoGetPropertyA(hsuminfo, 0, &type, &val, NULL, 0, NULL);
     ok(r == ERROR_SUCCESS, "getpropcount failed\n");
     ok(type == 0, "wrong type\n");
     ok(val == 1234, "wrong val\n");
@@ -134,73 +134,73 @@ static void test_suminfo(void)
     buf[0]='x';
     buf[1]=0;
     sz = 0x10;
-    r = MsiSummaryInfoGetProperty(hsuminfo, PID_REVNUMBER, &type, &val, NULL, buf, &sz);
+    r = MsiSummaryInfoGetPropertyA(hsuminfo, PID_REVNUMBER, &type, &val, NULL, buf, &sz);
     ok(r == ERROR_SUCCESS, "getpropcount failed\n");
     ok(buf[0]=='x', "cleared buffer\n");
     ok(sz == 0x10, "count wasn't zero\n");
     ok(type == VT_EMPTY, "should be empty\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_TITLE, VT_LPSTR, 0, NULL, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_TITLE, VT_LPSTR, 0, NULL, "Mike");
     ok(r == ERROR_FUNCTION_FAILED, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_TITLE, VT_LPSTR, 1, NULL, "JungAh");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_TITLE, VT_LPSTR, 1, NULL, "JungAh");
     ok(r == ERROR_FUNCTION_FAILED, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_TITLE, VT_LPSTR, 1, &ft, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_TITLE, VT_LPSTR, 1, &ft, "Mike");
     ok(r == ERROR_FUNCTION_FAILED, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_CODEPAGE, VT_I2, 1, &ft, "JungAh");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_CODEPAGE, VT_I2, 1, &ft, "JungAh");
     ok(r == ERROR_FUNCTION_FAILED, "MsiSummaryInfoSetProperty wrong error\n");
 
     r = MsiCloseHandle(hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     /* try again with the update count set */
-    r = MsiGetSummaryInformation(hdb, NULL, 1, &hsuminfo);
+    r = MsiGetSummaryInformationA(hdb, NULL, 1, &hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiGetSummaryInformation failed\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, 0, VT_LPSTR, 1, NULL, NULL);
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, 0, VT_LPSTR, 1, NULL, NULL);
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_CODEPAGE, VT_LPSTR, 1, NULL, NULL);
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_CODEPAGE, VT_LPSTR, 1, NULL, NULL);
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_TITLE, VT_I4, 0, NULL, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_TITLE, VT_I4, 0, NULL, "Mike");
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_AUTHOR, VT_I4, 0, NULL, "JungAh");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_AUTHOR, VT_I4, 0, NULL, "JungAh");
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_KEYWORDS, VT_I2, 0, NULL, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_KEYWORDS, VT_I2, 0, NULL, "Mike");
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_COMMENTS, VT_FILETIME, 0, NULL, "JungAh");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_COMMENTS, VT_FILETIME, 0, NULL, "JungAh");
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_TEMPLATE, VT_I2, 0, NULL, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_TEMPLATE, VT_I2, 0, NULL, "Mike");
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_LASTAUTHOR, VT_LPSTR, 0, NULL, NULL);
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_LASTAUTHOR, VT_LPSTR, 0, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_LASTSAVE_DTM, VT_FILETIME, 0, NULL, NULL);
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_LASTSAVE_DTM, VT_FILETIME, 0, NULL, NULL);
     ok(r == ERROR_INVALID_PARAMETER, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_LASTAUTHOR, VT_LPWSTR, 0, NULL, "h\0i\0\0");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_LASTAUTHOR, VT_LPWSTR, 0, NULL, "h\0i\0\0");
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_REVNUMBER, VT_I4, 0, NULL, "Jungah");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_REVNUMBER, VT_I4, 0, NULL, "Jungah");
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_PAGECOUNT, VT_LPSTR, 1, NULL, NULL);
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_PAGECOUNT, VT_LPSTR, 1, NULL, NULL);
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_TITLE, VT_LPSTR, 0, NULL, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_TITLE, VT_LPSTR, 0, NULL, "Mike");
     ok(r == ERROR_SUCCESS, "MsiSummaryInfoSetProperty failed\n");
 
     sz = 2;
     strcpy(buf,"x");
-    r = MsiSummaryInfoGetProperty(hsuminfo, PID_TITLE, &type, NULL, NULL, buf, &sz );
+    r = MsiSummaryInfoGetPropertyA(hsuminfo, PID_TITLE, &type, NULL, NULL, buf, &sz );
     ok(r == ERROR_MORE_DATA, "MsiSummaryInfoSetProperty failed\n");
     ok(sz == 4, "count was wrong\n");
     ok(type == VT_LPSTR, "type was wrong\n");
@@ -208,38 +208,38 @@ static void test_suminfo(void)
 
     sz = 4;
     strcpy(buf,"x");
-    r = MsiSummaryInfoGetProperty(hsuminfo, PID_TITLE, &type, NULL, NULL, buf, &sz );
+    r = MsiSummaryInfoGetPropertyA(hsuminfo, PID_TITLE, &type, NULL, NULL, buf, &sz );
     ok(r == ERROR_MORE_DATA, "MsiSummaryInfoSetProperty failed\n");
     ok(sz == 4, "count was wrong\n");
     ok(type == VT_LPSTR, "type was wrong\n");
     ok(!strcmp(buf,"Mik"), "buffer was wrong\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_TITLE, VT_LPSTR, 0, NULL, "JungAh");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_TITLE, VT_LPSTR, 0, NULL, "JungAh");
     ok(r == ERROR_SUCCESS, "MsiSummaryInfoSetProperty failed\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_CODEPAGE, VT_I2, 1, &ft, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_CODEPAGE, VT_I2, 1, &ft, "Mike");
     ok(r == ERROR_FUNCTION_FAILED, "MsiSummaryInfoSetProperty wrong error\n");
 
     r = MsiCloseHandle(hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     /* try again with a higher update count */
-    r = MsiGetSummaryInformation(hdb, NULL, 10, &hsuminfo);
+    r = MsiGetSummaryInformationA(hdb, NULL, 10, &hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiGetSummaryInformation failed\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_TITLE, VT_LPSTR, 0, NULL, "JungAh");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_TITLE, VT_LPSTR, 0, NULL, "JungAh");
     ok(r == ERROR_SUCCESS, "MsiSummaryInfoSetProperty failed\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_CODEPAGE, VT_LPSTR, 1, NULL, NULL);
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_CODEPAGE, VT_LPSTR, 1, NULL, NULL);
     ok(r == ERROR_DATATYPE_MISMATCH, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_CODEPAGE, VT_I2, 1, NULL, NULL);
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_CODEPAGE, VT_I2, 1, NULL, NULL);
     ok(r == ERROR_SUCCESS, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_CODEPAGE, VT_I2, 1, &ft, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_CODEPAGE, VT_I2, 1, &ft, "Mike");
     ok(r == ERROR_SUCCESS, "MsiSummaryInfoSetProperty wrong error\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_AUTHOR, VT_LPSTR, 1, &ft, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_AUTHOR, VT_LPSTR, 1, &ft, "Mike");
     ok(r == ERROR_SUCCESS, "MsiSummaryInfoSetProperty wrong error\n");
 
     r = MsiSummaryInfoPersist(hsuminfo);
@@ -254,10 +254,10 @@ static void test_suminfo(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
     /* filename, non-zero update count */
-    r = MsiGetSummaryInformation(0, msifile, 1, &hsuminfo);
+    r = MsiGetSummaryInformationA(0, msifile, 1, &hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiGetSummaryInformation failed\n");
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_AUTHOR, VT_LPSTR, 1, &ft, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_AUTHOR, VT_LPSTR, 1, &ft, "Mike");
     ok(r == ERROR_SUCCESS, "MsiSummaryInfoSetProperty wrong error\n");
 
     r = MsiSummaryInfoPersist(hsuminfo);
@@ -267,10 +267,10 @@ static void test_suminfo(void)
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed %u\n", r);
 
     /* filename, zero update count */
-    r = MsiGetSummaryInformation(0, msifile, 0, &hsuminfo);
+    r = MsiGetSummaryInformationA(0, msifile, 0, &hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiGetSummaryInformation failed %u\n", r);
 
-    r = MsiSummaryInfoSetProperty(hsuminfo, PID_AUTHOR, VT_LPSTR, 1, &ft, "Mike");
+    r = MsiSummaryInfoSetPropertyA(hsuminfo, PID_AUTHOR, VT_LPSTR, 1, &ft, "Mike");
     todo_wine ok(r == ERROR_FUNCTION_FAILED, "MsiSummaryInfoSetProperty wrong error, %u\n", r);
 
     r = MsiSummaryInfoPersist(hsuminfo);
@@ -279,7 +279,7 @@ static void test_suminfo(void)
     r = MsiCloseHandle(hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiCloseHandle failed\n");
 
-    r = DeleteFile(msifile);
+    r = DeleteFileA(msifile);
     ok(r, "DeleteFile failed\n");
 }
 
@@ -404,17 +404,17 @@ static void test_summary_binary(void)
     DWORD sz;
     char sval[20];
 
-    DeleteFile( msifile );
+    DeleteFileA( msifile );
 
     test_create_database_binary();
 
-    ok( INVALID_FILE_ATTRIBUTES != GetFileAttributes(msifile), "file doesn't exist!\n");
+    ok(GetFileAttributesA(msifile) != INVALID_FILE_ATTRIBUTES, "file doesn't exist!\n");
 
     /* just MsiOpenDatabase should not create a file */
-    r = MsiOpenDatabase(msifile, MSIDBOPEN_READONLY, &hdb);
+    r = MsiOpenDatabaseW(msifileW, MSIDBOPEN_READONLY, &hdb);
     ok(r == ERROR_SUCCESS, "MsiOpenDatabase failed\n");
 
-    r = MsiGetSummaryInformation(hdb, NULL, 0, &hsuminfo);
+    r = MsiGetSummaryInformationA(hdb, NULL, 0, &hsuminfo);
     ok(r == ERROR_SUCCESS, "MsiGetSummaryInformation failed\n");
 
     /*
@@ -426,7 +426,7 @@ static void test_summary_binary(void)
     sz = sizeof sval;
     sval[0] = 0;
     type = 0;
-    r = MsiSummaryInfoGetProperty(hsuminfo, PID_LASTPRINTED, &type, NULL, NULL, sval, &sz);
+    r = MsiSummaryInfoGetPropertyA(hsuminfo, PID_LASTPRINTED, &type, NULL, NULL, sval, &sz);
     ok(r == ERROR_SUCCESS, "MsiSummaryInfoGetProperty failed\n");
     ok(!lstrcmpA(sval, "") || !lstrcmpA(sval, "7"),
         "Expected empty string or \"7\", got \"%s\"\n", sval);
@@ -436,7 +436,7 @@ static void test_summary_binary(void)
     }
 
     ival = -1;
-    r = MsiSummaryInfoGetProperty(hsuminfo, PID_WORDCOUNT, &type, &ival, NULL, NULL, NULL);
+    r = MsiSummaryInfoGetPropertyA(hsuminfo, PID_WORDCOUNT, &type, &ival, NULL, NULL, NULL);
     ok(r == ERROR_SUCCESS, "MsiSummaryInfoGetProperty failed\n");
     todo_wine ok( ival == 0, "value incorrect\n");
 
@@ -446,7 +446,7 @@ static void test_summary_binary(void)
     ok(r == ERROR_SUCCESS, "getpropcount failed\n");
     todo_wine ok(count == 10, "prop count incorrect\n");
 
-    r = MsiSummaryInfoSetProperty( hsuminfo, PID_TITLE, VT_LPSTR, 0, NULL, "Mike" );
+    r = MsiSummaryInfoSetPropertyA( hsuminfo, PID_TITLE, VT_LPSTR, 0, NULL, "Mike" );
     ok(r == ERROR_FUNCTION_FAILED, "MsiSummaryInfoSetProperty failed %u\n", r);
 
     r = MsiSummaryInfoPersist( hsuminfo );
@@ -455,7 +455,7 @@ static void test_summary_binary(void)
     MsiCloseHandle( hsuminfo );
     MsiCloseHandle( hdb );
 
-    DeleteFile( msifile );
+    DeleteFileA( msifile );
 }
 
 START_TEST(suminfo)