⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 createwiz.cpp

📁 vc环境下的pgp源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			
			strcat(szSetupIni, "setup.ini");

			wsprintf(szVersion, "%s %s", PGPPRODUCTNAME, PGPVERSIONSTRING);
			WritePrivateProfileString("Startup", "AppName", 
				szVersion, szSetupIni);

			WritePrivateProfileString("Startup", "FreeDiskSpace", 
				"181", szSetupIni);

			// Modify the setup.ini file to let the installer know if it
			// needs to ask for the license number or not

			if (Config.szLicenseNum != NULL)
				strcpy(szLicNum, "1");
			else
				strcpy(szLicNum, "0");

			WritePrivateProfileString("Startup", "CompanyName", 
				Config.szLicenseNum, szSetupIni);

			// Write the installation options if applicable

			if (Config.bPreselectInstall)
			{
				char szPrograms[3];
				char szCmdLine[3];
				char szNet[3];
				char szDisk[3];
				char szEudora[3];
				char szExchangeOutlook[3];
				char szOutlookExpress[3];
				char szManual[3];
				char szUninstallOld[3];

				WritePrivateProfileString("Startup", "EasyInstall", "1",
					szSetupIni);

				WritePrivateProfileString("Startup", "InstallDir",
					Config.szUserInstallDir, szSetupIni);

				wsprintf(szPrograms, "%d", Config.bInstallPrograms);
				wsprintf(szCmdLine, "%d", Config.bInstallCmdLine);
				wsprintf(szNet, "%d", Config.bInstallNet);
				wsprintf(szDisk, "%d", Config.bInstallDisk);
				wsprintf(szEudora, "%d", Config.bInstallEudora);
				wsprintf(szExchangeOutlook, "%d", Config.bInstallOutlook);
				wsprintf(szOutlookExpress, "%d", Config.bInstallOutExpress);
				wsprintf(szManual, "%d", Config.bInstallManual);
				wsprintf(szUninstallOld, "%d", Config.bUninstallOld);

				WritePrivateProfileString("Startup", "ProgramFiles",
					szPrograms, szSetupIni);
				WritePrivateProfileString("Startup", "NTcmdln",
					szCmdLine, szSetupIni);
				WritePrivateProfileString("Startup", "PGPnet",
					szNet, szSetupIni);
				WritePrivateProfileString("Startup", "PGPdisk",
					szDisk, szSetupIni);
				WritePrivateProfileString("Startup", "EudoraPlugin",
					szEudora, szSetupIni);
				WritePrivateProfileString("Startup", "ExchangeOutlookPlugin",
					szExchangeOutlook, szSetupIni);
				WritePrivateProfileString("Startup", "OutlookExpressPlugin",
					szOutlookExpress, szSetupIni);
				WritePrivateProfileString("Startup", "UserManual",
					szManual, szSetupIni);
				WritePrivateProfileString("Startup", "UninstallOld",
					szUninstallOld, szSetupIni);
			}
			else
				WritePrivateProfileString("Startup", "EasyInstall", "0",
					szSetupIni);

			// On windows 95, we must flush the ini file by using three
			// nulls -wjb
			WritePrivateProfileString(NULL,NULL,NULL,
					szSetupIni);

			hFile = CreateFile(szSetupIni, GENERIC_READ, 0, NULL, OPEN_ALWAYS,
						FILE_ATTRIBUTE_NORMAL, NULL);
			nSetupBufferSize = GetFileSize(hFile, NULL);

			szSetupBuffer = (char *) PGPNewData(Config.memoryMgr,
										nSetupBufferSize,
										kPGPMemoryMgrFlags_Clear);

			ReadFile(hFile, szSetupBuffer, nSetupBufferSize, 
				&dwBytesRead, NULL);
			CloseHandle(hFile);
			DeleteFile(szSetupIni);
		}

		if (CopyFile(Config.szAdminInstaller, Config.szClientInstaller, 
			FALSE))
		{
			if (SetFileAttributes(Config.szClientInstaller, 
					FILE_ATTRIBUTE_NORMAL))
			{
				AddPrefsToSEA(Config.szClientInstaller, szAdminBuffer, 
					nAdminBufferSize, szClientBuffer, nClientBufferSize,
					szNetBuffer, nNetBufferSize, szSetupBuffer, 
					nSetupBufferSize);

				// We're done!
			
				DestroyWindow(hwndDlg);
				LoadString(g_hInstance, IDS_DONE, szMsg, 254);
				LoadString(g_hInstance, IDS_TITLE, szTitle, 254);
				MessageBox(hwndMain, szMsg, szTitle, MB_ICONINFORMATION);
			}
			else
			{
				// Setting attributes failed
			
				DestroyWindow(hwndDlg);
				LoadString(g_hInstance, IDS_FAILED, szMsg, 254);
				LoadString(g_hInstance, IDS_TITLE, szTitle, 254);
				MessageBox(hwndMain, szMsg, szTitle, MB_ICONEXCLAMATION);
			}
		}
		else
		{
			// Copying file failed
			
			DestroyWindow(hwndDlg);
			LoadString(g_hInstance, IDS_FAILED, szMsg, 254);
			LoadString(g_hInstance, IDS_TITLE, szTitle, 254);
			MessageBox(hwndMain, szMsg, szTitle, MB_ICONEXCLAMATION);
		}
		
		if (szAdminBuffer != NULL)
			PGPFreeData(szAdminBuffer);
		if (szClientBuffer != NULL)
			PGPFreeData(szClientBuffer);
		if (szNetBuffer != NULL)
			PGPFreeData(szNetBuffer);
		if (szSetupBuffer != NULL)
			PGPFreeData(szSetupBuffer);
	}

