亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? setup.cpp.svn-base

?? wince c++ 下 開發的 rss 閱讀器源代碼
?? SVN-BASE
字號:
/**
 *  setup.cpp
 *
 *  Copyright (C) 2008  David Andrs <pda@jasnapaka.com>
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#include "StdAfx.h"
#include "setup.h"
#include <ce_setup.h>
#include "../share/defs.h"
#include "../share/reg.h"
#include <notify.h>
#include "../share/notif.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define VALUE_NOT_SET					-1

//HINSTANCE g_hAppInstance;

static int TodayPluginEnabled = VALUE_NOT_SET;
static BOOL PreviouslyInstalled = FALSE;

//
// Today plugin helpers
//
void EnableTodayPlugin(BOOL enable = TRUE) {
	{	CRegistry regToday(HKEY_LOCAL_MACHINE, REG_TODAYROOT);
		regToday.Write(szEnabled, enable ? 1 : 0);
		// destructor needs to be called
	}
	SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0xF2, 0);
}

//
// Install/Uninstall
//

codeINSTALL_INIT Install_Init(
    HWND        hwndParent,
    BOOL        fFirstCall,
    BOOL        fPreviouslyInstalled,
    LPCTSTR     pszInstallDir)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	PreviouslyInstalled = fPreviouslyInstalled;

	if (fPreviouslyInstalled) {
		// today plugin installation status
		CRegistry regToday(HKEY_LOCAL_MACHINE, REG_KEY_TODAY);
		TodayPluginEnabled = regToday.Read(szEnabled, VALUE_NOT_SET);

		// deactivate today plugin
		EnableTodayPlugin(FALSE);
	}
	else {
		// create the registry branch (to avoid unwanted removal of sub-branches on uninstall)
		DWORD dwDisposition;
		HKEY hApp;
		if (::RegCreateKeyEx(HKEY_CURRENT_USER, REG_KEY_COMPANY, 0, 0, 0, 0, NULL, &hApp, &dwDisposition) == ERROR_SUCCESS) {
			RegCloseKey(hApp);
		}
	}

    return codeINSTALL_INIT_CONTINUE;
}

codeINSTALL_EXIT Install_Exit(
    HWND    hwndParent,
    LPCTSTR pszInstallDir,
    WORD    cFailedDirs,
    WORD    cFailedFiles,
    WORD    cFailedRegKeys,
    WORD    cFailedRegVals,
    WORD    cFailedShortcuts)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	codeINSTALL_EXIT ret = codeINSTALL_EXIT_DONE;
	CString strCacheLocation;
//	CString strEnclosuresLocation;

	if (PreviouslyInstalled) {
/*		HKEY hApp;
		if (::RegOpenKeyEx(HKEY_CURRENT_USER, REG_KEY_APP, 0, 0, &hApp) == ERROR_SUCCESS) {
			// read the value from the registry
			strCacheLocation = RegReadString(hApp, szCacheLocation, _T(""));
			RegCloseKey(hApp);
		}
*/
	}
	else {
		CRegistry reg(HKEY_CURRENT_USER, REG_KEY_APP);
		reg.Write(szInstallDir, pszInstallDir);

		CRegistry regConf(HKEY_CURRENT_USER, REG_KEY_CONFIGURATION);
		strCacheLocation = regConf.Read(szCacheLocation, _T(""));

		if (strCacheLocation.IsEmpty()) {
			// create cache folder (try to reuse old value from the registry)
			strCacheLocation = CString(pszInstallDir) + _T("\\cache");
			CreateDirectory(strCacheLocation, NULL);
			regConf.Write(szCacheLocation, strCacheLocation);
		}

		// create cache structure
		CreateDirectory(strCacheLocation + _T("\\enclosures"), NULL);
		CreateDirectory(strCacheLocation + _T("\\favicons"), NULL);
		CreateDirectory(strCacheLocation + _T("\\feeds"), NULL);
		CreateDirectory(strCacheLocation + _T("\\html"), NULL);
	}

	//
	// Activate today plugin
	//
	if (TodayPluginEnabled == VALUE_NOT_SET) {
		CString sInstall;
		sInstall.LoadString(IDS_INSTALL_TITLE);
		CString sMsg;
		sMsg.LoadString(IDS_ACTIVATE_TODAY_PLUGIN);

		if (MessageBox(NULL, sMsg, sInstall, MB_YESNO | MB_SETFOREGROUND) == IDYES) {
			EnableTodayPlugin();
		}
	}
	else {
		// set the today plugin to the previous state
		EnableTodayPlugin(TodayPluginEnabled == 0 ? FALSE : TRUE);
	}

    return ret;
}

