Changed the logic that controls sequencing through dialogs for easier

maintenance.
  (Bug 23445, r=dprice, sr=dveditz)
This commit is contained in:
curt%netscape.com 2002-08-06 01:19:51 +00:00
Родитель 6f1de71cec
Коммит 8cc24d2275
4 изменённых файлов: 174 добавлений и 240 удалений

Просмотреть файл

@ -119,7 +119,7 @@ LRESULT CALLBACK DlgProcWelcome(HWND hDlg, UINT msg, WPARAM wParam, LONG lParam)
{
case IDWIZNEXT:
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDCANCEL:
@ -199,12 +199,12 @@ LRESULT CALLBACK DlgProcLicense(HWND hDlg, UINT msg, WPARAM wParam, LONG lParam)
{
case IDWIZNEXT:
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
DestroyWindow(hDlg);
DlgSequencePrev();
DlgSequence(PREV_DLG);
break;
case IDCANCEL:
@ -782,14 +782,14 @@ LRESULT CALLBACK DlgProcSetupType(HWND hDlg, UINT msg, WPARAM wParam, LONG lPara
}
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
dwTempSetupType = dwSetupType;
lstrcpy(szTempSetupPath, sgProduct.szPath);
DestroyWindow(hDlg);
DlgSequencePrev();
DlgSequence(PREV_DLG);
break;
case IDCANCEL:
@ -1187,12 +1187,12 @@ LRESULT CALLBACK DlgProcSelectComponents(HWND hDlg, UINT msg, WPARAM wParam, LON
case IDWIZNEXT:
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
DestroyWindow(hDlg);
DlgSequencePrev();
DlgSequence(PREV_DLG);
break;
case IDCANCEL:
@ -1333,12 +1333,12 @@ LRESULT CALLBACK DlgProcSelectAdditionalComponents(HWND hDlg, UINT msg, WPARAM w
case IDWIZNEXT:
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
DestroyWindow(hDlg);
DlgSequencePrev();
DlgSequence(PREV_DLG);
break;
case IDCANCEL:
@ -1475,13 +1475,12 @@ LRESULT CALLBACK DlgProcWindowsIntegration(HWND hDlg, UINT msg, WPARAM wParam, L
}
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
dwWizardState = DLG_WINDOWS_INTEGRATION;
DestroyWindow(hDlg);
DlgSequencePrev();
DlgSequence(PREV_DLG);
break;
case IDCANCEL:
@ -1567,15 +1566,14 @@ LRESULT CALLBACK DlgProcProgramFolder(HWND hDlg, UINT msg, WPARAM wParam, LONG l
break;
}
lstrcpy(sgProduct.szProgramFolderName, szBuf);
dwWizardState = DLG_ADVANCED_SETTINGS;
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
DestroyWindow(hDlg);
DlgSequencePrev();
DlgSequence(PREV_DLG);
break;
case IDC_LIST:
@ -1690,8 +1688,6 @@ LRESULT CALLBACK DlgProcAdvancedSettings(HWND hDlg, UINT msg, WPARAM wParam, LON
switch(LOWORD(wParam))
{
case IDWIZNEXT:
dwWizardState = DLG_QUICK_LAUNCH;
/* get the proxy server and port information */
GetDlgItemText(hDlg, IDC_EDIT_PROXY_SERVER, diAdvancedSettings.szProxyServer, MAX_BUF);
GetDlgItemText(hDlg, IDC_EDIT_PROXY_PORT, diAdvancedSettings.szProxyPort, MAX_BUF);
@ -1700,13 +1696,13 @@ LRESULT CALLBACK DlgProcAdvancedSettings(HWND hDlg, UINT msg, WPARAM wParam, LON
SaveDownloadProtocolOption(hDlg);
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
case IDCANCEL:
DestroyWindow(hDlg);
DlgSequencePrev();
DlgSequence(PREV_DLG);
break;
default:
@ -1850,20 +1846,19 @@ LRESULT CALLBACK DlgProcAdditionalOptions(HWND hDlg, UINT msg, WPARAM wParam, LO
case IDWIZNEXT:
SaveAdditionalOptions(hDlg, hwndCBSiteSelector);
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
SaveAdditionalOptions(hDlg, hwndCBSiteSelector);
DestroyWindow(hDlg);
DlgSequencePrev();
DlgSequence(PREV_DLG);
break;
case IDC_BUTTON_ADDITIONAL_SETTINGS:
SaveAdditionalOptions(hDlg, hwndCBSiteSelector);
dwWizardState = DLG_PROGRAM_FOLDER;
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(OTHER_DLG_1);
break;
case IDCANCEL:
@ -2217,7 +2212,7 @@ LRESULT CALLBACK DlgProcQuickLaunch(HWND hDlg, UINT msg, WPARAM wParam, LONG lPa
}
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
@ -2229,7 +2224,7 @@ LRESULT CALLBACK DlgProcQuickLaunch(HWND hDlg, UINT msg, WPARAM wParam, LONG lPa
diQuickLaunch.bTurboMode = FALSE;
}
DestroyWindow(hDlg);
DlgSequencePrev();
DlgSequence(PREV_DLG);
break;
case IDCANCEL:
@ -2299,19 +2294,12 @@ LRESULT CALLBACK DlgProcStartInstall(HWND hDlg, UINT msg, WPARAM wParam, LONG lP
{
case IDWIZNEXT:
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
dwWizardState = DLG_ADVANCED_SETTINGS;
DestroyWindow(hDlg);
DlgSequencePrev();
break;
case IDC_BUTTON_SITE_SELECTOR:
dwWizardState = DLG_PROGRAM_FOLDER;
DestroyWindow(hDlg);
DlgSequenceNext();
DlgSequence(PREV_DLG);
break;
case IDCANCEL:
@ -2527,6 +2515,7 @@ HWND InstantiateDialog(HWND hParent, DWORD dwDlgID, LPSTR szTitle, WNDPROC wpDlg
char szBuf[MAX_BUF];
HWND hDlg = NULL;
if((hDlg = CreateDialog(hSetupRscInst, MAKEINTRESOURCE(dwDlgID), hParent, wpDlgProc)) == NULL)
{
char szEDialogCreate[MAX_BUF];
@ -2580,22 +2569,123 @@ void SetTurboArgs(void)
}
}
void DlgSequenceNext()
void DlgSequence(int iDirection)
{
HRESULT hrValue;
HRESULT hrErr;
char szDestPath[MAX_BUF];
char szInstallLogFile[MAX_BUF];
BOOL bDone = FALSE;
do
{
gbProcessingXpnstallFiles = FALSE;
if(iDirection == NEXT_DLG)
{
switch(dwWizardState)
{
case DLG_NONE:
dwWizardState = DLG_WELCOME;
break;
case DLG_WELCOME:
dwWizardState = DLG_LICENSE;
break;
case DLG_LICENSE:
dwWizardState = DLG_SETUP_TYPE;
break;
case DLG_SETUP_TYPE:
dwWizardState = DLG_SELECT_COMPONENTS;
break;
case DLG_SELECT_COMPONENTS:
dwWizardState = DLG_SELECT_ADDITIONAL_COMPONENTS;
break;
case DLG_SELECT_ADDITIONAL_COMPONENTS:
dwWizardState = DLG_WINDOWS_INTEGRATION;
break;
case DLG_WINDOWS_INTEGRATION:
dwWizardState = DLG_PROGRAM_FOLDER;
break;
case DLG_PROGRAM_FOLDER:
dwWizardState = DLG_QUICK_LAUNCH;
break;
case DLG_QUICK_LAUNCH:
dwWizardState = DLG_ADDITIONAL_OPTIONS;
break;
case DLG_ADDITIONAL_OPTIONS:
dwWizardState = DLG_START_INSTALL;
break;
case DLG_START_INSTALL:
dwWizardState = DLG_COMMIT_INSTALL;
break;
case DLG_ADVANCED_SETTINGS:
dwWizardState = DLG_ADDITIONAL_OPTIONS;
break;
default:
dwWizardState = DLG_WELCOME;
break; }
}
else if(iDirection == PREV_DLG)
{
switch(dwWizardState)
{
case DLG_LICENSE:
dwWizardState = DLG_WELCOME;
break;
case DLG_SETUP_TYPE:
dwWizardState = DLG_LICENSE;
break;
case DLG_SELECT_COMPONENTS:
dwWizardState = DLG_SETUP_TYPE;
break;
case DLG_SELECT_ADDITIONAL_COMPONENTS:
dwWizardState = DLG_SELECT_COMPONENTS;
break;
case DLG_WINDOWS_INTEGRATION:
dwWizardState = DLG_SELECT_ADDITIONAL_COMPONENTS;
break;
case DLG_PROGRAM_FOLDER:
dwWizardState = DLG_WINDOWS_INTEGRATION;
break;
case DLG_QUICK_LAUNCH:
dwWizardState = DLG_PROGRAM_FOLDER;
break;
case DLG_ADDITIONAL_OPTIONS:
dwWizardState = DLG_QUICK_LAUNCH;
break;
case DLG_START_INSTALL:
dwWizardState = DLG_ADDITIONAL_OPTIONS;
break;
case DLG_ADVANCED_SETTINGS:
dwWizardState = DLG_ADDITIONAL_OPTIONS;
break;
default:
dwWizardState = DLG_WELCOME;
break;
}
}
else if(iDirection == OTHER_DLG_1)
{
switch(dwWizardState)
{
case DLG_ADDITIONAL_OPTIONS:
dwWizardState = DLG_ADVANCED_SETTINGS;
break;
// You'll get here only if DLG_ADVANCED_SETTINGS is not displayed, which really should
// should never be the case unless DLG_ADDITIONAL_OPTIONS is also not displayed, since this
// is a button off that dialog. But if the user turns this off in error, handling the case
// will keep from dropping into an infinite loop.
case DLG_ADVANCED_SETTINGS:
dwWizardState = DLG_ADDITIONAL_OPTIONS;
break;
}
}
switch(dwWizardState)
{
case DLG_NONE:
dwWizardState = DLG_WELCOME;
gbProcessingXpnstallFiles = FALSE;
case DLG_WELCOME:
if(diWelcome.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diWelcome.szTitle, DlgProcWelcome);
@ -2603,9 +2693,7 @@ void DlgSequenceNext()
}
break;
case DLG_WELCOME:
dwWizardState = DLG_LICENSE;
gbProcessingXpnstallFiles = FALSE;
case DLG_LICENSE:
if(diLicense.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diLicense.szTitle, DlgProcLicense);
@ -2613,20 +2701,15 @@ void DlgSequenceNext()
}
break;
case DLG_LICENSE:
dwWizardState = DLG_SETUP_TYPE;
gbProcessingXpnstallFiles = FALSE;
case DLG_SETUP_TYPE:
if(diSetupType.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diSetupType.szTitle, DlgProcSetupType);
bDone = TRUE;
}
break;
case DLG_SETUP_TYPE:
dwWizardState = DLG_SELECT_COMPONENTS;
gbProcessingXpnstallFiles = FALSE;
case DLG_SELECT_COMPONENTS:
if((diSelectComponents.bShowDialog) && (sgProduct.dwCustomType == dwSetupType))
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diSelectComponents.szTitle, DlgProcSelectComponents);
@ -2634,9 +2717,7 @@ void DlgSequenceNext()
}
break;
case DLG_SELECT_COMPONENTS:
dwWizardState = DLG_SELECT_ADDITIONAL_COMPONENTS;
gbProcessingXpnstallFiles = FALSE;
case DLG_SELECT_ADDITIONAL_COMPONENTS:
if((diSelectAdditionalComponents.bShowDialog) && (GetAdditionalComponentsCount() > 0))
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diSelectAdditionalComponents.szTitle, DlgProcSelectAdditionalComponents);
@ -2644,9 +2725,7 @@ void DlgSequenceNext()
}
break;
case DLG_SELECT_ADDITIONAL_COMPONENTS:
dwWizardState = DLG_WINDOWS_INTEGRATION;
gbProcessingXpnstallFiles = FALSE;
case DLG_WINDOWS_INTEGRATION:
if(diWindowsIntegration.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diWindowsIntegration.szTitle, DlgProcWindowsIntegration);
@ -2654,37 +2733,23 @@ void DlgSequenceNext()
}
break;
case DLG_WINDOWS_INTEGRATION:
dwWizardState = DLG_PROGRAM_FOLDER;
gbProcessingXpnstallFiles = FALSE;
case DLG_PROGRAM_FOLDER:
if(diProgramFolder.bShowDialog && (sgProduct.dwCustomType == dwSetupType))
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diProgramFolder.szTitle, DlgProcProgramFolder);
bDone = TRUE;
}
else
{
dwWizardState = DLG_ADVANCED_SETTINGS;
}
break;
break;
case DLG_PROGRAM_FOLDER:
dwWizardState = DLG_ADVANCED_SETTINGS;
gbProcessingXpnstallFiles = FALSE;
case DLG_ADVANCED_SETTINGS:
if(diAdvancedSettings.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diAdvancedSettings.szTitle, DlgProcAdvancedSettings);
bDone = TRUE;
}
else
{
dwWizardState = DLG_QUICK_LAUNCH;
}
break;
case DLG_ADVANCED_SETTINGS:
dwWizardState = DLG_QUICK_LAUNCH;
gbProcessingXpnstallFiles = FALSE;
case DLG_QUICK_LAUNCH:
if(diQuickLaunch.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diQuickLaunch.szTitle, DlgProcQuickLaunch);
@ -2692,21 +2757,14 @@ void DlgSequenceNext()
}
break;
case DLG_QUICK_LAUNCH:
dwWizardState = DLG_ADDITIONAL_OPTIONS;
gbProcessingXpnstallFiles = FALSE;
case DLG_ADDITIONAL_OPTIONS:
do
{
hrValue = VerifyDiskSpace();
if(hrValue == IDOK)
{
/* show previous visible window */
dwWizardState = DLG_SELECT_COMPONENTS;
DlgSequencePrev();
bDone = TRUE;
break;
iDirection = PREV_DLG;
}
else if(hrValue == IDCANCEL)
{
@ -2715,27 +2773,17 @@ void DlgSequenceNext()
}
}while(hrValue == IDRETRY);
if(hrValue == IDOK)
if(hrValue != IDOK)
{
/* break out of this case because we need to show the previous dialog */
bDone = TRUE;
break;
}
if(ShowAdditionalOptionsDialog() == TRUE)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diAdditionalOptions.szTitle, DlgProcAdditionalOptions);
bDone = TRUE;
}
else
{
dwWizardState = DLG_ADDITIONAL_OPTIONS;
if(ShowAdditionalOptionsDialog() == TRUE)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diAdditionalOptions.szTitle, DlgProcAdditionalOptions);
bDone = TRUE;
}
}
break;
case DLG_ADDITIONAL_OPTIONS:
dwWizardState = DLG_START_INSTALL;
gbProcessingXpnstallFiles = FALSE;
case DLG_START_INSTALL:
if(diStartInstall.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diStartInstall.szTitle, DlgProcStartInstall);
@ -2743,9 +2791,20 @@ void DlgSequenceNext()
}
break;
default:
dwWizardState = DLG_START_INSTALL;
case DLG_COMMIT_INSTALL:
gbProcessingXpnstallFiles = TRUE;
CommitInstall();
bDone = TRUE;
break;
}
} while(!bDone);
}
void CommitInstall(void)
{
HRESULT hrErr;
char szDestPath[MAX_BUF];
char szInstallLogFile[MAX_BUF];
LogISDestinationPath();
LogISSetupType();
@ -2812,9 +2871,7 @@ void DlgSequenceNext()
CleanupXpcomFile();
PostQuitMessage(0);
/* break out of switch statment */
bDone = TRUE;
break;
return;
}
if(gbDownloadTriggered || gbPreviousUnfinishedDownload)
@ -2835,9 +2892,7 @@ void DlgSequenceNext()
CleanupXpcomFile();
PostQuitMessage(0);
/* break out of switch statment */
bDone = TRUE;
break;
return;
}
lstrcat(szDestPath, "uninstall\\");
@ -2900,130 +2955,4 @@ void DlgSequenceNext()
PostQuitMessage(0);
}
gbProcessingXpnstallFiles = FALSE;
bDone = TRUE;
break;
}
} while(!bDone);
}
void DlgSequencePrev()
{
BOOL bDone = FALSE;
do
{
switch(dwWizardState)
{
case DLG_START_INSTALL:
dwWizardState = DLG_ADVANCED_SETTINGS;
gbProcessingXpnstallFiles = FALSE;
if(diAdvancedSettings.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diAdvancedSettings.szTitle, DlgProcAdvancedSettings);
bDone = TRUE;
}
break;
case DLG_ADVANCED_SETTINGS:
dwWizardState = DLG_ADDITIONAL_OPTIONS;
gbProcessingXpnstallFiles = FALSE;
if(ShowAdditionalOptionsDialog() == TRUE)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diAdditionalOptions.szTitle, DlgProcAdditionalOptions);
bDone = TRUE;
}
break;
case DLG_ADDITIONAL_OPTIONS:
dwWizardState = DLG_QUICK_LAUNCH;
gbProcessingXpnstallFiles = FALSE;
if(diQuickLaunch.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diQuickLaunch.szTitle, DlgProcQuickLaunch);
bDone = TRUE;
}
break;
case DLG_QUICK_LAUNCH:
dwWizardState = DLG_PROGRAM_FOLDER;
gbProcessingXpnstallFiles = FALSE;
if(diProgramFolder.bShowDialog && (sgProduct.dwCustomType == dwSetupType))
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diProgramFolder.szTitle, DlgProcProgramFolder);
bDone = TRUE;
}
break;
case DLG_PROGRAM_FOLDER:
dwWizardState = DLG_WINDOWS_INTEGRATION;
gbProcessingXpnstallFiles = FALSE;
if(diWindowsIntegration.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diWindowsIntegration.szTitle, DlgProcWindowsIntegration);
bDone = TRUE;
}
break;
case DLG_WINDOWS_INTEGRATION:
dwWizardState = DLG_SELECT_ADDITIONAL_COMPONENTS;
gbProcessingXpnstallFiles = FALSE;
if((diSelectAdditionalComponents.bShowDialog) && (GetAdditionalComponentsCount() > 0))
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diSelectAdditionalComponents.szTitle, DlgProcSelectAdditionalComponents);
bDone = TRUE;
}
break;
case DLG_SELECT_ADDITIONAL_COMPONENTS:
dwWizardState = DLG_SELECT_COMPONENTS;
gbProcessingXpnstallFiles = FALSE;
if(diSelectComponents.bShowDialog && (sgProduct.dwCustomType == dwSetupType))
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diSelectComponents.szTitle, DlgProcSelectComponents);
bDone = TRUE;
}
break;
case DLG_SELECT_COMPONENTS:
dwWizardState = DLG_SETUP_TYPE;
gbProcessingXpnstallFiles = FALSE;
if(diSetupType.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diSetupType.szTitle, DlgProcSetupType);
bDone = TRUE;
}
break;
case DLG_SETUP_TYPE:
dwWizardState = DLG_LICENSE;
gbProcessingXpnstallFiles = FALSE;
if(diLicense.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diLicense.szTitle, DlgProcLicense);
bDone = TRUE;
}
break;
case DLG_LICENSE:
dwWizardState = DLG_WELCOME;
gbProcessingXpnstallFiles = FALSE;
if(diWelcome.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, dwWizardState, diWelcome.szTitle, DlgProcWelcome);
bDone = TRUE;
}
break;
default:
dwWizardState = DLG_WELCOME;
gbProcessingXpnstallFiles = FALSE;
if(diWelcome.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, DLG_WELCOME, diWelcome.szTitle, DlgProcWelcome);
bDone = TRUE;
}
break;
}
} while(!bDone);
}