error:
	// Free allocated memory and objects

	if (Config.szLicenseNum)
	{
		PGPFreeData(Config.szLicenseNum);
		Config.szLicenseNum = NULL;
	}

	if (Config.szComments)
	{
		PGPFreeData(Config.szComments);
		Config.szComments = NULL;
	}

	if (Config.szOutgoingADKID)
	{
		pgpFree(Config.szOutgoingADKID);
		Config.szOutgoingADKID = NULL;
	}

	if (Config.szOutgoingADK)
	{
		pgpFree(Config.szOutgoingADK);
		Config.szOutgoingADK = NULL;
	}

	if (Config.szIncomingADKID)
	{
		pgpFree(Config.szIncomingADKID);
		Config.szIncomingADKID = NULL;
	}

	if (Config.szIncomingADK)
	{
		pgpFree(Config.szIncomingADK);
		Config.szIncomingADK = NULL;
	}

	if (Config.szDiskADKID)
	{
		pgpFree(Config.szDiskADKID);
		Config.szDiskADKID = NULL;
	}

	if (Config.szDiskADK)
	{
		pgpFree(Config.szDiskADK);
		Config.szDiskADK = NULL;
	}

	if (Config.szCorpKeyID)
	{
		pgpFree(Config.szCorpKeyID);
		Config.szCorpKeyID = NULL;
	}

	if (Config.szCorpKey)
	{
		pgpFree(Config.szCorpKey);
		Config.szCorpKey = NULL;
	}

	if (Config.szRevokerKeyID)
	{
		pgpFree(Config.szRevokerKeyID);
		Config.szRevokerKeyID = NULL;
	}

	if (Config.szRevokerKey)
	{
		pgpFree(Config.szRevokerKey);
		Config.szRevokerKey = NULL;
	}

	if (Config.defaultKeySet != NULL)
	{
		PGPFreeKeySet(Config.defaultKeySet);
		Config.defaultKeySet = NULL;
	}

	if (Config.szAdminInstaller)
	{
		PGPFreeData(Config.szAdminInstaller);
		Config.szAdminInstaller = NULL;
	}

	if (Config.szClientInstaller)
	{
		PGPFreeData(Config.szClientInstaller);
		Config.szClientInstaller = NULL;
	}

	if (Config.szUserInstallDir)
	{
		PGPFreeData(Config.szUserInstallDir);
		Config.szUserInstallDir = NULL;
	}

	if (Config.pAVList)
	{
		PGPclFreeCACertRequestAVList(Config.pAVList, Config.nNumAVs);
		Config.pAVList = NULL;
		Config.nNumAVs = 0;
	}

	PGPclCloseLibrary();
	PGPFreeContext(Config.pgpContext);
	DeleteObject(Config.hBitmap);

	return;
}