codeUNINSTALL_INIT Uninstall_Init(
    HWND        hwndParent,
    LPCTSTR     pszInstallDir)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	CString sTitle;
	sTitle.LoadString(IDS_INSTALL_TITLE);
	CString sText;
	sText.LoadString(IDS_KEEP_SETTINGS);
	if (MessageBox(NULL, sText, sTitle, MB_YESNO | MB_SETFOREGROUND) == IDNO) {
		// remove all registry keys (config, etc.)
		CRegistry::DeleteKey(HKEY_CURRENT_USER, REG_KEY_APP);
	}

	// remove cradling event
	SetupCradlingEvent(FALSE);

	// Unregister today plugin
	EnableTodayPlugin(FALSE);
	// remove today plugin from the registry
	CRegistry::DeleteKey(HKEY_LOCAL_MACHINE, REG_KEY_TODAY);

	return codeUNINSTALL_INIT_CONTINUE;
}

codeUNINSTALL_EXIT Uninstall_Exit(HWND hwndParent) {
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	return codeUNINSTALL_EXIT_DONE;
}


//
//	Note!
//
//		If this DLL is dynamically linked against the MFC
//		DLLs, any functions exported from this DLL which
//		call into MFC must have the AFX_MANAGE_STATE macro
//		added at the very beginning of the function.
//
//		For example:
//
//		extern "C" BOOL PASCAL EXPORT ExportedFunction()
//		{
//			AFX_MANAGE_STATE(AfxGetStaticModuleState());
//			// normal function body here
//		}
//
//		It is very important that this macro appear in each
//		function, prior to any calls into MFC.  This means that
//		it must appear as the first statement within the
//		function, even before any object variable declarations
//		as their constructors may generate calls into the MFC
//		DLL.
//
//		Please see MFC Technical Notes 33 and 58 for additional
//		details.
//

/////////////////////////////////////////////////////////////////////////////
// CSetupApp

BEGIN_MESSAGE_MAP(CSetupApp, CWinApp)
	//{{AFX_MSG_MAP(CSetupApp)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetupApp construction

CSetupApp::CSetupApp()
{
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CSetupApp object

CSetupApp theApp;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线观看一区二区| 亚洲精品免费电影| 亚洲色图在线看| 免费观看久久久4p| 一本大道av伊人久久综合| 日韩一级二级三级| 亚洲免费在线电影| 国产精品2024| 日韩一区二区中文字幕| 一区二区三区不卡视频在线观看| 国产麻豆精品久久一二三| 制服.丝袜.亚洲.中文.综合| 亚洲欧洲综合另类在线| 风间由美一区二区三区在线观看| 欧美电影免费观看高清完整版在| 亚洲图片欧美色图| 99久精品国产| 国产精品视频第一区| 国产伦精品一区二区三区免费| 9191成人精品久久| 午夜久久久影院| 91黄色免费观看| 亚洲欧洲中文日韩久久av乱码| 成人小视频在线| 久久亚洲影视婷婷| 国内精品伊人久久久久av影院| 6080亚洲精品一区二区| 午夜成人免费视频| 欧美久久一区二区| 日韩高清在线观看| 欧美一区二区性放荡片| 同产精品九九九| 欧美肥胖老妇做爰| 天天射综合影视| 51午夜精品国产| 日本亚洲免费观看| 精品粉嫩aⅴ一区二区三区四区| 麻豆国产精品777777在线| 欧美一级高清片| 韩国v欧美v日本v亚洲v| 久久久99精品免费观看不卡| 国产成人av电影| 亚洲欧洲精品一区二区三区| 色综合久久六月婷婷中文字幕| 中文无字幕一区二区三区| 色综合久久综合中文综合网| 亚洲视频一二三区| 欧美三区在线观看| 美女精品自拍一二三四| 国产欧美日韩卡一| 色综合久久综合| 日韩高清一区在线| 欧美激情在线看| 在线欧美小视频| 免费看精品久久片| 国产精品成人在线观看| 欧美私人免费视频| 国产成人在线色| 亚洲午夜激情av| 久久久.com| 精品视频资源站| 国产精品1024| 亚洲国产成人va在线观看天堂| 日韩欧美一级二级三级久久久 | 日韩你懂的在线播放| 国产一区久久久| 亚洲精品日韩一| 日韩精品一区二区三区在线观看 | 麻豆一区二区三| 欧美国产日产图区| 欧美日韩免费一区二区三区| 精品制服美女久久| 亚洲啪啪综合av一区二区三区| 日韩午夜电影av| 成人黄色av网站在线| 美国十次综合导航| 一区二区在线观看免费| 精品国产区一区| 欧美亚洲国产bt| 高清久久久久久| 麻豆国产91在线播放| 亚洲一级二级三级在线免费观看| 久久综合九色综合欧美亚洲| 欧美三级日韩三级| 成人免费毛片高清视频| 蜜臀av一区二区在线观看 | 久久精品一区二区三区不卡| 欧美性猛交xxxx黑人交| 成人aaaa免费全部观看| 麻豆精品国产传媒mv男同| 午夜精品一区二区三区三上悠亚| 欧美极品少妇xxxxⅹ高跟鞋| 精品欧美一区二区久久| 欧美日韩国产一级片| 91黄色在线观看| 91美女视频网站| 成人爱爱电影网址| 国产精品一区三区| 黄页网站大全一区二区| 日一区二区三区| 一区二区成人在线| 亚洲黄色小说网站| 亚洲激情自拍视频| 中文字幕在线观看一区二区| 国产性天天综合网| 国产亚洲综合在线| 久久丝袜美腿综合| 国产亚洲制服色| 国产免费成人在线视频| 国产丝袜欧美中文另类| 国产日韩精品一区二区浪潮av| 欧美成人艳星乳罩| 久久久久久久综合日本| 国产日韩欧美a| 国产欧美一区二区精品久导航| 国产亚洲一区二区三区| 国产日韩欧美a| 国产精品丝袜久久久久久app| 中文字幕国产一区| 国产精品二三区| 日韩一区中文字幕| 亚洲免费观看高清完整版在线观看 | 免费欧美高清视频| 麻豆精品在线观看| 国产主播一区二区| 成人美女在线视频| 日本韩国一区二区三区| 欧美精品少妇一区二区三区| 日韩一区二区精品| 国产日韩欧美不卡在线| 亚洲乱码国产乱码精品精小说 | 91精品国产综合久久香蕉麻豆| 91精品在线一区二区| 欧美www视频| 久久亚洲二区三区| 中文字幕一区二区三区不卡| 亚洲亚洲精品在线观看| 日韩成人伦理电影在线观看| 国内精品久久久久影院薰衣草| 国产不卡一区视频| 日本高清成人免费播放| 337p亚洲精品色噜噜噜| 久久久久久97三级| 亚洲在线视频网站| 久久av老司机精品网站导航| caoporen国产精品视频| 91精品国产综合久久精品图片| 亚洲精品在线观看视频| 亚洲免费视频中文字幕| 久久99最新地址| 色综合av在线| 精品成人在线观看| 亚洲伦理在线免费看| 精品一区二区日韩| 日本高清无吗v一区| 精品国产乱码久久| 成人欧美一区二区三区黑人麻豆| 视频一区二区三区入口| 波多野洁衣一区| 欧美大片一区二区三区| 亚洲六月丁香色婷婷综合久久| 久久精品久久99精品久久| 一本到不卡精品视频在线观看| 欧美va在线播放| 亚洲尤物视频在线| a级精品国产片在线观看| 欧美一区二区在线不卡| 一区二区激情小说| 成人av第一页| 久久蜜桃av一区二区天堂| 天天av天天翘天天综合网| 99视频在线观看一区三区| 欧美成人vr18sexvr| 亚洲一区二区欧美激情| 成人久久视频在线观看| 91精品国产综合久久久久久久久久| 亚洲天堂中文字幕| 国产99久久久国产精品潘金| 日韩精品自拍偷拍| 日精品一区二区三区| 欧美色图激情小说| 亚洲欧美日韩久久精品| a美女胸又www黄视频久久| 国产欧美一区二区精品婷婷| 国产一区二区三区久久悠悠色av | 久久精品亚洲麻豆av一区二区 | 青青草一区二区三区| 欧美日韩视频在线观看一区二区三区| 中文字幕av资源一区| 国内精品久久久久影院一蜜桃| 欧美白人最猛性xxxxx69交| 奇米亚洲午夜久久精品| 日韩一区二区高清| 免费成人在线观看| 欧美一二三在线| 蜜臀av性久久久久av蜜臀妖精| 欧美日本视频在线| 性欧美大战久久久久久久久| 欧美日韩激情在线| 日韩激情一二三区|