Просмотреть файл

@ -47,8 +47,7 @@ void ToggleCheck(HWND hwndListBox, DWORD dwIndex, DWORD dwACFlag);
BOOL AskCancelDlg(HWND hDlg);
void lbAddItem(HWND hList, siC *siCComponent);
HWND InstantiateDialog(HWND hParent, DWORD dwDlgID, LPSTR szTitle, WNDPROC wpDlgProc);
void DlgSequenceNext(void);
void DlgSequencePrev(void);
void DlgSequence(int iDirection);
void PaintGradientShade(HWND hWnd, HDC hdc);
BOOL BrowseForDirectory(HWND hDlg, char *szCurrDir);
LRESULT CALLBACK BrowseHookProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
@ -64,6 +63,7 @@ void SaveAdditionalOptions(HWND hDlg, HWND hwndCBSiteSelector);
WNDPROC SubclassWindow( HWND hWnd, WNDPROC NewWndProc);
LRESULT CALLBACK ListBoxBrowseWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
void DisableSystemMenuItems(HWND hWnd, BOOL bDisableClose);
void CommitInstall(void);
#endif /* _DIALOGS_H_ */

Просмотреть файл

@ -179,7 +179,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmd
}
else
{
DlgSequenceNext();
DlgSequence(NEXT_DLG);
}
}

Просмотреть файл

@ -66,6 +66,10 @@ typedef int PRInt32;
#define FILE_ALL_JS "all-proxy.js"
#define VR_DEFAULT_PRODUCT_NAME "Mozilla"
#define NEXT_DLG 1
#define PREV_DLG 2
#define OTHER_DLG_1 3
#define MAX_CRC_FAILED_DOWNLOAD_RETRIES 3
#define MAX_FILE_DOWNLOAD_RETRIES 3
@ -145,6 +149,7 @@ typedef int PRInt32;
#define ERROR_CODE_HIDE 0
#define ERROR_CODE_SHOW 1
#define DLG_NONE 0
#define DLG_COMMIT_INSTALL 1
#define CX_CHECKBOX 13
#define CY_CHECKBOX 13