//-------------------------------------------------------------------|
// Load DIB bitmap and associated palette

static HPALETTE 
CreateDIBPalette (LPBITMAPINFO lpbmi, 
				  LPINT lpiNumColors) 
{
	LPBITMAPINFOHEADER lpbi;
	LPLOGPALETTE lpPal;
	HANDLE hLogPal;
	HPALETTE hPal = NULL;
	INT i;
 
	lpbi = (LPBITMAPINFOHEADER)lpbmi;
	if (lpbi->biBitCount <= 8) {
		*lpiNumColors = (1 << lpbi->biBitCount);
	}
	else
		*lpiNumColors = 0;  // No palette needed for 24 BPP DIB
 
	if (*lpiNumColors) {
		hLogPal = GlobalAlloc (GHND, sizeof (LOGPALETTE) +
                             sizeof (PALETTEENTRY) * (*lpiNumColors));
		lpPal = (LPLOGPALETTE) GlobalLock (hLogPal);
		lpPal->palVersion = 0x300;
		lpPal->palNumEntries = *lpiNumColors;
 
		for (i = 0;  i < *lpiNumColors;  i++) {
			lpPal->palPalEntry[i].peRed   = lpbmi->bmiColors[i].rgbRed;
			lpPal->palPalEntry[i].peGreen = lpbmi->bmiColors[i].rgbGreen;
			lpPal->palPalEntry[i].peBlue  = lpbmi->bmiColors[i].rgbBlue;
			lpPal->palPalEntry[i].peFlags = 0;
		}
		hPal = CreatePalette (lpPal);
		GlobalUnlock (hLogPal);
		GlobalFree (hLogPal);
   }
   return hPal;
}


static HBITMAP 
LoadResourceBitmap (HINSTANCE hInstance, 
					LPSTR lpString,
					HPALETTE FAR* lphPalette) 
{
	HRSRC  hRsrc;
	HGLOBAL hGlobal;
	HBITMAP hBitmapFinal = NULL;
	LPBITMAPINFOHEADER lpbi;
	HDC hdc;
    INT iNumColors;
 
	if (hRsrc = FindResource (hInstance, lpString, RT_BITMAP)) {
		hGlobal = LoadResource (hInstance, hRsrc);
		lpbi = (LPBITMAPINFOHEADER)LockResource (hGlobal);
 
		hdc = GetDC(NULL);
		*lphPalette =  CreateDIBPalette ((LPBITMAPINFO)lpbi, &iNumColors);
		if (*lphPalette) {
			SelectPalette (hdc,*lphPalette,FALSE);
			RealizePalette (hdc);
		}
 
		hBitmapFinal = CreateDIBitmap (hdc,
                   (LPBITMAPINFOHEADER)lpbi,
                   (LONG)CBM_INIT,
                   (LPSTR)lpbi + lpbi->biSize + iNumColors * sizeof(RGBQUAD),
                   (LPBITMAPINFO)lpbi,
                   DIB_RGB_COLORS );
 
		ReleaseDC (NULL,hdc);
		UnlockResource (hGlobal);
		FreeResource (hGlobal);
	}
	return (hBitmapFinal);
}


BOOL CALLBACK WaitProc(HWND hwndDlg, 
					   UINT uMsg, 
					   WPARAM wParam, 
					   LPARAM lParam)
{
	switch(uMsg)
	{
	case WM_INITDIALOG:
		{
			RECT rc;

			// center dialog on screen
			GetWindowRect(GetParent(hwndDlg), &rc);
			SetWindowPos(GetParent(hwndDlg), NULL,
				(GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left))/2,
				(GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top))/2,
				0, 0, SWP_NOSIZE | SWP_NOZORDER);

			break;
		}
	}

	return 0;
}


/*__Editor_settings____

	Local Variables:
	tab-width: 4
	End:
	vi: ts=4 sw=4
	vim: si
_____________________*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -