Continuing OS/2 XPINSTALL Wizard work

This commit is contained in:
mkaply%us.ibm.com 2002-09-13 22:41:34 +00:00
parent 40c6526d2e
commit b018a5c2d2
15 changed files with 580 additions and 185 deletions

View File

@ -74,9 +74,40 @@ BOOL gbUncompressOnly;
ULONG ulMode;
static ULONG nTotalBytes = 0; // sum of all the FILE resources
char szOSTempDir[CCHMAXPATH];
/////////////////////////////////////////////////////////////////////////////
// Utility Functions
BOOL isFAT(char* szPath)
{
APIRET rc;
ULONG ulSize;
PFSQBUFFER2 pfsqbuf2;
CHAR szDrive[3];
ulSize = sizeof(FSQBUFFER2) + 3 * CCHMAXPATH;
pfsqbuf2 = (PFSQBUFFER2)malloc(ulSize);
strncpy(szDrive, szPath, 2);
szDrive[2] = '\0';
DosError(FERR_DISABLEHARDERR);
rc = DosQueryFSAttach(szDrive, 0, FSAIL_QUERYNAME,
pfsqbuf2, &ulSize);
DosError(FERR_ENABLEHARDERR);
if (rc == NO_ERROR) {
if (strcmp((char*)(pfsqbuf2->szFSDName + pfsqbuf2->cbName), "FAT") == 0) {
return TRUE;
}
}
if (rc == NO_ERROR) {
return FALSE;
} else {
return TRUE;
}
}
HWND FindWindow(PCSZ pszAtomString)
{
ATOM atom;
@ -103,39 +134,6 @@ HWND FindWindow(PCSZ pszAtomString)
return hwnd;
}
// This function is similar to GetFullPathName except instead of
// using the current drive and directory it uses the path of the
// directory designated for temporary files
// If you don't specify a filename, you just get the temp dir without
// a trailing slash
static BOOL
GetFullTempPathName(PCSZ szFileName, ULONG ulBufferLength, PSZ szBuffer)
{
ULONG ulLen;
char *c = getenv( "TMP");
if (c) {
strcpy(szBuffer, c);
} else {
c = getenv("TEMP");
if (c) {
strcpy(szBuffer, c);
}
}
ulLen = strlen(szBuffer);
if (szBuffer[ulLen - 1] != '\\')
strcat(szBuffer, "\\");
strcat(szBuffer, WIZ_TEMP_DIR);
ulLen = strlen(szBuffer);
if ((szBuffer[ulLen - 1] != '\\') && (szFileName)) {
strcat(szBuffer, "\\");
strcat(szBuffer, szFileName);
}
return TRUE;
}
// this function appends a backslash at the end of a string,
// if one does not already exists.
static void AppendBackSlash(PSZ szInput, ULONG ulInputSize)
@ -152,6 +150,27 @@ static void AppendBackSlash(PSZ szInput, ULONG ulInputSize)
}
}
// This function is similar to GetFullPathName except instead of
// using the current drive and directory it uses the path of the
// directory designated for temporary files
// If you don't specify a filename, you just get the temp dir without
// a trailing slash
static BOOL
GetFullTempPathName(PCSZ szFileName, ULONG ulBufferLength, PSZ szBuffer)
{
strcpy(szBuffer, szOSTempDir);
AppendBackSlash(szBuffer, MAX_BUF);
strcat(szBuffer, WIZ_TEMP_DIR);
AppendBackSlash(szBuffer, MAX_BUF);
if (szFileName) {
strcat(szBuffer, szFileName);
}
return TRUE;
}
static void CreateDirectoriesAll(char* szPath)
{
int i;
@ -550,6 +569,57 @@ main(int argc, char *argv[], char *envp[])
hab = WinInitialize(0);
hmq = WinCreateMsgQueue(hab,0);
char *tempEnvVar = NULL;
// determine the system's TEMP path
tempEnvVar = getenv("TMP");
if ((tempEnvVar) && (!(isFAT(tempEnvVar)))) {
strcpy(szOSTempDir, tempEnvVar);
}
else
{
tempEnvVar = getenv("TEMP");
if (tempEnvVar)
strcpy(szOSTempDir, tempEnvVar);
}
if ((!tempEnvVar) || (isFAT(tempEnvVar)))
{
ULONG ulBootDrive = 0;
APIRET rc;
char buffer[] = " :\\OS2\\";
DosQuerySysInfo(QSV_BOOT_DRIVE, QSV_BOOT_DRIVE,
&ulBootDrive, sizeof(ulBootDrive));
buffer[0] = 'A' - 1 + ulBootDrive;
if (isFAT(buffer)) {
/* Try current disk if boot drive is FAT */
ULONG ulDriveNum;
ULONG ulDriveMap;
strcpy(buffer, " :\\");
DosQueryCurrentDisk(&ulDriveNum, &ulDriveMap);
buffer[0] = 'A' - 1 + ulDriveNum;
if (isFAT(buffer)) {
int i;
for (i = 2; i < 26; i++) {
if ((ulDriveMap<<(31-i)) >> 31) {
buffer[0] = 'A' + i;
if (!(isFAT(buffer))) {
break;
}
}
}
if (i == 26) {
char szBuf[MAX_BUF];
WinLoadString(0, NULLHANDLE, IDS_ERROR_NO_LONG_FILENAMES, sizeof(szBuf), szBuf);
WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, szBuf, NULL, 0, MB_ICONEXCLAMATION);
return(1);
}
}
}
strcpy(szOSTempDir, buffer);
strcat(szOSTempDir, "TEMP");
}
WinLoadString(0, NULLHANDLE, IDS_TITLE, MAX_BUF, szTitle);
#ifdef OLDCODE

View File

@ -64,6 +64,7 @@ BEGIN
IDS_ERROR_FILE_WRITE "Unable to write file %s"
IDS_TITLE "Installation"
IDS_ERROR_OUT_OF_MEMORY "Out of memory!"
IDS_ERROR_NO_LONG_FILENAMES "You must have at least one drive that supports long filenames to install this product."
END
/////////////////////////////////////////////////////////////////////////////

View File

@ -29,6 +29,7 @@
#define IDS_ERROR_FILE_WRITE 4
#define IDS_TITLE 5
#define IDS_ERROR_OUT_OF_MEMORY 6
#define IDS_ERROR_NO_LONG_FILENAMES 7
#define IDD_EXTRACTING 101
#define IDC_STATUS 1001
#define IDC_GAUGE 1002

View File

@ -291,6 +291,7 @@ MRESULT EXPENTRY DirDialogProc( HWND hwndDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
{
char szBuf[MAX_BUF];
PFILEDLG pfiledlg;
HRESULT hresult;
switch ( msg ) {
case WM_INITDLG:
@ -401,7 +402,10 @@ MRESULT EXPENTRY DirDialogProc( HWND hwndDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
switch ( SHORT1FROMMP( mp1 ) ) {
case DID_OK:
WinQueryDlgItemText(hwndDlg, 777, MAX_BUF, szBuf);
if(*szBuf == '\0')
if(*szBuf != '\0')
hresult = FileExists(szBuf);
if ((*szBuf == '\0') || ((hresult == TRUE) && (hresult != FILE_DIRECTORY)))
{
char szEDestinationPath[MAX_BUF];
@ -410,7 +414,13 @@ MRESULT EXPENTRY DirDialogProc( HWND hwndDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
return (MRESULT)TRUE;
}
if(FileExists(szBuf) == FALSE)
if (isFAT(szBuf)) {
GetPrivateProfileString("Messages", "ERROR_FILESYSTEM", "", szBuf, sizeof(szBuf), szFileIniInstall);
WinMessageBox(HWND_DESKTOP, hwndDlg, szBuf, NULL, 0, MB_OK | MB_ICONEXCLAMATION);
return (MRESULT)TRUE;
}
if(hresult == FALSE)
{
char szMsgCreateDirectory[MAX_BUF];
char szStrCreateDirectory[MAX_BUF];
@ -437,7 +447,7 @@ MRESULT EXPENTRY DirDialogProc( HWND hwndDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
char szECreateDirectory[MAX_BUF];
strcpy(szBufTemp, "\n\n");
strcat(szBufTemp, sgProduct.szPath);
strcat(szBufTemp, szBuf);
RemoveBackSlash(szBufTemp);
strcat(szBufTemp, "\n\n");
@ -470,6 +480,7 @@ BOOL BrowseForDirectory(HWND hDlg, char *szCurrDir)
char szSearchPathBuf[MAX_BUF];
char szDlgBrowseTitle[MAX_BUF];
BOOL bRet;
char* caret;
memset(szDlgBrowseTitle, 0, sizeof(szDlgBrowseTitle));
GetPrivateProfileString("Messages", "DLGBROWSETITLE", "", szDlgBrowseTitle, sizeof(szDlgBrowseTitle), szFileIniInstall);
@ -483,7 +494,14 @@ BOOL BrowseForDirectory(HWND hDlg, char *szCurrDir)
filedlg.fl = FDS_OPEN_DIALOG | FDS_CENTER;
filedlg.pfnDlgProc = DirDialogProc;
WinFileDlg(HWND_DESKTOP, hDlg, &filedlg);
*(strstr(filedlg.szFullFile, "^")-1) = '\0';
caret = strstr(filedlg.szFullFile, "^");
if (caret) {
*(caret-1) = '\0';
} else {
/* Something went horribly wrong. Usually this means they typed a filename */
/* that actually exists. */
/* If this is the case, use the parent directory */
}
if (filedlg.lReturn == DID_OK) {
bRet = TRUE;
@ -558,6 +576,7 @@ MRESULT EXPENTRY DlgProcSetupType(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
char szBuf[MAX_BUF];
char szBufTemp[MAX_BUF];
char szBufTemp2[MAX_BUF];
HRESULT hresult;
HOBJECT hobject;
hRadioSt0 = WinWindowFromID(hDlg, IDC_RADIO_ST0);
@ -579,6 +598,7 @@ MRESULT EXPENTRY DlgProcSetupType(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
WinSetWindowText(hDlg, diSetupType.szTitle);
hDestinationPath = WinWindowFromID(hDlg, IDC_EDIT_DESTINATION); /* handle to the static destination path text window */
strcpy(szTempSetupPath, sgProduct.szPath);
TruncateString(hDestinationPath, szTempSetupPath, szBuf, sizeof(szBuf));
WinSetDlgItemText(hDlg, IDC_EDIT_DESTINATION, szBuf);
@ -669,7 +689,10 @@ MRESULT EXPENTRY DlgProcSetupType(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
0,
SWP_MOVE);
if((*diSetupType.szReadmeFilename == '\0') || (FileExists(diSetupType.szReadmeFilename) == FALSE))
strcpy(szBuf, szSetupDir);
AppendBackSlash(szBuf, sizeof(szBuf));
strcat(szBuf, diSetupType.szReadmeFilename);
if((*diSetupType.szReadmeFilename == '\0') || (FileExists(szBuf) == FALSE))
WinShowWindow(hReadme, FALSE);
else
WinShowWindow(hReadme, TRUE);
@ -715,16 +738,20 @@ MRESULT EXPENTRY DlgProcSetupType(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
break;
case IDC_README:
#ifdef OLDCODE /* NEeds to be written */
// if(*diSetupType.szReadmeApp == '\0') {
if(*diSetupType.szReadmeApp != '\0') {
STARTDATA startdata;
PID pid;
ULONG ulSessID;
memset(&startdata, 0, sizeof(STARTDATA));
startdata.Length = sizeof(STARTDATA);
startdata.PgmName = diSetupType.szReadmeApp;
strcpy(szBuf, szSetupDir);
AppendBackSlash(szBuf, sizeof(szBuf));
strcat(szBuf, diSetupType.szReadmeFilename);
WinOpenObject(WinQueryObject(szBuf), 0, TRUE);
// WinOpenObject(WinQueryObject(szBuf), 0, TRUE);
// }
// else
// WinSpawn(diSetupType.szReadmeApp, diSetupType.szReadmeFilename, szSetupDir, TRUENORMAL, FALSE);
#endif
startdata.PgmInputs = szBuf;
DosStartSession(&startdata, &ulSessID, &pid); /* Start the session */
}
return (MRESULT)TRUE;
break;
@ -733,6 +760,22 @@ MRESULT EXPENTRY DlgProcSetupType(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
strcpy(szBuf, sgProduct.szPath);
if (isFAT(szBuf)) {
GetPrivateProfileString("Messages", "ERROR_FILESYSTEM", "", szBuf, sizeof(szBuf), szFileIniInstall);
WinMessageBox(HWND_DESKTOP, hDlg, szBuf, NULL, 0, MB_OK | MB_ICONEXCLAMATION);
return (MRESULT)TRUE;
}
hresult = FileExists(szBuf);
if ((hresult == TRUE) && (hresult != FILE_DIRECTORY))
{
char szEDestinationPath[MAX_BUF];
GetPrivateProfileString("Messages", "ERROR_DESTINATION_PATH", "", szEDestinationPath, sizeof(szEDestinationPath), szFileIniInstall);
WinMessageBox(HWND_DESKTOP, hDlg, szEDestinationPath, NULL, 0, MB_OK | MB_ICONEXCLAMATION);
return (MRESULT)TRUE;
}
if(FileExists(szBuf) == FALSE)
{
char szMsgCreateDirectory[MAX_BUF];
@ -826,13 +869,12 @@ MRESULT EXPENTRY DlgProcSetupType(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
case IDWIZBACK:
ulTempSetupType = ulSetupType;
strcpy(szTempSetupPath, sgProduct.szPath);
strcpy(sgProduct.szPath, szTempSetupPath);
WinDestroyWindow(hDlg);
DlgSequence(PREV_DLG);
break;
case IDCANCEL:
strcpy(sgProduct.szPath, szTempSetupPath);
AskCancelDlg(hDlg);
return (MRESULT)TRUE;
break;
@ -1147,6 +1189,151 @@ MRESULT EXPENTRY DlgProcSelectComponents(HWND hDlg, ULONG msg, MPARAM mp1, MPARA
return(WinDefDlgProc(hDlg, msg, mp1, mp2));
}
MRESULT APIENTRY DlgProcOS2Integration(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
{
char szBuf[MAX_BUF];
HWND hcbCheck0;
HWND hcbCheck1;
HWND hcbCheck2;
HWND hcbCheck3;
HWND hDestinationPath;
SWP swpDlg;
hcbCheck0 = WinWindowFromID(hDlg, IDC_CHECK0);
hcbCheck1 = WinWindowFromID(hDlg, IDC_CHECK1);
hcbCheck2 = WinWindowFromID(hDlg, IDC_CHECK2);
hcbCheck3 = WinWindowFromID(hDlg, IDC_CHECK3);
switch(msg)
{
case WM_INITDLG:
AdjustDialogSize(hDlg);
WinSetPresParam(hDlg, PP_FONTNAMESIZE,
strlen(sgInstallGui.szDefinedFont)+1, sgInstallGui.szDefinedFont);
WinSetWindowText(hDlg, diOS2Integration.szTitle);
if (diOS2Integration.szHomeDirectory[0]) {
strcpy(szTempSetupPath, diOS2Integration.szHomeDirectory);
hDestinationPath = WinWindowFromID(hDlg, IDC_EDIT_DESTINATION); /* handle to the static destination path text window */
TruncateString(hDestinationPath, szTempSetupPath, szBuf, sizeof(szBuf));
} else {
strcpy(szTempSetupPath, sgProduct.szPath);
hDestinationPath = WinWindowFromID(hDlg, IDC_EDIT_DESTINATION); /* handle to the static destination path text window */
TruncateString(hDestinationPath, szTempSetupPath, szBuf, sizeof(szBuf));
}
WinSetDlgItemText(hDlg, IDC_EDIT_DESTINATION, szBuf);
WinSetDlgItemText(hDlg, IDC_MESSAGE0, diOS2Integration.szMessage0);
WinSetDlgItemText(hDlg, IDC_MESSAGE1, diOS2Integration.szMessage1);
if(diOS2Integration.oiCBMakeDefaultBrowser.bEnabled)
{
WinShowWindow(hcbCheck0, TRUE);
WinCheckButton(hDlg, IDC_CHECK0, diOS2Integration.oiCBMakeDefaultBrowser.bCheckBoxState);
WinSetDlgItemText(hDlg, IDC_CHECK0, diOS2Integration.oiCBMakeDefaultBrowser.szDescription);
}
else
WinShowWindow(hcbCheck0, FALSE);
if(diOS2Integration.oiCBAssociateHTML.bEnabled)
{
WinShowWindow(hcbCheck1, TRUE);
WinCheckButton(hDlg, IDC_CHECK1, diOS2Integration.oiCBAssociateHTML.bCheckBoxState);
WinSetDlgItemText(hDlg, IDC_CHECK1, diOS2Integration.oiCBAssociateHTML.szDescription);
}
else
WinShowWindow(hcbCheck1, FALSE);
if(diOS2Integration.oiCBUpdateCONFIGSYS.bEnabled)
{
WinShowWindow(hcbCheck2, TRUE);
WinCheckButton(hDlg, IDC_CHECK2, diOS2Integration.oiCBUpdateCONFIGSYS.bCheckBoxState);
WinSetDlgItemText(hDlg, IDC_CHECK2, diOS2Integration.oiCBUpdateCONFIGSYS.szDescription);
}
else
WinShowWindow(hcbCheck2, FALSE);
WinQueryWindowPos(hDlg, &swpDlg);
WinSetWindowPos(hDlg,
HWND_TOP,
(gSystemInfo.lScreenX/2)-(swpDlg.cx/2),
(gSystemInfo.lScreenY/2)-(swpDlg.cy/2),
0,
0,
SWP_MOVE);
WinSetDlgItemText(hDlg, IDC_BUTTON_BROWSE, sgInstallGui.szBrowse_);
WinSetDlgItemText(hDlg, IDWIZBACK, sgInstallGui.szBack_);
WinSetDlgItemText(hDlg, IDWIZNEXT, sgInstallGui.szNext_);
WinSetDlgItemText(hDlg, IDCANCEL, sgInstallGui.szCancel_);
break;
case WM_CLOSE:
AskCancelDlg(hDlg);
return (MRESULT)TRUE;
break;
case WM_COMMAND:
switch ( SHORT1FROMMP( mp1 ) )
{
case IDC_BUTTON_BROWSE:
if (BrowseForDirectory(hDlg, szTempSetupPath)) {
strcpy(diOS2Integration.szHomeDirectory, szTempSetupPath);
}
hDestinationPath = WinWindowFromID(hDlg, IDC_EDIT_DESTINATION); /* handle to the static destination path text window */
TruncateString(hDestinationPath, szTempSetupPath, szBuf, sizeof(szBuf));
WinSetDlgItemText(hDlg, IDC_EDIT_DESTINATION, szBuf);
return (MRESULT)TRUE;
break;
case IDWIZNEXT:
if(diOS2Integration.oiCBMakeDefaultBrowser.bEnabled)
{
if(WinQueryButtonCheckstate(hDlg, IDC_CHECK0) == 1)
diOS2Integration.oiCBMakeDefaultBrowser.bCheckBoxState = TRUE;
else
diOS2Integration.oiCBMakeDefaultBrowser.bCheckBoxState = FALSE;
}
if(diOS2Integration.oiCBAssociateHTML.bEnabled)
{
if(WinQueryButtonCheckstate(hDlg, IDC_CHECK1) == 1)
diOS2Integration.oiCBAssociateHTML.bCheckBoxState = TRUE;
else
diOS2Integration.oiCBAssociateHTML.bCheckBoxState = FALSE;
}
if(diOS2Integration.oiCBUpdateCONFIGSYS.bEnabled)
{
if(WinQueryButtonCheckstate(hDlg, IDC_CHECK2) == 1)
diOS2Integration.oiCBUpdateCONFIGSYS.bCheckBoxState = TRUE;
else
diOS2Integration.oiCBUpdateCONFIGSYS.bCheckBoxState = FALSE;
}
WinDestroyWindow(hDlg);
DlgSequence(NEXT_DLG);
break;
case IDWIZBACK:
WinDestroyWindow(hDlg);
DlgSequence(PREV_DLG);
break;
case IDCANCEL:
AskCancelDlg(hDlg);
return (MRESULT)TRUE;
break;
default:
break;
}
break;
}
return(WinDefDlgProc(hDlg, msg, mp1, mp2));
}
void SaveDownloadProtocolOption(HWND hDlg)
{
if(WinQueryButtonCheckstate(hDlg, IDC_USE_FTP) == 1)
@ -2011,6 +2198,9 @@ void DlgSequence(int iDirection)
ulWizardState = DLG_SELECT_COMPONENTS;
break;
case DLG_SELECT_COMPONENTS:
ulWizardState = DLG_OS2_INTEGRATION;
break;
case DLG_OS2_INTEGRATION:
ulWizardState = DLG_ADDITIONAL_OPTIONS;
break;
case DLG_ADDITIONAL_OPTIONS:
@ -2041,9 +2231,12 @@ void DlgSequence(int iDirection)
case DLG_SELECT_COMPONENTS:
ulWizardState = DLG_SETUP_TYPE;
break;
case DLG_ADDITIONAL_OPTIONS:
case DLG_OS2_INTEGRATION:
ulWizardState = DLG_SELECT_COMPONENTS;
break;
case DLG_ADDITIONAL_OPTIONS:
ulWizardState = DLG_OS2_INTEGRATION;
break;
case DLG_START_INSTALL:
ulWizardState = DLG_ADDITIONAL_OPTIONS;
break;
@ -2109,6 +2302,14 @@ void DlgSequence(int iDirection)
}
break;
case DLG_OS2_INTEGRATION:
if(diOS2Integration.bShowDialog)
{
hDlgCurrent = InstantiateDialog(hWndMain, ulWizardState, diOS2Integration.szTitle, DlgProcOS2Integration);
bDone = TRUE;
}
break;
case DLG_ADVANCED_SETTINGS:
if(diAdvancedSettings.bShowDialog)
{
@ -2117,7 +2318,7 @@ void DlgSequence(int iDirection)
}
break;
case DLG_ADDITIONAL_OPTIONS:
case DLG_ADDITIONAL_OPTIONS:
do
{
hrValue = VerifyDiskSpace();
@ -2281,12 +2482,14 @@ void CommitInstall(void)
/* DEPEND_REBOOT process file manipulation functions */
ProcessFileOpsForAll(T_DEPEND_REBOOT);
ProcessOS2Integration();
UnsetSetupState(); // clear setup state
if(!gbIgnoreProgramFolderX)
ProcessProgramFolderShowCmd();
CleanupArgsRegistry();
CleanupPreviousVersionRegKeys();
// CleanupPreviousVersionRegKeys();
if(NeedReboot())
{
CleanupXpcomFile();

View File

@ -31,8 +31,7 @@ MRESULT EXPENTRY DlgProcLicense(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2);
MRESULT EXPENTRY DlgProcSetupType(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2);
MRESULT EXPENTRY DlgProcSelectComponents(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2);
MRESULT EXPENTRY DlgProcSelectAdditionalComponents(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2);
LRESULT CALLBACK DlgProcWindowsIntegration(HWND hDlg, UINT msg, WPARAM wParam, LONG lParam);
LRESULT CALLBACK DlgProcProgramFolder(HWND hDlg, UINT msg, WPARAM wParam, LONG lParam);
MRESULT EXPENTRY DlgProcOS2Integration(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2);
MRESULT EXPENTRY DlgProcAdditionalOptions(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2);
MRESULT EXPENTRY DlgProcAdvancedSettings(HWND hDlg, ULONG msg, MPARAM mp1, MPARAM mp2);
LRESULT CALLBACK DlgProcQuickLaunch(HWND hDlg, UINT msg, WPARAM wParam, LONG lParam);

View File

@ -74,7 +74,7 @@ extern diL diLicense;
extern diST diSetupType;
extern diSC diSelectComponents;
extern diSC diSelectAdditionalComponents;
extern diWI diWindowsIntegration;
extern diOI diOS2Integration;
extern diPF diProgramFolder;
extern diDO diAdditionalOptions;
extern diAS diAdvancedSettings;

View File

@ -372,7 +372,7 @@ HRESULT Initialize(HMODULE hInstance, PSZ szAppName)
// determine the system's TEMP path
tempEnvVar = getenv("TMP");
if (tempEnvVar) {
if ((tempEnvVar) && (!(isFAT(tempEnvVar)))) {
strcpy(szTempDir, tempEnvVar);
}
else
@ -381,7 +381,7 @@ HRESULT Initialize(HMODULE hInstance, PSZ szAppName)
if (tempEnvVar)
strcpy(szTempDir, tempEnvVar);
}
if (!tempEnvVar)
if ((!tempEnvVar) || (isFAT(tempEnvVar)))
{
ULONG ulBootDrive = 0;
APIRET rc;
@ -389,6 +389,31 @@ HRESULT Initialize(HMODULE hInstance, PSZ szAppName)
DosQuerySysInfo(QSV_BOOT_DRIVE, QSV_BOOT_DRIVE,
&ulBootDrive, sizeof(ulBootDrive));
buffer[0] = 'A' - 1 + ulBootDrive;
if (isFAT(buffer)) {
/* Try current disk if boot drive is FAT */
ULONG ulDriveNum;
ULONG ulDriveMap;
strcpy(buffer, " :\\");
DosQueryCurrentDisk(&ulDriveNum, &ulDriveMap);
buffer[0] = 'A' - 1 + ulDriveNum;
if (isFAT(buffer)) {
int i;
for (i = 2; i < 26; i++) {
if ((ulDriveMap<<(31-i)) >> 31) {
buffer[0] = 'A' + i;
if (!(isFAT(buffer))) {
break;
}
}
}
if (i == 26) {
char szBuf[MAX_BUF];
if(NS_LoadString(hSetupRscInst, IDS_ERROR_NO_LONG_FILENAMES, szBuf, MAX_BUF) == WIZ_OK)
WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, szBuf, NULL, 0, MB_ICONEXCLAMATION);
return(1);
}
}
}
strcpy(szTempDir, buffer);
strcat(szTempDir, "TEMP");
}
@ -1750,6 +1775,48 @@ HRESULT LaunchApps()
return(0);
}
HRESULT ProcessOS2Integration()
{
if (diOS2Integration.oiCBMakeDefaultBrowser.bCheckBoxState == TRUE) {
HOBJECT hObjURL = NULLHANDLE;
CHAR szSetupString[1000];
CHAR szTemp[CCHMAXPATH];
strcpy(szSetupString, "OBJECTID=<MOZTEMPCONVERSIONURL>");
sprintf(szTemp, "%s\\%s", sgProduct.szPath, sgProduct.szProgramName);
strcat(szSetupString, ";DEFAULTBROWSER=");
strcat(szSetupString, szTemp) ;
PrfWriteProfileString(HINI_USER,
"WPURLDEFAULTSETTINGS",
"DefaultBrowserExe",
szTemp ) ;
strcat(szSetupString, ";DEFAULTWORKINGDIR=");
strcat(szSetupString, sgProduct.szPath);
PrfWriteProfileString(HINI_USER,
"WPURLDEFAULTSETTINGS",
"DefaultWorkingDir",
sgProduct.szPath);
#ifdef OLDCODE
strcat(szSetupString, ";PARAMETERS=");
strcat(szSetupString, pszDefaultParms);
PrfWriteProfileString(HINI_USER,
"WPURLDEFAULTSETTINGS",
"DefaultParameters",
pszDefaultParms);
#endif
if (hObjURL = WinCreateObject("WPUrl",
"Temporary URL",
szSetupString,
"<WP_NOWHERE>",
CO_REPLACEIFEXISTS))
{
WinDestroyObject(hObjURL);
}
}
return(0);
}
char *GetOSTypeString(char *szOSType, ULONG ulOSTypeBufSize)
{
memset(szOSType, 0, ulOSTypeBufSize);
@ -2003,7 +2070,7 @@ void DeInitDlgSelectComponents(diSC *diDialog)
FreeMemory(&(diDialog->szMessage0));
}
HRESULT InitDlgWindowsIntegration(diWI *diDialog)
HRESULT InitDlgOS2Integration(diOI *diDialog)
{
diDialog->bShowDialog = FALSE;
if((diDialog->szTitle = NS_GlobalAlloc(MAX_BUF)) == NULL)
@ -2012,52 +2079,37 @@ HRESULT InitDlgWindowsIntegration(diWI *diDialog)
exit(1);
if((diDialog->szMessage1 = NS_GlobalAlloc(MAX_BUF)) == NULL)
exit(1);
if((diDialog->szHomeDirectory = NS_GlobalAlloc(MAX_BUF)) == NULL)
exit(1);
diDialog->wiCB0.bEnabled = FALSE;
diDialog->wiCB1.bEnabled = FALSE;
diDialog->wiCB2.bEnabled = FALSE;
diDialog->wiCB3.bEnabled = FALSE;
diDialog->oiCBMakeDefaultBrowser.bEnabled = FALSE;
diDialog->oiCBAssociateHTML.bEnabled = FALSE;
diDialog->oiCBUpdateCONFIGSYS.bEnabled = FALSE;
diDialog->wiCB0.bCheckBoxState = FALSE;
diDialog->wiCB1.bCheckBoxState = FALSE;
diDialog->wiCB2.bCheckBoxState = FALSE;
diDialog->wiCB3.bCheckBoxState = FALSE;
diDialog->oiCBMakeDefaultBrowser.bCheckBoxState = FALSE;
diDialog->oiCBAssociateHTML.bCheckBoxState = FALSE;
diDialog->oiCBUpdateCONFIGSYS.bCheckBoxState = FALSE;
if((diDialog->wiCB0.szDescription = NS_GlobalAlloc(MAX_BUF)) == NULL)
if((diDialog->oiCBMakeDefaultBrowser.szDescription = NS_GlobalAlloc(MAX_BUF)) == NULL)
return(1);
if((diDialog->wiCB1.szDescription = NS_GlobalAlloc(MAX_BUF)) == NULL)
if((diDialog->oiCBAssociateHTML.szDescription = NS_GlobalAlloc(MAX_BUF)) == NULL)
return(1);
if((diDialog->wiCB2.szDescription = NS_GlobalAlloc(MAX_BUF)) == NULL)
return(1);
if((diDialog->wiCB3.szDescription = NS_GlobalAlloc(MAX_BUF)) == NULL)
return(1);
if((diDialog->wiCB0.szArchive = NS_GlobalAlloc(MAX_BUF)) == NULL)
return(1);
if((diDialog->wiCB1.szArchive = NS_GlobalAlloc(MAX_BUF)) == NULL)
return(1);
if((diDialog->wiCB2.szArchive = NS_GlobalAlloc(MAX_BUF)) == NULL)
return(1);
if((diDialog->wiCB3.szArchive = NS_GlobalAlloc(MAX_BUF)) == NULL)
if((diDialog->oiCBUpdateCONFIGSYS.szDescription = NS_GlobalAlloc(MAX_BUF)) == NULL)
return(1);
return(0);
}
void DeInitDlgWindowsIntegration(diWI *diDialog)
void DeInitDlgOS2Integration(diOI *diDialog)
{
FreeMemory(&(diDialog->szTitle));
FreeMemory(&(diDialog->szMessage0));
FreeMemory(&(diDialog->szMessage1));
FreeMemory(&(diDialog->szHomeDirectory));
FreeMemory(&(diDialog->wiCB0.szDescription));
FreeMemory(&(diDialog->wiCB1.szDescription));
FreeMemory(&(diDialog->wiCB2.szDescription));
FreeMemory(&(diDialog->wiCB3.szDescription));
FreeMemory(&(diDialog->wiCB0.szArchive));
FreeMemory(&(diDialog->wiCB1.szArchive));
FreeMemory(&(diDialog->wiCB2.szArchive));
FreeMemory(&(diDialog->wiCB3.szArchive));
FreeMemory(&(diDialog->oiCBMakeDefaultBrowser.szDescription));
FreeMemory(&(diDialog->oiCBAssociateHTML.szDescription));
FreeMemory(&(diDialog->oiCBUpdateCONFIGSYS.szDescription));
}
HRESULT InitDlgProgramFolder(diPF *diDialog)
@ -4969,7 +5021,7 @@ HRESULT ParseConfigIni(int argc, char *argv[])
return(1);
if(InitDlgSelectComponents(&diSelectAdditionalComponents, SM_SINGLE))
return(1);
if(InitDlgWindowsIntegration(&diWindowsIntegration))
if(InitDlgOS2Integration(&diOS2Integration))
return(1);
if(InitDlgProgramFolder(&diProgramFolder))
return(1);
@ -5152,20 +5204,13 @@ HRESULT ParseConfigIni(int argc, char *argv[])
if(strcmpi(szShowDialog, "TRUE") == 0)
diSelectAdditionalComponents.bShowDialog = TRUE;
/* Windows Integration dialog */
GetPrivateProfileString("Dialog Windows Integration", "Show Dialog", "", szShowDialog, sizeof(szShowDialog), szFileIniConfig);
GetPrivateProfileString("Dialog Windows Integration", "Title", "", diWindowsIntegration.szTitle, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("Dialog Windows Integration", "Message0", "", diWindowsIntegration.szMessage0, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("Dialog Windows Integration", "Message1", "", diWindowsIntegration.szMessage1, MAX_BUF, szFileIniConfig);
/* OS/2 Integration dialog */
GetPrivateProfileString("Dialog OS/2 Integration", "Show Dialog", "", szShowDialog, sizeof(szShowDialog), szFileIniConfig);
GetPrivateProfileString("Dialog OS/2 Integration", "Title", "", diOS2Integration.szTitle, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("Dialog OS/2 Integration", "Message0", "", diOS2Integration.szMessage0, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("Dialog OS/2 Integration", "Message1", "", diOS2Integration.szMessage1, MAX_BUF, szFileIniConfig);
if(strcmpi(szShowDialog, "TRUE") == 0)
diWindowsIntegration.bShowDialog = TRUE;
/* Program Folder dialog */
GetPrivateProfileString("Dialog Program Folder", "Show Dialog", "", szShowDialog, sizeof(szShowDialog), szFileIniConfig);
GetPrivateProfileString("Dialog Program Folder", "Title", "", diProgramFolder.szTitle, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("Dialog Program Folder", "Message0", "", diProgramFolder.szMessage0, MAX_BUF, szFileIniConfig);
if(strcmpi(szShowDialog, "TRUE") == 0)
diProgramFolder.bShowDialog = TRUE;
diOS2Integration.bShowDialog = TRUE;
/* Additional Options dialog */
GetPrivateProfileString("Dialog Additional Options", "Show Dialog", "", szShowDialog, sizeof(szShowDialog), szFileIniConfig);
@ -5221,7 +5266,7 @@ HRESULT ParseConfigIni(int argc, char *argv[])
else
diAdditionalOptions.bShowProtocols = TRUE;
/* Program Folder dialog */
/* Quick Launch dialog */
GetPrivateProfileString("Dialog Quick Launch", "Show Dialog", "", szShowDialog, sizeof(szShowDialog), szFileIniConfig);
GetPrivateProfileString("Dialog Quick Launch", "Title", "", diQuickLaunch.szTitle, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("Dialog Quick Launch", "Message0", "", diQuickLaunch.szMessage0, MAX_BUF, szFileIniConfig);
@ -5262,45 +5307,32 @@ HRESULT ParseConfigIni(int argc, char *argv[])
else if(strcmpi(szShowDialog, "AUTO") == 0)
diReboot.dwShowDialog = AUTO;
GetPrivateProfileString("Windows Integration-Item0", "CheckBoxState", "", szBuf, sizeof(szBuf), szFileIniConfig);
GetPrivateProfileString("Windows Integration-Item0", "Description", "", diWindowsIntegration.wiCB0.szDescription, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("Windows Integration-Item0", "Archive", "", diWindowsIntegration.wiCB0.szArchive, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("OS/2 Integration-Item0", "CheckBoxState", "", szBuf, sizeof(szBuf), szFileIniConfig);
GetPrivateProfileString("OS/2 Integration-Item0", "Description", "", diOS2Integration.oiCBMakeDefaultBrowser.szDescription, MAX_BUF, szFileIniConfig);
/* Check to see if the checkbox need to be shown at all or not */
if(*diWindowsIntegration.wiCB0.szDescription != '\0')
diWindowsIntegration.wiCB0.bEnabled = TRUE;
if(*diOS2Integration.oiCBMakeDefaultBrowser.szDescription != '\0')
diOS2Integration.oiCBMakeDefaultBrowser.bEnabled = TRUE;
/* check to see if the checkbox needs to be checked by default or not */
if(strcmpi(szBuf, "TRUE") == 0)
diWindowsIntegration.wiCB0.bCheckBoxState = TRUE;
diOS2Integration.oiCBMakeDefaultBrowser.bCheckBoxState = TRUE;
GetPrivateProfileString("Windows Integration-Item1", "CheckBoxState", "", szBuf, sizeof(szBuf), szFileIniConfig);
GetPrivateProfileString("Windows Integration-Item1", "Description", "", diWindowsIntegration.wiCB1.szDescription, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("Windows Integration-Item1", "Archive", "", diWindowsIntegration.wiCB1.szArchive, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("OS/2 Integration-Item1", "CheckBoxState", "", szBuf, sizeof(szBuf), szFileIniConfig);
GetPrivateProfileString("OS/2 Integration-Item1", "Description", "", diOS2Integration.oiCBAssociateHTML.szDescription, MAX_BUF, szFileIniConfig);
/* Check to see if the checkbox need to be shown at all or not */
if(*diWindowsIntegration.wiCB1.szDescription != '\0')
diWindowsIntegration.wiCB1.bEnabled = TRUE;
if(*diOS2Integration.oiCBAssociateHTML.szDescription != '\0')
diOS2Integration.oiCBAssociateHTML.bEnabled = TRUE;
/* check to see if the checkbox needs to be checked by default or not */
if(strcmpi(szBuf, "TRUE") == 0)
diWindowsIntegration.wiCB1.bCheckBoxState = TRUE;
diOS2Integration.oiCBAssociateHTML.bCheckBoxState = TRUE;
GetPrivateProfileString("Windows Integration-Item2", "CheckBoxState", "", szBuf, sizeof(szBuf), szFileIniConfig);
GetPrivateProfileString("Windows Integration-Item2", "Description", "", diWindowsIntegration.wiCB2.szDescription, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("Windows Integration-Item2", "Archive", "", diWindowsIntegration.wiCB2.szArchive, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("OS/2 Integration-Item2", "CheckBoxState", "", szBuf, sizeof(szBuf), szFileIniConfig);
GetPrivateProfileString("OS/2 Integration-Item2", "Description", "", diOS2Integration.oiCBUpdateCONFIGSYS.szDescription, MAX_BUF, szFileIniConfig);
/* Check to see if the checkbox need to be shown at all or not */
if(*diWindowsIntegration.wiCB2.szDescription != '\0')
diWindowsIntegration.wiCB2.bEnabled = TRUE;
if(*diOS2Integration.oiCBUpdateCONFIGSYS.szDescription != '\0')
diOS2Integration.oiCBUpdateCONFIGSYS.bEnabled = TRUE;
/* check to see if the checkbox needs to be checked by default or not */
if(strcmpi(szBuf, "TRUE") == 0)
diWindowsIntegration.wiCB2.bCheckBoxState = TRUE;
GetPrivateProfileString("Windows Integration-Item3", "CheckBoxState", "", szBuf, sizeof(szBuf), szFileIniConfig);
GetPrivateProfileString("Windows Integration-Item3", "Description", "", diWindowsIntegration.wiCB3.szDescription, MAX_BUF, szFileIniConfig);
GetPrivateProfileString("Windows Integration-Item3", "Archive", "", diWindowsIntegration.wiCB3.szArchive, MAX_BUF, szFileIniConfig);
/* Check to see if the checkbox need to be shown at all or not */
if(*diWindowsIntegration.wiCB3.szDescription != '\0')
diWindowsIntegration.wiCB3.bEnabled = TRUE;
/* check to see if the checkbox needs to be checked by default or not */
if(strcmpi(szBuf, "TRUE") == 0)
diWindowsIntegration.wiCB3.bCheckBoxState = TRUE;
diOS2Integration.oiCBUpdateCONFIGSYS.bCheckBoxState = TRUE;
/* Read in the Site Selector Status */
GetPrivateProfileString("Site Selector", "Status", "", szBuf, sizeof(szBuf), szFileIniConfig);
@ -5316,7 +5348,7 @@ HRESULT ParseConfigIni(int argc, char *argv[])
diSetupType.bShowDialog = FALSE;
diSelectComponents.bShowDialog = FALSE;
diSelectAdditionalComponents.bShowDialog = FALSE;
diWindowsIntegration.bShowDialog = FALSE;
diOS2Integration.bShowDialog = FALSE;
diProgramFolder.bShowDialog = FALSE;
diQuickLaunch.bShowDialog = FALSE;
diAdditionalOptions.bShowDialog = FALSE;
@ -6117,6 +6149,35 @@ HRESULT FileExists(PSZ szFile)
return (FALSE);
}
BOOL isFAT(char* szPath)
{
APIRET rc;
ULONG ulSize;
PFSQBUFFER2 pfsqbuf2;
CHAR szDrive[3];
ulSize = sizeof(FSQBUFFER2) + 3 * CCHMAXPATH;
pfsqbuf2 = (PFSQBUFFER2)malloc(ulSize);
strncpy(szDrive, szPath, 2);
szDrive[2] = '\0';
DosError(FERR_DISABLEHARDERR);
rc = DosQueryFSAttach(szDrive, 0, FSAIL_QUERYNAME,
pfsqbuf2, &ulSize);
DosError(FERR_ENABLEHARDERR);
if (rc == NO_ERROR) {
if (strcmp(pfsqbuf2->szFSDName + pfsqbuf2->cbName, "FAT") == 0) {
return TRUE;
}
}
if (rc == NO_ERROR) {
return FALSE;
} else {
return TRUE;
}
}
BOOL NeedReboot()
{
if(diReboot.dwShowDialog == AUTO)
@ -6440,7 +6501,7 @@ void DeInitialize()
DeInitDlgAdditionalOptions(&diAdditionalOptions);
DeInitDlgAdvancedSettings(&diAdvancedSettings);
DeInitDlgProgramFolder(&diProgramFolder);
DeInitDlgWindowsIntegration(&diWindowsIntegration);
DeInitDlgOS2Integration(&diOS2Integration);
DeInitDlgSelectComponents(&diSelectAdditionalComponents);
DeInitDlgSelectComponents(&diSelectComponents);
DeInitDlgSetupType(&diSetupType);

View File

@ -47,7 +47,7 @@ HRESULT InitDlgLicense(diL *diDialog);
HRESULT InitDlgQuickLaunch(diQL *diDialog);
HRESULT InitDlgSetupType(diST *diDialog);
HRESULT InitDlgSelectComponents(diSC *diDialog, DWORD dwSM);
HRESULT InitDlgWindowsIntegration(diWI *diDialog);
HRESULT InitDlgOS2Integration(diOI *diDialog);
HRESULT InitDlgProgramFolder(diPF *diDialog);
HRESULT InitDlgStartInstall(diSI *diDialog);
HRESULT InitDlgSiteSelector(diAS *diDialog);
@ -88,7 +88,7 @@ void DeInitDlgLicense(diL *diDialog);
void DeInitDlgQuickLaunch(diQL *diDialog);
void DeInitDlgSetupType(diST *diDialog);
void DeInitDlgSelectComponents(diSC *diDialog);
void DeInitDlgWindowsIntegration(diWI *diDialog);
void DeInitDlgOS2Integration(diOI *diDialog);
void DeInitDlgProgramFolder(diPF *diDialog);
void DeInitDlgStartInstall(diSI *diDialog);
void DeInitDlgSiteSelector(diAS *diDialog);
@ -115,7 +115,9 @@ BOOL DeleteIdiFileIniInstall(void);
void DeleteArchives(DWORD dwDeleteCheck);
BOOL DeleteIniRedirect(void);
HRESULT LaunchApps(void);
HRESULT ProcessOS2Integration(void);
HRESULT FileExists(PSZ szFile);
BOOL isFAT(char* szPath);
int ExtractDirEntries(char* directory,void* vZip);
int LocateJar(siC *siCObject, LPSTR szPath, int dwPathSize, BOOL bIncludeTempDir);
HRESULT AddArchiveToIdiFile(siC *siCObject,

View File

@ -1436,6 +1436,7 @@ HRESULT ProcessProgramFolder(DWORD dwTiming, char *szSectionPrefix)
DWORD dwIndex1;
char szIndex1[MAX_BUF];
char szBuf[MAX_BUF];
char szBuf2[MAX_BUF];
char szSection0[MAX_BUF];
char szSection1[MAX_BUF];
char szProgramFolder[MAX_BUF];
@ -1444,6 +1445,8 @@ HRESULT ProcessProgramFolder(DWORD dwTiming, char *szSectionPrefix)
char szTitle[MAX_BUF];
char szSetupString[MAX_BUF];
char szLocation[MAX_BUF];
char szAssocFilters[MAX_BUF];
char szAssocTypes[MAX_BUF];
dwIndex0 = 0;
@ -1469,14 +1472,81 @@ HRESULT ProcessProgramFolder(DWORD dwTiming, char *szSectionPrefix)
GetPrivateProfileString(szSection1, "ClassName", "", szClassName, sizeof(szClassName), szFileIniConfig);
while(*szBuf != '\0')
{
*szSetupString = '\0';
GetPrivateProfileString(szSection1, "Title", "", szBuf, sizeof(szBuf), szFileIniConfig);
DecryptString(szTitle, szBuf);
GetPrivateProfileString(szSection1, "SetupString", "", szBuf, sizeof(szBuf), szFileIniConfig);
DecryptString(szSetupString, szBuf);
GetPrivateProfileString(szSection1, "Location", "", szBuf, sizeof(szBuf), szFileIniConfig);
DecryptString(szLocation, szBuf);
GetPrivateProfileString(szSection1, "File", "", szBuf, sizeof(szBuf), szFileIniConfig);
DecryptString(szBuf2, szBuf);
if (szBuf2[0]) {
if (szSetupString[0]) {
strcat(szSetupString, ";");
}
strcat(szSetupString, "EXENAME=");
strcat(szSetupString, szBuf2);
}
GetPrivateProfileString(szSection1, "Parameters", "", szBuf, sizeof(szBuf), szFileIniConfig);
DecryptString(szBuf2, szBuf);
if (szBuf2[0]) {
if (szSetupString[0]) {
strcat(szSetupString, ";");
}
strcat(szSetupString, "PARAMETERS=");
strcat(szSetupString, szBuf2);
}
GetPrivateProfileString(szSection1, "Working Dir", "", szBuf, sizeof(szBuf), szFileIniConfig);
DecryptString(szBuf2, szBuf);
if (szBuf2[0]) {
if (szSetupString[0]) {
strcat(szSetupString, ";");
}
strcat(szSetupString, "STARTUPDIR=");
strcat(szSetupString, szBuf2);
}
GetPrivateProfileString(szSection1, "Object ID", "", szBuf, sizeof(szBuf), szFileIniConfig);
if (szBuf[0]) {
if (szSetupString[0]) {
strcat(szSetupString, ";");
}
strcat(szSetupString, "OBJECTID=");
strcat(szSetupString, szBuf);
}
GetPrivateProfileString(szSection1, "Association Filters", "", szBuf, sizeof(szBuf), szFileIniConfig);
if (szBuf[0]) {
if (diOS2Integration.oiCBAssociateHTML.bCheckBoxState == TRUE) {
if (szSetupString[0]) {
strcat(szSetupString, ";");
}
strcat(szSetupString, "ASSOCFILTER=");
strcat(szSetupString, szBuf);
}
}
GetPrivateProfileString(szSection1, "Association Types", "", szBuf, sizeof(szBuf), szFileIniConfig);
if (szBuf[0]) {
if (diOS2Integration.oiCBAssociateHTML.bCheckBoxState == TRUE) {
if (szSetupString[0]) {
strcat(szSetupString, ";");
}
strcat(szSetupString, "ASSOCTYPE=");
strcat(szSetupString, szBuf);
}
}
GetPrivateProfileString(szSection1, "Setup String", "", szBuf, sizeof(szBuf), szFileIniConfig);
DecryptString(szBuf2, szBuf);
if (szBuf2[0]) {
if (szSetupString[0]) {
strcat(szSetupString, ";");
}
strcat(szSetupString, szBuf2);
}
WinCreateObject(szClassName, szTitle, szSetupString, szLocation, CO_REPLACEIFEXISTS);
if (diOS2Integration.oiCBMakeDefaultBrowser.bCheckBoxState == TRUE) {
}
#ifdef OLDCODE
strcpy(szBuf, szProgramFolder);
AppendBackSlash(szBuf, sizeof(szBuf));

View File

@ -77,7 +77,7 @@ diQL diQuickLaunch;
diST diSetupType;
diSC diSelectComponents;
diSC diSelectAdditionalComponents;
diWI diWindowsIntegration;
diOI diOS2Integration;
diPF diProgramFolder;
diDO diAdditionalOptions;
diAS diAdvancedSettings;

View File

@ -299,25 +299,24 @@ typedef struct dlgSelectComponents
LPSTR szMessage0;
} diSC;
typedef struct wiCBstruct
typedef struct oiCBstruct
{
BOOL bEnabled;
BOOL bCheckBoxState;
LPSTR szDescription;
LPSTR szArchive;
} wiCBs;
} oiCBs;
typedef struct dlgWindowsIntegration
typedef struct dlgOS2Integration
{
BOOL bShowDialog;
LPSTR szTitle;
LPSTR szMessage0;
LPSTR szMessage1;
wiCBs wiCB0;
wiCBs wiCB1;
wiCBs wiCB2;
wiCBs wiCB3;
} diWI;
oiCBs oiCBMakeDefaultBrowser;
oiCBs oiCBAssociateHTML;
oiCBs oiCBUpdateCONFIGSYS;
LPSTR szHomeDirectory;
} diOI;
typedef struct dlgProgramFolder
{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -330,26 +330,12 @@ void cbXPIStart(const char *URL, const char *UIName)
void cbXPIProgress(const char* msg, PRInt32 val, PRInt32 max)
{
char szFilename[MAX_BUF];
char szStrProcessingFileBuf[MAX_BUF];
char szStrCopyingFileBuf[MAX_BUF];
char szBuf[MAX_BUF];
if(sgProduct.ulMode != SILENT)
{
ParsePath((char *)msg, szFilename, sizeof(szFilename), FALSE, PP_FILENAME_ONLY);
if(max == 0)
{
/* Processing file */
sprintf(szStrProcessingFileBuf, szStrProcessingFile, szFilename);
WinSetDlgItemText(dlgInfo.hWndDlg, IDC_STATUS3, szStrProcessingFileBuf);
}
else
{
/* Copying file */
sprintf(szStrCopyingFileBuf, szStrCopyingFile, szFilename);
WinSetDlgItemText(dlgInfo.hWndDlg, IDC_STATUS3, szStrCopyingFileBuf);
}
TruncateString(WinWindowFromID(dlgInfo.hWndDlg, IDC_STATUS3), msg, szBuf, sizeof(szBuf));
WinSetDlgItemText(dlgInfo.hWndDlg, IDC_STATUS3, szBuf);
}
ProcessWindowsMessages();

View File

@ -1,4 +1,5 @@
#define IDS_ERROR_FILE_NOT_FOUND 3
#define IDS_ERROR_NO_LONG_FILENAMES 5
#define IDRESUME 3
#define IDPAUSE 4
#define IDS_MSG_RETRIEVE_INSTALLINI 11
@ -93,7 +94,7 @@
#define DLG_SELECT_COMPONENTS_SINGLE 2004
#define DLG_SELECT_COMPONENTS 2004
#define DLG_SELECT_COMPONENTS_MULTI 2005
#define DLG_WINDOWS_INTEGRATION 2006
#define DLG_OS2_INTEGRATION 2006
#define DLG_PROGRAM_FOLDER 2007
#define DLG_START_INSTALL 2008
#define DLG_EXTRACTING 2009

View File

@ -93,31 +93,32 @@ BEGIN
END
END
#if 0 /* Not used right now */
DLGTEMPLATE DLG_WINDOWS_INTEGRATION DISCARDABLE
DLGTEMPLATE DLG_OS2_INTEGRATION DISCARDABLE
BEGIN
DIALOG "", DLG_WINDOWS_INTEGRATION, 64, -69, 394, 205,
DIALOG "", DLG_OS2_INTEGRATION, 0, 0, 470, 336
WS_VISIBLE | FS_DLGBORDER | FS_SCREENALIGN,
FCF_TITLEBAR | FCF_SYSMENU | FCF_NOMOVEWITHOWNER | FCF_TASKLIST
BEGIN
CONTROL "", IDC_CHECK0, 127, 156, 257, 17, WC_BUTTON, BS_AUTOCHECKBOX |
WS_TABSTOP | BS_PUSHBUTTON | WS_VISIBLE
CONTROL "", IDC_CHECK1, 127, 135, 257, 17, WC_BUTTON, BS_AUTOCHECKBOX |
WS_TABSTOP | BS_PUSHBUTTON | WS_VISIBLE
CONTROL "", IDC_CHECK2, 127, 115, 257, 17, WC_BUTTON, BS_AUTOCHECKBOX |
WS_TABSTOP | BS_PUSHBUTTON | WS_VISIBLE
CONTROL "", IDC_CHECK3, 127, 94, 257, 17, WC_BUTTON, BS_AUTOCHECKBOX |
WS_TABSTOP | BS_PUSHBUTTON | WS_VISIBLE
LTEXT "", IDC_MESSAGE1, 127, 34, 257, 54, NOT WS_GROUP | SS_TEXT | DT_WORDBREAK | DT_MNEMONIC
PUSHBUTTON "", IDWIZBACK, 168, 5, 67, 14
DEFPUSHBUTTON "", IDWIZNEXT, 235, 5, 67, 14
PUSHBUTTON "", DID_CANCEL, 315, 5, 67, 14
LTEXT "", IDC_MESSAGE0, 127, 177, 255, 17, NOT WS_GROUP | SS_TEXT | DT_WORDBREAK | DT_MNEMONIC
CONTROL 108, IDC_PICT0, 0, 0, 1, 1, WC_STATIC, SS_BITMAP | WS_VISIBLE
CONTROL "", IDC_STATIC0, 14, 25, 369, 1, WC_STATIC, SS_TEXT | DT_WORDBREAK | DT_MNEMONIC | WS_VISIBLE
// LTEXT "", IDC_MESSAGE1, 127, 34, 257, 54, NOT WS_GROUP | SS_TEXT | DT_WORDBREAK | DT_MNEMONIC
// LTEXT "", IDC_MESSAGE0, 127, 177, 255, 17, NOT WS_GROUP | SS_TEXT | DT_WORDBREAK | DT_MNEMONIC
AUTOCHECKBOX "", IDC_CHECK0, 145, 294, 315, 32, WS_TABSTOP
AUTOCHECKBOX "", IDC_CHECK1, 145, 252, 315, 32, WS_TABSTOP
#ifdef OLDCODE
AUTOCHECKBOX "", IDC_CHECK2, 145, 210, 315, 32, WS_TABSTOP
GROUPBOX "", IDC_DESTINATION, 145, 62, 315, 60, DT_MNEMONIC
LTEXT "", IDC_EDIT_DESTINATION, 155, 72, 200, 30, DT_VCENTER
PUSHBUTTON "", IDC_BUTTON_BROWSE, 370, 72, 80, 30
#endif
CONTROL 108, IDC_MOZILLA, 12, 64, 1, 1, WC_STATIC, SS_BITMAP | WS_VISIBLE
CONTROL "", IDC_STATIC3, 10, 62, 125, 264, WC_STATIC, SS_FGNDFRAME | WS_VISIBLE
CONTROL "", IDC_STATIC, 10, 50, 450, 2, WC_STATIC, SS_FGNDRECT | WS_VISIBLE
PUSHBUTTON "", IDWIZBACK, 200, 10, 80, 30, WS_GROUP
DEFPUSHBUTTON "", IDWIZNEXT, 290, 10, 80, 30
PUSHBUTTON "", DID_CANCEL, 380, 10, 80, 30
END
END
#if 0 /* Not used right now */
DLGTEMPLATE DLG_QUICK_LAUNCH DISCARDABLE
BEGIN
DIALOG "", DLG_QUICK_LAUNCH, 64, -69, 394, 205,
@ -275,8 +276,8 @@ BEGIN
WS_VISIBLE | FS_DLGBORDER | FS_SCREENALIGN,
FCF_TITLEBAR | FCF_SYSMENU | FCF_NOMOVEWITHOWNER | FCF_TASKLIST
BEGIN
LTEXT "", IDC_MESSAGE0, 145, 262, 315, 64, SS_TEXT | DT_WORDBREAK
MLE "", IDC_CURRENT_SETTINGS, 145, 62, 315, 190, MLS_WORDWRAP | MLS_READONLY | MLS_VSCROLL | MLS_HSCROLL
LTEXT "", IDC_MESSAGE0, 145, 230, 315, 96, SS_TEXT | DT_WORDBREAK
MLE "", IDC_CURRENT_SETTINGS, 145, 62, 315, 158, MLS_WORDWRAP | MLS_READONLY | MLS_VSCROLL | MLS_HSCROLL
CONTROL 108, IDC_STATIC, 12, 64, 1, 1, WC_STATIC, SS_BITMAP | WS_VISIBLE
CONTROL "", IDC_STATIC3, 10, 62, 125, 264, WC_STATIC, SS_FGNDFRAME | WS_VISIBLE
CONTROL "", IDC_STATIC, 10, 50, 450, 2, WC_STATIC, SS_FGNDRECT | WS_VISIBLE
@ -315,6 +316,7 @@ BITMAP IDB_BITMAP_DOWNLOAD_LOGO DISCARDABLE "downloadLogo.bmp"
STRINGTABLE DISCARDABLE
BEGIN
IDS_ERROR_FILE_NOT_FOUND "File not found: %s"
IDS_ERROR_NO_LONG_FILENAMES "You must have at least one drive that supports long filenames to install this product."
IDS_MSG_RETRIEVE_INSTALLINI "Please wait while Setup is attempting to retrieve install.ini, required by Setup, from the Web..."
END