diff --git a/dll/win32/syssetup/wizard.c b/dll/win32/syssetup/wizard.c
index 5255b82a0c..cbc6b3a94b 100644
--- a/dll/win32/syssetup/wizard.c
+++ b/dll/win32/syssetup/wizard.c
@@ -22,6 +22,8 @@
 #define NDEBUG
 #include <debug.h>
 
+//#define TEST_DONT_APPLY_DATA
+
 #define PM_REGISTRATION_NOTIFY (WM_APP + 1)
 /* Private Message used to communicate progress from the background
    registration thread to the main thread.
@@ -241,7 +243,9 @@ WelcomeDlgProc(HWND hwndDlg,
                     LogItem(L"BEGIN", L"WelcomePage");
                     /* Enable the Next button */
                     PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT);
+#if !defined(TEST_DONT_APPLY_DATA)
                     if (pSetupData->UnattendSetup)
+#endif
                     {
                         SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_ACKPAGE);
                         return TRUE;
@@ -353,7 +357,9 @@ AckPageDlgProc(HWND hwndDlg,
                 case PSN_SETACTIVE:
                     /* Enable the Back and Next buttons */
                     PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
+#if !defined(TEST_DONT_APPLY_DATA)
                     if (pSetupData->UnattendSetup)
+#endif
                     {
                         SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_LOCALEPAGE);
                         return TRUE;
@@ -382,6 +388,10 @@ BOOL
 WriteOwnerSettings(WCHAR * OwnerName,
                    WCHAR * OwnerOrganization)
 {
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping WriteOwnerSettings(OwnerName=%S, OwnerOrganization=%S)\n", OwnerName, OwnerOrganization);
+    return TRUE;
+#endif
     HKEY hKey;
     LONG res;
 
@@ -469,7 +479,9 @@ OwnerPageDlgProc(HWND hwndDlg,
                 case PSN_SETACTIVE:
                     /* Enable the Back and Next buttons */
                     PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
+#if !defined(TEST_DONT_APPLY_DATA)
                     if (pSetupData->UnattendSetup)
+#endif
                     {
                         SendMessage(GetDlgItem(hwndDlg, IDC_OWNERNAME), WM_SETTEXT, 0, (LPARAM)pSetupData->OwnerName);
                         SendMessage(GetDlgItem(hwndDlg, IDC_OWNERORGANIZATION), WM_SETTEXT, 0, (LPARAM)pSetupData->OwnerOrganization);
@@ -532,6 +544,10 @@ static
 BOOL
 WriteComputerSettings(WCHAR * ComputerName, HWND hwndDlg)
 {
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping WriteComputerSettings(ComputerName=%S)\n", ComputerName);
+    return TRUE;
+#endif
     WCHAR Title[64];
     WCHAR ErrorComputerName[256];
 
@@ -568,6 +584,10 @@ static
 BOOL
 WriteDefaultLogonData(LPWSTR Domain)
 {
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping WriteDefaultLogonData(Domain=%S)\n", Domain);
+    return TRUE;
+#endif
     WCHAR szAdministratorName[256];
     HKEY hKey = NULL;
     LONG lError;
@@ -676,13 +696,19 @@ ComputerPageDlgProc(HWND hwndDlg,
 
             /* Set focus to computer name */
             SetFocus(GetDlgItem(hwndDlg, IDC_COMPUTERNAME));
+#if !defined(TEST_DONT_APPLY_DATA)
             if (pSetupData->UnattendSetup)
+#endif
             {
                 SendMessage(GetDlgItem(hwndDlg, IDC_COMPUTERNAME), WM_SETTEXT, 0, (LPARAM)pSetupData->ComputerName);
                 SendMessage(GetDlgItem(hwndDlg, IDC_ADMINPASSWORD1), WM_SETTEXT, 0, (LPARAM)pSetupData->AdminPassword);
                 SendMessage(GetDlgItem(hwndDlg, IDC_ADMINPASSWORD2), WM_SETTEXT, 0, (LPARAM)pSetupData->AdminPassword);
                 WriteComputerSettings(pSetupData->ComputerName, NULL);
+#if defined(TEST_DONT_APPLY_DATA)
+                DPRINT1("DEBUG: Skipping SetAdministratorPassword(AdminPassword=%S)\n", pSetupData->AdminPassword);
+#else
                 SetAdministratorPassword(pSetupData->AdminPassword);
+#endif
             }
 
             /* Store the administrator account name as the default user name */
@@ -699,7 +725,9 @@ ComputerPageDlgProc(HWND hwndDlg,
                 case PSN_SETACTIVE:
                     /* Enable the Back and Next buttons */
                     PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
+#if !defined(TEST_DONT_APPLY_DATA)
                     if (pSetupData->UnattendSetup && WriteComputerSettings(pSetupData->ComputerName, hwndDlg))
+#endif
                     {
                         SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, IDD_THEMEPAGE);
                         return TRUE;
@@ -780,7 +808,11 @@ ComputerPageDlgProc(HWND hwndDlg,
                     }
 
                     /* Set admin password */
+#if defined(TEST_DONT_APPLY_DATA)
+                    DPRINT1("DEBUG: Skipping SetAdministratorPassword(AdminPassword=%S)\n", Password1);
+#else
                     SetAdministratorPassword(Password1);
+#endif
                     break;
 
                 case PSN_WIZBACK:
@@ -861,6 +893,10 @@ SetKeyboardLayoutName(HWND hwnd)
 static BOOL
 RunControlPanelApplet(HWND hwnd, PCWSTR pwszCPLParameters)
 {
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping RunControlPanelApplet(pwszCPLParameters=%S)\n", pwszCPLParameters);
+    return TRUE;
+#endif
     MSG msg;
     STARTUPINFOW StartupInfo;
     PROCESS_INFORMATION ProcessInformation;
@@ -918,6 +954,10 @@ WriteUserLocale(VOID)
 
     if (GetLocaleInfoW(MAKELCID(lcid, SORT_DEFAULT), LOCALE_ILANGUAGE, Locale, ARRAYSIZE(Locale)) != 0)
     {
+#if defined(TEST_DONT_APPLY_DATA)
+        DPRINT1("DEBUG: Skipping WriteUserLocale(Locale=%.12wS)\n", Locale);
+        return;
+#endif
         if (RegCreateKeyExW(HKEY_CURRENT_USER, L"Control Panel\\International",
                             0, NULL, REG_OPTION_NON_VOLATILE,
                             KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS)
@@ -1011,17 +1051,27 @@ LocalePageDlgProc(HWND hwndDlg,
 }
 
 
-static PTIMEZONE_ENTRY
-GetLargerTimeZoneEntry(PSETUPDATA SetupData, DWORD Index)
+static
+PTIMEZONE_ENTRY
+GetLargerTimeZoneEntry(
+    PSETUPDATA SetupData,
+    LONG Bias,
+    LPWSTR lpDescription)
 {
     PTIMEZONE_ENTRY Entry;
 
     Entry = SetupData->TimeZoneListHead;
     while (Entry != NULL)
     {
-        if (Entry->Index >= Index)
+        if (Entry->TimezoneInfo.Bias < Bias)
             return Entry;
 
+        if (Entry->TimezoneInfo.Bias == Bias)
+        {
+            if (_wcsicmp(Entry->Description, lpDescription) > 0)
+                return Entry;
+        }
+
         Entry = Entry->Next;
     }
 
@@ -1029,13 +1079,78 @@ GetLargerTimeZoneEntry(PSETUPDATA SetupData, DWORD Index)
 }
 
 
+static
+LONG
+QueryTimezoneData(
+    HKEY hZoneKey,
+    PTIMEZONE_ENTRY Entry)
+{
+    DWORD dwValueSize;
+    LONG lError;
+
+    dwValueSize = sizeof(Entry->Description);
+    lError = RegQueryValueExW(hZoneKey,
+                              L"Display",
+                              NULL,
+                              NULL,
+                              (LPBYTE)&Entry->Description,
+                              &dwValueSize);
+    if (lError != ERROR_SUCCESS)
+        return lError;
+
+    dwValueSize = sizeof(Entry->StandardName);
+    lError = RegQueryValueExW(hZoneKey,
+                              L"Std",
+                              NULL,
+                              NULL,
+                              (LPBYTE)&Entry->StandardName,
+                              &dwValueSize);
+    if (lError != ERROR_SUCCESS)
+        return lError;
+
+    dwValueSize = sizeof(Entry->DaylightName);
+    lError = RegQueryValueExW(hZoneKey,
+                              L"Dlt",
+                              NULL,
+                              NULL,
+                              (LPBYTE)&Entry->DaylightName,
+                              &dwValueSize);
+    if (lError != ERROR_SUCCESS)
+        return lError;
+
+    dwValueSize = sizeof(Entry->TimezoneInfo);
+    lError = RegQueryValueExW(hZoneKey,
+                              L"TZI",
+                              NULL,
+                              NULL,
+                              (LPBYTE)&Entry->TimezoneInfo,
+                              &dwValueSize);
+    if (lError != ERROR_SUCCESS)
+        return lError;
+
+    dwValueSize = sizeof(DWORD);
+    lError = RegQueryValueExW(hZoneKey,
+                         L"Index",
+                         NULL,
+                         NULL,
+                         (LPBYTE)&Entry->Index,
+                         &dwValueSize);
+    if (lError != ERROR_SUCCESS)
+    {
+        Entry->Index = 0;
+        lError = ERROR_SUCCESS;
+    }
+
+    return lError;
+}
+
+
 static VOID
 CreateTimeZoneList(PSETUPDATA SetupData)
 {
     WCHAR szKeyName[256];
     DWORD dwIndex;
     DWORD dwNameSize;
-    DWORD dwValueSize;
     LONG lError;
     HKEY hZonesKey;
     HKEY hZoneKey;
@@ -1046,14 +1161,13 @@ CreateTimeZoneList(PSETUPDATA SetupData)
     if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
                       L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones",
                       0,
-                      KEY_ALL_ACCESS,
+                      KEY_ENUMERATE_SUB_KEYS,
                       &hZonesKey))
         return;
 
-    dwIndex = 0;
-    while (TRUE)
+    for (dwIndex = 0; ; dwIndex++)
     {
-        dwNameSize = 256 * sizeof(WCHAR);
+        dwNameSize = sizeof(szKeyName);
         lError = RegEnumKeyExW(hZonesKey,
                                dwIndex,
                                szKeyName,
@@ -1062,13 +1176,13 @@ CreateTimeZoneList(PSETUPDATA SetupData)
                                NULL,
                                NULL,
                                NULL);
-        if (lError != ERROR_SUCCESS && lError != ERROR_MORE_DATA)
+        if (lError == ERROR_NO_MORE_ITEMS)
             break;
 
         if (RegOpenKeyExW(hZonesKey,
                           szKeyName,
                           0,
-                          KEY_ALL_ACCESS,
+                          KEY_QUERY_VALUE,
                           &hZoneKey))
             break;
 
@@ -1079,70 +1193,19 @@ CreateTimeZoneList(PSETUPDATA SetupData)
             break;
         }
 
-        dwValueSize = 64 * sizeof(WCHAR);
-        if (RegQueryValueExW(hZoneKey,
-                             L"Display",
-                             NULL,
-                             NULL,
-                             (LPBYTE)&Entry->Description,
-                             &dwValueSize))
-        {
-            RegCloseKey(hZoneKey);
-            break;
-        }
-
-        dwValueSize = 32 * sizeof(WCHAR);
-        if (RegQueryValueExW(hZoneKey,
-                             L"Std",
-                             NULL,
-                             NULL,
-                             (LPBYTE)&Entry->StandardName,
-                             &dwValueSize))
-        {
-            RegCloseKey(hZoneKey);
-            break;
-        }
-
-        dwValueSize = 32 * sizeof(WCHAR);
-        if (RegQueryValueExW(hZoneKey,
-                             L"Dlt",
-                             NULL,
-                             NULL,
-                             (LPBYTE)&Entry->DaylightName,
-                             &dwValueSize))
-        {
-            RegCloseKey(hZoneKey);
-            break;
-        }
+        lError = QueryTimezoneData(hZoneKey,
+                                   Entry);
 
-        dwValueSize = sizeof(DWORD);
-        if (RegQueryValueExW(hZoneKey,
-                             L"Index",
-                             NULL,
-                             NULL,
-                             (LPBYTE)&Entry->Index,
-                             &dwValueSize))
-        {
-            RegCloseKey(hZoneKey);
-            break;
-        }
+        RegCloseKey(hZoneKey);
 
-        dwValueSize = sizeof(TZ_INFO);
-        if (RegQueryValueExW(hZoneKey,
-                             L"TZI",
-                             NULL,
-                             NULL,
-                             (LPBYTE)&Entry->TimezoneInfo,
-                             &dwValueSize))
+        if (lError != ERROR_SUCCESS)
         {
-            RegCloseKey(hZoneKey);
+            HeapFree(GetProcessHeap(), 0, Entry);
             break;
         }
 
-        RegCloseKey(hZoneKey);
-
         if (SetupData->TimeZoneListHead == NULL &&
-                SetupData->TimeZoneListTail == NULL)
+            SetupData->TimeZoneListTail == NULL)
         {
             Entry->Prev = NULL;
             Entry->Next = NULL;
@@ -1151,7 +1214,7 @@ CreateTimeZoneList(PSETUPDATA SetupData)
         }
         else
         {
-            Current = GetLargerTimeZoneEntry(SetupData, Entry->Index);
+            Current = GetLargerTimeZoneEntry(SetupData, Entry->TimezoneInfo.Bias, Entry->Description);
             if (Current != NULL)
             {
                 if (Current == SetupData->TimeZoneListHead)
@@ -1180,11 +1243,14 @@ CreateTimeZoneList(PSETUPDATA SetupData)
                 SetupData->TimeZoneListTail = Entry;
             }
         }
-
-        dwIndex++;
     }
 
     RegCloseKey(hZonesKey);
+
+    for (Entry = SetupData->TimeZoneListHead; Entry; Entry = Entry->Next)
+    {
+        DPRINT1("[%03d] %.128S (%.33S)\n", Entry->Index, Entry->Description, Entry->DaylightName);
+    }
 }
 
 
@@ -1392,7 +1458,11 @@ SetLocalTimeZone(HWND hwnd, PSETUPDATA SetupData)
            sizeof(SYSTEMTIME));
 
     /* Set time zone information */
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping SetTimeZoneInformation()\n");
+#else
     SetTimeZoneInformation(&TimeZoneInformation);
+#endif
 }
 
 
@@ -1428,6 +1498,10 @@ GetLocalSystemTime(HWND hwnd, PSETUPDATA SetupData)
 static VOID
 SetAutoDaylightInfo(HWND hwnd)
 {
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping SetAutoDaylightInfo(=1)\n");
+    return;
+#endif
     HKEY hKey;
     DWORD dwValue = 1;
 
@@ -1454,6 +1528,10 @@ SetAutoDaylightInfo(HWND hwnd)
 static BOOL
 SetSystemLocalTime(HWND hwnd, PSETUPDATA SetupData)
 {
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping SetSystemLocalTime()\n");
+    return TRUE;
+#endif
     BOOL Ret = FALSE;
 
     /*
@@ -1527,7 +1605,9 @@ DateTimePageDlgProc(HWND hwndDlg,
 
             CreateTimeZoneList(SetupData);
 
+#if !defined(TEST_DONT_APPLY_DATA)
             if (SetupData->UnattendSetup)
+#endif
             {
                 ShowTimeZoneList(GetDlgItem(hwndDlg, IDC_TIMEZONELIST),
                                  SetupData, SetupData->TimeZoneIndex);
@@ -1537,6 +1617,7 @@ DateTimePageDlgProc(HWND hwndDlg,
                     SendDlgItemMessage(hwndDlg, IDC_AUTODAYLIGHT, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
                 }
             }
+#if !defined(TEST_DONT_APPLY_DATA)
             else
             {
                 ShowTimeZoneList(GetDlgItem(hwndDlg, IDC_TIMEZONELIST),
@@ -1544,6 +1625,7 @@ DateTimePageDlgProc(HWND hwndDlg,
 
                 SendDlgItemMessage(hwndDlg, IDC_AUTODAYLIGHT, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
             }
+#endif
             break;
 
         case WM_TIMER:
@@ -1556,7 +1638,9 @@ DateTimePageDlgProc(HWND hwndDlg,
                 case PSN_SETACTIVE:
                     /* Enable the Back and Next buttons */
                     PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
+#if !defined(TEST_DONT_APPLY_DATA)
                     if (SetupData->UnattendSetup && WriteDateTimeSettings(hwndDlg, SetupData))
+#endif
                     {
                         SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, SetupData->uFirstNetworkWizardPage);
                         return TRUE;
@@ -1694,8 +1778,8 @@ ThemePageDlgProc(HWND hwndDlg,
                     PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
                     if (SetupData->UnattendSetup)
                     {
-                        SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, SetupData->uFirstNetworkWizardPage);
-                        return TRUE;
+                        //SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, SetupData->uFirstNetworkWizardPage);
+                        //return TRUE;
                     }
                     break;
 
@@ -1901,7 +1985,11 @@ RegistrationProc(LPVOID Parameter)
     SetupTermDefaultQueueCallback(RegistrationData->DefaultContext);
     HeapFree(GetProcessHeap(), 0, RegistrationData);
 
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping RegisterTypeLibraries(TypeLibraries)\n");
+#else
     RegisterTypeLibraries(hSysSetupInf, L"TypeLibraries");
+#endif
 
     // FIXME: Move this call to a separate cleanup page!
     RtlCreateBootStatusDataFile();
@@ -2086,6 +2174,10 @@ ProcessPageDlgProc(HWND hwndDlg,
 static VOID
 SetInstallationCompleted(VOID)
 {
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping SetInstallationCompleted()\n");
+    return;
+#endif
     HKEY hKey = 0;
     DWORD InProgress = 0;
     DWORD InstallDate;
@@ -2129,7 +2221,11 @@ FinishDlgProc(HWND hwndDlg,
             if (!SetupData->UnattendSetup || !SetupData->DisableGeckoInst)
             {
                 /* Run the Wine Gecko prompt */
+#if defined(TEST_DONT_APPLY_DATA)
+                DPRINT1("DEBUG: Skipping Control_RunDLLW(install_gecko)\n");
+#else
                 Control_RunDLLW(hwndDlg, 0, L"appwiz.cpl install_gecko", SW_SHOW);
+#endif
             }
 
             /* Set title font */
@@ -2276,7 +2372,7 @@ ProcessUnattendSection(
     WCHAR szName[256];
     WCHAR szValue[MAX_PATH];
     DWORD LineLength;
-    HKEY hKey;
+    HKEY hKey = NULL;
 
     if (!SetupFindFirstLineW(pSetupData->hSetupInf,
                              L"Unattend",
@@ -2441,10 +2537,17 @@ ProcessUnattendSection(
                 }
             } while (SetupFindNextLine(&InfContext, &InfContext));
 
+#if defined(TEST_DONT_APPLY_DATA)
+            DPRINT1("DEBUG: Skipping ProcessUnattendSection(ChangeDisplaySettingsW)\n");
+#else
             ChangeDisplaySettingsW(&dm, CDS_UPDATEREGISTRY);
+#endif
         }
     }
 
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping ProcessUnattendSection(RegOpenKeyExW(RunOnce))\n");
+#else
     if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
                       L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce",
                       0,
@@ -2454,6 +2557,7 @@ ProcessUnattendSection(
         DPRINT1("Error: failed to open HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\n");
         return;
     }
+#endif
 
     if (SetupFindFirstLineW(pSetupData->hSetupInf,
                             L"GuiRunOnce",
@@ -2476,6 +2580,10 @@ ProcessUnattendSection(
                 if (ExpandEnvironmentStringsW(szValue, szPath, MAX_PATH))
                 {
                     DPRINT("value %S\n", szPath);
+#if defined(TEST_DONT_APPLY_DATA)
+                    DPRINT1("DEBUG: Skipping ProcessUnattendSection(RegSetValueExW(%S))\n");
+                    i++;
+#else
                     if (RegSetValueExW(hKey,
                                        szName,
                                        0,
@@ -2485,6 +2593,7 @@ ProcessUnattendSection(
                     {
                         i++;
                     }
+#endif
                 }
             }
         } while (SetupFindNextLine(&InfContext, &InfContext));
@@ -2509,7 +2618,9 @@ ProcessSetupInf(
     /* Retrieve the path of the setup INF */
     GetSystemDirectoryW(szPath, _countof(szPath));
     wcscat(szPath, L"\\$winnt$.inf");
-
+#if defined(TEST_DONT_APPLY_DATA)
+    wcscpy(szPath, L"R:\\$winnt$.inf");
+#endif
     /* Open the setup INF */
     pSetupData->hSetupInf = SetupOpenInfFileW(szPath,
                                               NULL,
@@ -2559,8 +2670,11 @@ ProcessSetupInf(
 
     /* Save the path in Win32 format in the setup INF */
     swprintf(szValue, L"\"%s\"", pSetupData->SourcePath);
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping WritePrivateProfileStringW(%S=%S)\n", szValue, szPath);
+#else
     WritePrivateProfileStringW(L"data", L"dospath", szValue, szPath);
-
+#endif
     /*
      * Save it also in the registry, in the following keys:
      * - HKLM\Software\Microsoft\Windows\CurrentVersion\Setup ,
@@ -2581,6 +2695,9 @@ ProcessSetupInf(
     }
 #endif
 
+#if defined(TEST_DONT_APPLY_DATA)
+    DPRINT1("DEBUG: Skipping CurrentVersion\\Setup(SourcePath=%S, ServicePackSourcePath=%S)\n", pSetupData->SourcePath, pSetupData->SourcePath);
+#else
     res = RegCreateKeyExW(HKEY_LOCAL_MACHINE,
                           L"Software\\Microsoft\\Windows\\CurrentVersion\\Setup",
                           0, NULL,
@@ -2607,7 +2724,7 @@ ProcessSetupInf(
 
         RegCloseKey(hKey);
     }
-
+#endif
 
     /* Now, re-open the setup INF (this must succeed) */
     pSetupData->hSetupInf = SetupOpenInfFileW(szPath,
@@ -2768,7 +2885,7 @@ InstallWizard(VOID)
     psp.pszTemplate = MAKEINTRESOURCE(IDD_FINISHPAGE);
     phpage[nPages++] = CreatePropertySheetPage(&psp);
 
-    ASSERT(nPages == dwPageCount);
+    //ASSERT(nPages == dwPageCount);
 
     /* Create the property sheet */
     psh.dwSize = sizeof(PROPSHEETHEADER);
@@ -2817,4 +2934,12 @@ done:
     LogItem(L"END_SECTION", L"InstallWizard");
 }
 
+
+
+void WINAPI ReactOS_RunInstallWizard(HWND hWnd, HINSTANCE hInst, LPCWSTR cmd, DWORD nCmdShow)
+{
+    InstallWizard();
+}
+
+
 /* EOF */
